Як сказати доречно, що залежності вирішуються вручну?


13

Скажімо, є програмне забезпечення, яке я не хочу встановлювати 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еквіваленти.)


TeX Live 2011 був доданий до Debian Sid нещодавно, тому він рано чи пізно повинен розповсюджуватися і на Mint (але Ubuntu 12.04 "пропустив" його, так що не раніше кінця жовтня з Ubuntu 12.10). Якщо ви справді авантюрні, ви могли б взяти пакунки від Debian Sid, але оскільки в цьому випадку це стосується багатьох пакетів, це, мабуть, не вдале рішення. На налаштуваннях startpad.net/~texlive-backports/+archive/ppa ( PPA) (див. Цей звіт про помилки в Ubuntu ) існує PPA, який, можливо, ви також можете використовувати в Mint.
Даніель Андерссон


Три роки потому не коментуйте коментарі ... хочете пояснити?
DevSolar

@DevSolar: Здається, що хтось із серійним запитанням відповів і обидва відповіді три роки після факту, не уточнюючи чому. Найкраще просто знизати плечима і рухатися далі, я думаю :-).
Даніель Андерссон

Відповіді:


12

Ви повинні використовувати equivsпакет для створення метапакетів, які забезпечують ці залежності, а потім використовувати їх dpkgдля встановлення.

Встановлення equivsта читання його документації повинно бути достатньо, але цей посібник для Ubuntu є досить обширним і має стосуватися і інших систем APT.


Крім того, якщо ви вважаєте, що пакет повинен бути в змозі встановити без вказаної залежності, вам слід подати помилку на пакет, пояснюючи випадок, коли залежність не потрібна.

У цьому випадку , texlive-base-binздається, лише "Рекомендовано", а не "Залежність" в базовому дистрибутиві Debian хоча б (можливо, частково, оскільки texliveце такий величезний пакет), але тому, що звичайно встановлювати текс Live Live на Debian з 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, а не вдало - відредагував мою відповідь, щоб відобразити це
Journeyman Geek

Це те, що мене не бентежить з деривативами Debian: безліч інтерфейсів менеджера пакунків. Я припускаю, що при їх змішуванні не відбувається жодних відключень? Або я повинен був би дотримуватися одного з них?
DevSolar

все ґрунтується на dpkg, по суті, підхожість та здатність - це передні кінці до цього, а там передні кінці для підхожі та придатності. 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.