"Але на нього посилається інший пакет". - Знаходження цього пакету


24

Незвично, що користувач Ubuntu (або інший дистрибутив із керуванням пакетом apt) може зіткнутися з помилкою:

user@box ~ $ sudo apt-get install x
[sudo] password for user: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package x is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'x' has no installation candidate

Про це було задано кілька питань на різних сайтах StackExchange, наприклад openvpn на AskUbuntu, але це, як правило, про те, як отримати конкретний пакет, незважаючи на помилку.

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

Тож моє запитання є більш загальним, і хоча я здогадуюсь, він має досить просту і, отже, не хвилюючу відповідь, я не можу подумати, як знайти його звичайними методами пошукової системи, тому я звертаюся до AskUbuntu: Чи є команда чи варіант, який я можу використовувати, щоб визначити, який пакет / на які пакунки посилається на відсутній пакет?

Відповіді:


13

Ви можете шукати пакет за допомогою apt-кеша:

apt-cache search x

Це виведе всі пакети, які так чи інакше посилаються на x.


2
Ну, це звучить розумно ... хіба що це не працює для мене. apt-get install libtinfo6звіти недоступні, але згадуються іншим пакетом, але apt-cache search libtinfo6не дають результатів. Чи є якийсь інший спосіб зробити подібну річ?
Ерханніс

@Erhannis Чи 'терміно' щось підводить? Я думаю, що іноді ця помилка виникає, коли пакет неохайно перейменований.
Арло Джеймс Барнс

Я не впевнений. Я перейшов до наступної версії Debian, і цей пакет, очевидно, більше не дає цієї помилки. Я спробую terminfoнаступного разу, коли це станеться; це сталося раніше, і, швидше за все, це повториться.
Ерханніс

23

Іноді це трапляється тому, що APT просто нічого не знає про те, про що ти говориш, але це можна вирішити, запустивши:

sudo apt-get update

Після виконання цього, як правило , помилка йде , тому aptі apt-getзнають , як робити те , що я питаю прямо зараз.


4
Ви, ймовірно, мали на увазі, що apt-get updateслідує за apt-get upgrade -yтим, що -yобходить підтвердження користувача. Немає сенсу користуватися ним apt-get update. Тим не менш, це зовсім не відповідає на питання.

4
@CelticWarrior: Я принципово згоден з цією відповіддю, оскільки оновлення інформації сховища пакетів може вирішити цю проблему, якщо спробувати встановити пакет із нещодавно доданого PPA та забути його запустити apt-get update.
Девід Фоерстер

7
@ user589808 Я не думаю, що це дуже хороша порада. Оновлення apt-get не потрібно, і сліпо натискаючи -y на все, можна зламати більше речей, ніж виправлено. Таким чином, Wayne був правильним у синтаксисі привіт.
божевільний класний

1
apt-get updateвідповідає на питання AB (пакет існує в репо , але apt-get installі apt-cacheне знають про це.)
dcorking

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