Рейтинг:0

Debian: как установить пакет без конкретной зависимости (git без Perl)

флаг cn

Я пытаюсь установить пакет apt без одной из его зависимостей (в частности, git без Perl, чтобы уменьшить размер образа Docker на> 50 МБ).

Я могу думать о двух вариантах:

  1. установка пакета без этой конкретной зависимости
  2. установка пакета со всеми зависимостями и удаление зависимости после

и я исследовал их обоих, и ни один из них не работал. Итак, мой вопрос: есть ли чистый способ сделать это?

Ниже то, что я пробовал до сих пор.

1. Установка пакета без этой конкретной зависимости

Наиболее предложения рекомендовать

метко скачать git
dpkg --ignore-depends=perl -i git*.deb

К сожалению, это не устанавливает другие зависимости, поэтому git клон терпит неудачу из-за отсутствия libcurl.

Итак, чтобы исправить это, некоторые другие предложения рекомендуем использовать

apt-получить -f установить

впоследствии, но эта команда пытается установить Perl, чего я пытаюсь избежать.

Итак, я говорю не трогать Perl с помощью:

apt-mark удерживать perl

но потом apt-получить -f установить пытается удалить git.

Итак, я говорю оставить git в покое:

apt-mark удерживать git

но потом apt-получить -f установить сдается, так как не может установить Perl и не может удалить git. Конец истории.

2. установка пакета со всеми зависимостями и удаление зависимости после

Я установил git с Perl:

меткая установка -y git

затем удалил Perl с помощью

dpkg -P --force-зависит от Perl

но это не удаляет другие зависимости, которые были привнесены Perl, например. perl-модули. Так что попытка безуспешна.

Nikita Kipriyanov avatar
флаг za
Это неправильный путь, или, лучше сказать, гарантированный способ выстрелить себе в ногу. Если вы хотите опустить некоторые зависимости, вы должны правильно пересобрать зависимые пакеты без этой зависимости. Это не так сложно.
Lukasz Guminski avatar
флаг cn
Дело в том, что я полностью контролирую систему (образ Docker), и точно знаю, что perl не понадобится, так как git используется только для клонирования репозиториев. С другой стороны, пересборка git значительно увеличила бы время сборки моего образа Docker.
флаг in
Если размер является проблемой, вы можете попробовать другое изображение, например Alpine. Он значительно меньше, и git не имеет там зависимости от perl.
Lukasz Guminski avatar
флаг cn
Проблема в том, что Alpine использует [musl](https://musl.libc.org/) вместо glibc, и я не хочу рисковать [проблемами нестабильности](https://pythonspeed.com/articles/alpine- докер-питон/). Однако хорошо знать, что здесь нет никакой зависимости от Perl.
Nikita Kipriyanov avatar
флаг za
Попробуйте переупаковать файл git deb без этой зависимости. Это тоже не сложно. Поймите, вы пытаетесь использовать менеджер пакетов для его функций, таких как разрешение зависимостей (путем установки git и необходимых вам зависимостей), и в то же время вы хотите намеренно каким-то образом неправильно использовать его возможности разрешения зависимостей (чтобы пропустить некоторые зависимости). Это не сработает. Диспетчер пакетов Debian не был создан с учетом этого. (Это сделал Portage, менеджер пакетов Gentoo, и он использует для этого так называемые «USE-флаги». Но это совсем другая история.)
Lukasz Guminski avatar
флаг cn
Это интересно. По сути, вы говорите, что основной причиной является упаковка самого git, указывая на то, что потребуется что-то вроде «git-minimal».Я изучу переупаковку, чтобы увидеть, возможен ли этот вариант.
djdomi avatar
флаг za
или вы создаете его самостоятельно, без поддержки perl, если это возможно, это действительно несложно и хорошо задокументировано, как это сделать [способом Debian] (https://wiki.debian.org/HowToPackageForDebian)
Рейтинг:0

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.