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

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

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

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

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

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

Большинство предложений рекомендуют

apt download git
dpkg --ignore-depends=perl -i git*.deb

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

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

apt-get -f install

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

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

apt-mark hold perl

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

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

apt-mark hold git

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

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

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

apt install -y git

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

dpkg -P --force-depends perl

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

answer