Как сказать apt, что зависимости разрешаются вручную?

6250
DevSolar

Допустим, есть программное обеспечение, через которое я не хочу устанавливать apt, но вручную. (TeXLive, потому что я хочу использовать выпуск 2011 года и aptимеет только версию 2009 года.)

Допустим, есть еще одна программа, через которую я бы хотел установить apt, которая, однако, зависит от первой программы. (Vim LaTeXSuite, так как неудобно устанавливать вручную для общесистемного использования.)

По умолчанию aptне «видит» первое программное обеспечение и приступает к установке множества ненужных и нежелательных программ (например, TeXLive 2009) только для удовлетворения метаданных зависимостей.

Как я могу либо:

  • Скажите, aptчто данный пакет (например texlive) будет установлен для всех практических целей, и что она не должно быть установлена в зависимости от какого - то другого пакета?

  • Скажите aptустановить данный пакет (например vim-latexsuite), не беспокоясь о его зависимостях?

Я aptперебрал различные связанные страницы и вышел пустым, а также нашел этот вопрос на этом сайте, но чувствую, что должен быть менее хакерский способ сделать это, не так ли?

(Из моих времен Gentoo я помню emerge --injectи /etc/portage/package.provides, и в основном ищу aptэквиваленты.)

14
TeX Live 2011 был добавлен в Debian Sid недавно, поэтому он должен распространяться рано или поздно и на Mint (но Ubuntu 12.04 «пропустил» его, поэтому не ранее конца октября с Ubuntu 12.10). Если вы действительно любите приключения, вы можете взять пакеты из Debian Sid, но поскольку в этом случае это касается * большого количества пакетов, это, вероятно, не очень хорошее решение. Существует PPA на https://launchpad.net/~texlive-backports/+archive/ppa (см. [Этот отчет об ошибках в Ubuntu] (https://bugs.launchpad.net/ubuntu/+source/texlive). -base / + bug / 712521)), который вы, возможно, можете использовать и в Mint. Daniel Andersson 12 лет назад 0
У меня была похожая проблема, описанная здесь: [Игнорирование определенных неудовлетворенных зависимостей с aptitude? - Спросите Ubuntu] (http://askubuntu.com/questions/408696/ignoring-specific-unmet-dependencies-with-aptitude); здесь также есть хорошее объяснение: [Как я могу установить пакет без установки его зависимостей? - Спросите Ubuntu] (http://askubuntu.com/questions/55244/how-can-i-install-a-package-without-install-its-dependencies/55248#55248) sdaau 10 лет назад 0
Без комментариев внизу три года спустя ... хочешь объяснить? DevSolar 9 лет назад 0
@DevSolar: Похоже, кто-то серийно проголосовал за вопрос, и оба ответили три года спустя, не объясняя, почему. Лучше просто пожать плечами и двигаться дальше, я думаю :-). Daniel Andersson 9 лет назад 0

3 ответа на вопрос

12
Daniel Andersson

Вам следует использовать equivsпакет для генерации метапакетов, которые предоставляют эти зависимости, а затем использовать dpkgдля установки этих пакетов.

Установка equivsи чтение его документации должно быть достаточно, но это руководство для Ubuntu довольно обширен и должны применяться к другим APT систем.


Также, если вы чувствуете, что пакет должен быть в состоянии установить без указанной зависимости, вы должны сообщить об ошибке в пакет, объяснив случай, когда зависимость не нужна.

В этом случае, texlive-base-binкажется, только «Рекомендуется», а не «Зависимость» в базовом дистрибутиве Debian, по крайней мере (вероятно, отчасти потому, что texliveэто такой огромный пакет), а потому, что распространенную установку исходной версии TeX Live на Debian, так как дистрибутивная версия часто сильно отстает (по той причине, что пакет является таким чудовищным, что его часто невозможно упаковать без существенной работы, которая в основном выполняется одним или несколькими лицами, которые утверждают, что они живут рядом с Debian), equivsтрюк часто используется с TeX Live (вау, это предложение вышло из-под контроля :-)).


Дополнение : Для получения более подробных инструкций для тех, кто хочет установить TeXLive вне системы пакета, эти инструкции для TeX.SX являются более обширными и, скорее всего, будут продолжать обновляться. Они также включают более четкие инструкции относительно equivsшага.

Я не знаю, как это получилось, но Linux Mint делает texlive «жесткой» зависимостью ... попробует пакет `эквивалентов". DevSolar 12 лет назад 0
«Эквивалс» работал отлично. Я создал версию 9999 `texlive-base-bin`, переопределив исходный пакет" dummy "с тем же именем (предоставляемый` texlive-binaries`), и установил `vim-latexsuite` без каких-либо проблем. DevSolar 12 лет назад 0
1
Journeyman Geek

Вы можете использовать --nodepsфлаг в dpkg, который должен установить пакет без каких-либо зависимостей.

 --ignore-depends=package,... Ignore dependency-checking for specified packages (actu- ally, checking is performed, but only warnings about con- flicts are given, nothing else) 

Есть очень похожий вопрос о Serverfault, на который стоит обратить внимание.

Э-э ... нет такого? (По крайней мере, не на коробке Linux Mint 12, которую я имею здесь.) DevSolar 12 лет назад 0
хм, я, кажется, сделал ошибку - это для dpkg, а не apt-get - отредактировал мой ответ, чтобы отразить это Journeyman Geek 12 лет назад 1
Это то, что меня бесконечно смущает производными от Debian: множество интерфейсов менеджера пакетов. Я полагаю, что при их смешивании не происходит путаницы? Или мне придется придерживаться одного из них? DevSolar 12 лет назад 0
все основано на dpkg, по сути, apt и aptitude являются внешними интерфейсами для этого, и есть внешние интерфейсы для apt и aptitude. dpkg обычно используется, когда вы хотите установить пакеты из файла .deb. Я склонен придерживаться apt-get и dpkg по большей части сам. Смешивание «стандартных» менеджеров пакетов со вкусом Debian обычно должно быть достаточно безопасным Journeyman Geek 12 лет назад 0
Это делает ваш ответ моим предпочтительным решением для моей * актуальной * проблемы, так как от vim-latexsuite ничего не зависит. Тем не менее, это решение не помечает «texlive» как «присутствующее», оно просто не дает vim-latexsuite запрашивать его. Таким образом, ответ Даниэля лучше соответствует названию вопроса. Галочка идет к нему, слава идти к вам. ;-) DevSolar 12 лет назад 0
0
A.Badger

Следующее удалит зависимость из файла .deb, в этом случае удалит зависимость libperl5.20 от freeradius:

dpkg-deb -x freeradius_2.2.5+dfsg-0.2+deb8u1_amd64.deb freeradius dpkg-deb -e freeradius_2.2.5+dfsg-0.2+deb8u1_amd64.deb freeradius/DEBIAN sed -i -e 's/, libperl5.20 (>= 5.20.2)//g' freeradius/DEBIAN/control dpkg-deb -b freeradius freeradius_2.2.5+dfsg-0.2+deb8u1_amd64.deb 

Это позволяет вам установить пакет, не зная, что зависимость существует.

Если вы устанавливаете вручную определенные версии пакетов, вы можете также отказаться apt-get upgradeот обновления пакета в будущем:

apt-mark hold freeradius 

Похожие вопросы