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

14

Допустим, есть программное обеспечение, через которое я не хочу устанавливать 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эквиваленты.)

DevSolar
источник
TeX Live 2011 был добавлен в Debian Sid недавно, поэтому он должен распространяться рано или поздно и на Mint (но Ubuntu 12.04 «пропустил» его, так что не раньше конца октября с Ubuntu 12.10). Если вы действительно любите приключения, вы можете получить пакеты из Debian Sid, но, поскольку в этом случае это касается множества пакетов, это, вероятно, не очень хорошее решение. В файле launchpad.net/~texlive-backports/+archive/ppa есть PPA (см. Этот отчет об ошибках в Ubuntu ), который вы, возможно, также можете использовать в Mint.
Даниэль Андерссон
Без комментариев downvote три года спустя ... хотите объяснить?
DevSolar
@DevSolar: Похоже, кто-то серийно проголосовал за вопрос, и оба ответили три года спустя, не объяснив, почему. Лучше просто пожать плечами и двигаться дальше, я думаю :-).
Даниэль Андерссон

Ответы:

13

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

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


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

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


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

Даниэль Андерссон
источник
Я не знаю, как это произошло, но Linux Mint делает texlive «жесткой» зависимостью ... попробует equivsпакет.
DevSolar
equivsработал отлично. Я создал версию 9999 texlive-base-bin, перезаписав исходный «фиктивный» пакет с тем же именем (предоставленный texlive-binaries), и установил vim-latexsuiteбез проблем.
DevSolar
1

Вы можете использовать --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
1
хм, я, кажется, допустил ошибку - это для dpkg, а не apt-get - отредактировал мой ответ, чтобы отразить это
Journeyman Geek
Это то, что меня бесконечно смущает производными от Debian: множество интерфейсов менеджера пакетов. Я полагаю, что при их смешивании не происходит путаницы? Или мне придется придерживаться одного из них?
DevSolar
все основано на dpkg, по сути, apt и aptitude являются внешними интерфейсами для этого, и есть внешние интерфейсы для apt и aptitude. dpkg обычно используется, когда вы хотите установить пакеты из файла .deb. Я склонен придерживаться apt-get и dpkg по большей части сам. Смешивание «стандартных» менеджеров пакетов со вкусом Debian обычно должно быть достаточно безопасным
Journeyman Geek
Это делает ваш ответ моим предпочтительным решением для моей настоящей проблемы, так как от vim-latexsuite ничего не зависит. Однако, это решение не помечает «texlive» как присутствующее , оно просто удерживает vim-latexsuite от запроса об этом. Таким образом, ответ Даниэля лучше соответствует названию вопроса. Галочка идет к нему, слава идти к вам. ;-)
DevSolar
1

Следующее удалит зависимость из файла .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
A.Badger
источник