Как мне заставить apt-get игнорировать некоторые зависимости? Например, я хотел установить mailx, чтобы использовать его для отправки электронной почты из скриптов cron / инструментов генерации отчетов. Тем не менее, установка mailx также устанавливает exim4 и целую кучу зависимостей (у меня уже установлен Postfix), в котором я на самом деле не нуждаюсь и который, я думаю, mailx также может обойтись.
Как я игнорирую некоторые зависимости, но все еще использую apt-get, так как это хороший инструмент?
APT::Install-Recommends "false";
в свойapt.conf
.Ответы:
Простое и удобное решение: просто укажите ненужные пакеты с дополнительными
-
после каждого из них.Пример без
-
переключателя:Пример использования переключателя, чтобы избежать установки
exim4-base
. Обратите внимание-
на в конце:Как видите,
apt-get
он больше не пытается установитьexim4-base
пакет и не пытается установить его различные зависимости (иexim4-config
т. Д.).И если вы ошиблись и в
exim4-base
конце концов нуждались в этой зависимости, вы можете сделатьapt-get install
это позже!источник
gnupg2
без того,pinentry-gtk2
чтобы избежать X deps)Depends: xxx but it is not going to be installed
. Вы можете пропустить все необязательные пакеты сapt-get install --no-install-recommends PACKAGE
Вы можете изменить зависимости пакета deb следующим образом:
ar x golden-linux.deb
(создаст три файла: debian-binary control.tar.gz data.tar.gz)tar xzf control.tar.gz
(создаст: postinst postrm preinst prerm md5sums control)control
(используйте текстовый редактор)tar --ignore-failed-read -cvzf control.tar.gz {post,pre}{inst,rm} md5sums control
ar rcs newpackage.deb debian-binary control.tar.gz data.tar.gz
(порядок важен! См. [Примечание])[Примечание]: dpkg не сможет быстро прочитать метаданные пакета, если ему придется искать, где заканчивается раздел данных!
источник
libmng1.so.1
даже если оно отлично работало с символической ссылкой, установленной наlibmng1.so.2
.apt-get
просто не мог насадить и постоянно раздражать меня по поводу неудовлетворенных зависимостей (даже при установке чего-то совершенно не связанного!). Какая куча мусорной концепции.gnome-settings-daemon
хотел,gnome-settings-daemon-schemas=3.8.6.1-0ubuntu11
но у меня уже естьgnome-settings-daemon-schemas=3.8.6.1-0ubuntu11.2
(<- обратите внимание на ".2" на конце). Эта процедура позволила мне отредактировать пакет и заставить его использовать более новую версию 11.2. БЛАГОДАРЮ ВАС!FILES=$(tar zxvf control.tar.gz)
чтобы сохранить список файлов в переменной. 4.tar zcf control.tar.gz $FILES
- создать архив за один шаг без каналов или перенаправлений, используя оригинальный список файлов (после модификации).--ignore-failed-read
так, чтобыtar
игнорировать отсутствующие файлы из остальной части командной строки. (Например,prerm
,postrm
отсутствуют многие пакеты.) Кроме того , тарболах может быть ,.xz
а не.gz
в более новых версиях формата архива Debian (напримерdata.tar.xz
).После того, как вы установите пакет с
--ignore-depends
опцией, перейдите и отредактируйте/var/lib/dpkg/status
файл и удалите все зависимости, которые, по вашему мнению, не нужны. Просто будь очень осторожен. В порядке деп. будет необходимо, это более чем вероятно BE требуетсяисточник
/var/lib/dpkg/status
может потребоваться завершить установкуsudo apt-get -f install
(указывать пакет не нужно).Вы можете попробовать
--nodeps
флаг сapt-get
.Или загрузите пакет и установите его, используя
dpkg
опцию--ignore-depends
.Например, если вы хотите установить пакет
foo
без зависимостиbar
:источник
--no-install-recommends
работал на меня.Поскольку вы установили postfix из исходного кода, вам необходимо установить «фиктивный» пакет, который будет удовлетворять зависимости mailx transport-agent от mailx (или bsd-mailx). Пакет «эквивалент» в Debian существует для создания такого фиктивного пакета, который вы можете установить, чтобы сообщить dpkg «эта зависимость удовлетворена»
Причина, по которой указание dpkg просто игнорировать зависимости не является хорошим решением, заключается в том, что вы просто указываете dpkg / apt игнорировать его для одной транзакции, вы не можете сказать, что он игнорирует зависимости навсегда. Каждый раз, когда вы используете apt, он проверяет зависимости всех пакетов
источник
equivs-control <name>
, отредактировать созданный файл, чтобы обеспечить правильную зависимость и иметь хорошее имя, затем запуститьequivs-build <name>
и, наконец,dpkg -i
получившийся файл .deb.Я искал эту опцию на сервере Ubuntu 12.04 под управлением Xen. В своих доменах я использую ядро -virtual и постоянно пытаюсь устанавливать grub при каждом обновлении пакета ядра. Однако Grub не нужен внутри DOMU при использовании p [yv] grub.
Я также искал опцию -nodeps для apt-get, но она не работала, поэтому в конечном итоге удалял / удалял grub * после каждого обновления ядра.
В конце концов, действительно полезно чтение man-страницы - оказывается, похожая опция apt-get на 12.04, похоже, --no-install-Recommended, которая на самом деле работает в этом случае, так как grub указан как 'рекомендуемый' в информация о пакете (наверное, это не «реальная» зависимость?).
Я добавляю это здесь, потому что в моем случае это решило подобную проблему, а подсказка для '--no-install-Recommended' еще не упоминалась.
источник
Вы можете скачать пакет с помощью apt-get, а затем установить его с помощью dpkg, вручную перечислив зависимость, которую вы хотели бы игнорировать.
Например, если я хочу загрузить mypackage, но это зависит от libperl5.14, и я не хочу устанавливать libperl5.14, так как у меня другая версия, я могу игнорировать эту зависимость следующим образом:
источник
Альтернативный способ ручной настройки зависимостей:
источник
В моей системе Debian bsd-mailx фактически зависит от
default-mta | mail-transport-agent
(вы можете проверить, от чего зависит пакет,apt-cache show <pkg>
для чего-либо в архиве илиdpkg -s <pkg>
для установленных пакетов.Возможно, ваш постфиксный пакет не имеет,
Provides: mail-transport-agent
поэтому apt не понимает, что у вас установлен MTA. Для этого стоит подать ошибку, если это официальный пакет.источник
Для этого вы можете просто установить гвоздь, который, я думаю, не имеет этих зависимостей?
источник
Ну, не надо.
Использование работы других людей очень важно на пути к любому успеху. Когда вы создаете какое-то программное обеспечение из исходного кода (tarball), вы упускаете возможность использовать работу менеджера пакетов дистрибутива.
Вы не будете получать «бесплатные» обновления. В большинстве случаев никто не обновляет пакеты, которые они установили из исходного кода. Поскольку им нужно отслеживать программное обеспечение на наличие новых версий, перестраивайте его и все зависимые программы (постарайтесь запомнить их).
У вас будут проблемы с другими пакетами из репозитория вашего дистрибутива. Это как раз тот случай, который указан в вопросе: в Ubuntu есть отличный менеджер пакетов и несколько очень приятных людей, которые поддерживают пакеты. И они решили, что для работы программы mailx нужен MTA. Так что, если вы установили postfix из исходников, Ubuntu не попросит вас установить exim.
Если по какой-либо причине обслуживание сервера переходит к другому человеку (например, ваш проект становится очень успешным, и вы решаете нанять другого парня для управления серверами, пока вы заняты другими делами), он, естественно, будет ожидать, что он запустит
dpkg --get-selections
все установленные пакеты.Старайтесь максимально использовать программное обеспечение для управления пакетами дистрибутива. Научитесь создавать свои собственные пакеты, если вы не можете найти один готовый пакет, и вы станете лучшим профессионалом.
источник