Игнорировать все зависимости для конкретного пакета с помощью apt-get
Это очень конкретный вопрос, который Google не помог ответить.
Я запускаю Ubuntu 13.04 с apt 0.9.7.7ubuntu4 for amd64 compiled on Oct 3 2013 15:25:56
.
Я хочу установить Erlang из пакета .deb, но я не хочу тянуть все его зависимости. Сам пакет указывает, что он зависит от Java и wx-библиотек, но на самом деле они не нужны, если вы не хотите взаимодействовать с Java или wxWidgets.
- Какой раздел можно удалить, чтобы установить Ubuntu?
- Как контролировать степень сжатия mogrify?
- Рабочий стол Karmic Koala показывает только обои, ничего больше
- Печать через удаленный сервер CUPS, но просто покажите подмножество принтеров
- Конвертировать DivX (и другие форматы) в DVD-видео под Linux
Я могу установить Erlang вот так
sudo dpkg -i --force-depends erlang.deb
Тем не менее, установка чего-либо еще с apt-get
впоследствии терпит неудачу из-за неудовлетворенных зависимостей. Поэтому, если я хочу установить git после Erlang, я получаю следующее
$ sudo apt-get install -y git Reading package lists... Building dependency tree... You might want to run 'apt-get -f install' to correct these: The following packages have unmet dependencies: esl-erlang : Depends: default-jre-headless but it is not going to be installed or java2-runtime-headless or java1-runtime-headless or java2-runtime or java1-runtime Depends: libwxbase2.8-0 but it is not going to be installed Depends: libwxgtk2.8-0 but it is not going to be installed Recommends: erlang-mode but it is not going to be installed git : Depends: libcurl3-gnutls (>= 7.16.2-1) but it is not going to be installed Depends: perl-modules but it is not going to be installed Depends: liberror-perl but it is not going to be installed Depends: git-man (> 1:1.7.9.5) but it is not going to be installed Depends: git-man (< 1:1.7.9.5-.) but it is not going to be installed Recommends: patch Recommends: rsync Recommends: ssh-client E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
Есть ли способ сделать esl-erlang
закрытым без запуска apt-get install -f
?
Я хочу что-то вроде этого:
sudo apt-get install --ignore-deps-for-package=esl-erlang git
Или вот так:
sudo apt-cache shut-package-up esl-erlang
или это:
sudo apt-get download git sudo dpkg -i --with-deps git.deb
Я нашел аналогичный вопрос: https://serverfault.com/questions/250224/how-do-i-get-apt-get-to-ignore-some-dependencies . Несколько ответов предоставляют удобные ручные шаги для изменения зависимостей определенных пакетов.
Я все еще ищу надежный автоматический метод.
- Принимайте свой собственный веб-сайт и DNS-сервер
- Как я могу выйти из `sudo su`?
- Где Okular хранит аннотации PDF?
- Почему сервер передач-job-server не принимает соединения при работе в качестве службы?
- Можно ли установить Ubuntu Linux на FAT32 или NTFS?
- Пакетное переименование файлов в каталоге с помощью sed
- Может ли 64-разрядное программное обеспечение работать на 32-битной ОС?
- Как уменьшить размер VM?
Я понимаю точку bjanssen, но для диспетчера пакетов кажется смешным, что -force --force-depends
от установки одного пакета, но не позволяет принудительно зависать-навсегда-и-stop-warning-me-about-this-dependency.
У меня была аналогичная проблема с пакетом, который зависел от версии libcairo, немного превышающей версию, доступную в настоящее время в Debian. Для моих целей он все еще отлично работает. Я рад продолжать использовать его, пока обновление libcairo не появится в apt. Я не хочу компилировать исходный код или создавать собственный пакет.
Решение, которое я нашел:
- Edit
/var/lib/dpkg/status
, - Найти пакет со сломанными зависимостями
-
Depends:
строкуDepends:
чтобы остановить жалобу пакета.
Я предполагаю, что это будет перезаписано при следующем обновлении пакета, но это именно то, что я хочу.
То, что вы пытаетесь сделать, противоречит назначению менеджера пакетов, который пытается сохранить разумную среду, если вы используете неправильный инструмент для работы. Не пытайтесь сломать apt-get.
Правильный способ решить вашу проблему – создать собственный пакет с зависимостями, которые вам подходят. Существует официальный способ (довольно активно: http://www.debian.org/doc/manuals/maint-guide/index.en.html ) и быстрый и грязный способ использования apt-build
или для пакетов, не входящих в Источник распространения, checkinstall
. Все пакеты продуктов apt-get будут успешно установлены.
В заключение вы можете подвергнуть сомнению мудрость сопровождающего esl-erlang, чтобы включить определенные зависимости, но вы не можете винить менеджера пакетов за предполагаемое поведение. Если вы считаете, что эти зависимости неверны, вы должны указать ошибку в пакете.
Изменить /etc/apt/sources.list
Добавь это:
deb http://ftp.ca.debian.org/debian/ jessie main contrib non-free deb-src http://ftp.ca.debian.org/debian/ jessie main contrib non-free deb http://security.debian.org/ jessie/updates main contrib non-free deb-src http://security.debian.org/ jessie/updates main contrib non-free deb http://ftp.ca.debian.org/debian/ jessie-updates main contrib non-free deb-src http://ftp.ca.debian.org/debian/ jessie-updates main contrib non-free deb http://ftp.ca.debian.org/debian/ jessie-backports main contrib non-free
Система обновления:
apt-get update
apt-get upgrade
apt-get update