Скажіть здатність ігнорувати зламаний пакет


9

Я встановив Amsynth від Lucid у Карміці за допомогою:

dpkg --force-depends-version -i amsynth_1.2.2-1_i386.deb

Причиною встановлення версії Lucid є те, що версії Karmic 3 роки і аварійне завершення роботи моєї машини. Пакет Lucid Amsynth залежить від нових версій libatk1 та libjack0, ніж у Карміка, але я думав, що ризикую, і, виявляється, Amsynth працює чудово.

Однак здатність намагається видалити Amsynth щоразу, коли я роблю оновлення. Я думаю, що мені вдалося зупинити це, але зараз здатність перервати. Як я можу сказати про здатність ігнорувати зламаний пакет і продовжувати.


На даний момент я просто його видалив. Я просто переустановлюю кожен раз, коли мені це потрібно знову, це не займе занадто довго, доки не зникне помилок, щоб спробувати скомпілювати його ще раз.

Якщо вам потрібно щось із новішого випуску, і йому потрібні новіші бібліотеки, зазвичай ви можете просто перетягнути їх або завантажити вихідний пакет і відновити його у вашій системі. Однак я натрапив на це, намагаючись використати сторонній пакет, і тоді хаки потрібні.
Ян Худець,

Відповіді:


7

Якщо ви встановили програму через deb-файл та dpkg, ви також можете змінити залежності встановленого файлу .deb вручну. Мене одного разу привели до цієї крайньої міри ...

ar x foo.deb
vim control.tar.xz  # see below
ar r foo.deb control.tar.xz
dpkg -i foo.deb

і dpkg вже не знає про залежності foo. У vim вам потрібно вибрати ./control (я використовую vim для читання упакованих файлів - розпакуйте та скористайтеся іншим редактором та перепакуйте, якщо вам подобається) та видаліть із рядка небажані залежності

Depends: foo bar

1
Вам краще використовувати, dpkg-debа не використовувати ar. ar- це деталь реалізації dpkg, яка може змінитися в майбутньому.
jmtd

Дякую, це рішення спрацювало для мене, але коли я роблю оновлення apt-get, я отримую повідомлення "Зберігаються такі пакети: numptyphysics: i386" (apt-get dist-upgrade не каже нічого). Це повідомлення нормальне і чи не можемо ми його позбутися?
baptx

7

У Ubuntuforums є зламане рішення . ~ рішення краху краще, але більше роботи.

Я не міг нічого знайти в Google про це, окрім того, щоб скласти власний "фіктивний пакет" (неможливо без видалення зламаного пакета), якщо вам не пощастить, щоб вже мати інструменти), але пошук мого власного жорсткого диска дав мені відповідь врешті-решт!

Для всіх, хто хотів би знати, ось як "розірвати" пакет у синаптичному / придатному / apt-get, не видаляючи його.

Перш за все, занотуйте встановлений вами пакет, і пакет (и), які залежать від цього, нададуть йому статус зламаного. Скажіть, я змусив встановити яблука, що залежить від застарілого пакета, який не знаходиться у сховищі:

У терміналі типу Код:

sudo gedit /var/lib/dpkg/status

шукайте у файлі яблука, поки не знайдете щось на зразок:

Код:

Package: apples
Status: install ok installed
Priority: optional
Section: libs
Installed-Size: 316
Maintainer:
Architecture: i386
Source: applesauce
Version: 1.0.10-1
Depends: packageA, packageB, obsolete
Description: Apples on your desktop!

Видаліть застаріле з рядка "Залежить": збережіть файл, і ви закінчите. Сподіваюся, це допоможе деяким людям вийти.


ритм. хороша знахідка, але я не прихильник брехати менеджеру пакунків (що по суті те, що робить цей хак). краще взагалі не використовувати APT, ніж бігати, порушуючи його мимоволі. ось чому складати власні пакунки - це гарна річ - без зламаних залежностей і неправди вашому менеджеру пакунків.
хитаючий кіхот

У мене немає проблем з брехнім до менеджера пакунків, тим більше, що через кілька місяців я буду перевстановлювати ОС, але я не зміг знайти файл, на який посилається в потоці.

Дивно. Це повинно бути там. Спробуйте зробити "cd / var / lib / dpkg", а потім "sudo nano status".
Iain

1
Посилання більше не працює. Яка точна причина, чому відповіді, що містять лише посилання, тут накидаються. Якщо ви тут пояснили, це була б правильна відповідь.
Ян Худець,

Не знаю, чи це постійне чи ні, але, напевно, це здається пристойним виправленням для встановлення пакетів, які мають жорсткі залежності від більше недоступних версій Java.
krispy

2

У розділі Налаштування aptitude (Ctrl-T, щоб потрапити в меню; в розділі Параметри) зніміть прапорець у розділі "Обробка залежності", де написано "Автоматично виправити зламані пакети перед встановленням або видаленням" . Це повинно змусити зупинити спроби виправляти пакунок щоразу, коли ви змінюєте інші пакети.

Як більш постійне виправлення, слід захопити вихідні пакети встановленого пакету Lucid Amsynth , а також вихідні пакети для libatk1 та libjack0 та створити власний оновлений пакет. Залежно від того, що ще використовує ці бібліотеки, вам може знадобитися оновити й інші пакунки, але, ймовірно, ви можете піти лише з тими. (Це, по суті , Бекпорт цих пакетів від Lucid карми - ви повинні перевірити Карми-Backports сховище або ППД , щоб побачити , якщо хто -то вже зробили це , якщо ваша новий пакет роботи, розглянути питання про направлення їх кармічного-Backports для іншого використання .. )


Дякую, я спробував вашу першу пропозицію, але, схоже, це не змінило значення. Оновлення просто перервало б. Я також спробував скласти його, перш ніж спробувати встановити пакет Lucid, але не пощастило з ним. Я можу спробувати знову в майбутньому.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.