«Невозможно найти пакет» при попытке установить пакеты с помощью APT


209

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

$ sudo apt-get install <package>
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package <package>

Может ли кто-нибудь помочь мне в этом?


5
В последнее время это происходит очень часто, поскольку на сервере 18.04 по умолчанию отключены юниверс, мультивселенная и обратные порты.
wjandrea

1
Есть ли проблема с панелью запуска для улучшения полезной подсказки при вводе неустановленной команды? (Просто намекнуть, что оно в репозитории не включено, было бы очень полезно)
Thorbjørn Ravn Andersen

Это то, что мне очень нравится, когда я создаю контейнеры, обычно с Docker и Singularity. В контейнерах Singularity у вас есть различные варианты BootStrap, среди которых есть debootstrapи docker. По какой-то причине, если я использую debootstrapдля запуска базовый образ Ubuntu (например xenial), я сталкиваюсь с этой ошибкой, когда некоторые пакеты не могут быть найдены apt-get. Решение в конечном итоге заключается в том, чтобы переключиться на dockerBootStrap, а затем он снова работает.
user5359531

Это останавливает мой прогресс за последние пару дней, и это не связано с отключением юниверса, мультиверса или бэкпорта, как предлагает wjandrea.
Jackalope

@Jackalope Тогда, возможно, имя пакета неверно или вам нужно запустить sudo apt update. Используйте apt-cache searchпоиск с последующим поисковым запросом для поиска правильного имени пакета.
mchid

Ответы:


156

Сначала проверьте, существует ли пакет на самом деле:

  1. Перейдите на packages.ubuntu.com с помощью веб-браузера.
  2. Прокрутите вниз до «Поиск по каталогам пакетов»
  3. Введите пакет, который вы пытаетесь установить, в поле «Ключевое слово».

    Включить "Показывать только точные совпадения:"

    Измените «Распространение», на какую версию Ubuntu вы используете.

    введите описание изображения здесь

Если результатов нет , то пакет, который вы ищете, не существует, и следующие шаги не будут работать. Может потребоваться сторонний PPA или альтернативный метод установки.

Если результаты найдены , пакет существует, и вы можете продолжить с этими шагами:

  1. Откройте Software Sources (или Software & Updates в 13.04+), выполнив поиск в Dash.
  2. Откройте вкладку «Программное обеспечение Ubuntu».
  3. Убедитесь, что первые 4 флажка на этой вкладке включены:

    введите описание изображения здесь

  4. Обновите списки пакетов, затем протестируйте их с помощью следующих команд:

    sudo apt-get update
    sudo apt-get install <TEST_PACKAGE>
    

44
Я обнаружил, что простого sudo apt-get updateбыло достаточно, чтобы исправить это для меня. Ваш пробег может варьироваться.
Эдвард Фальк,

1
sudo apt-get updateтакже работал для меня на Ubuntu в Windows 10 (это важно, потому что пользовательский интерфейс, упомянутый во второй половине этого ответа, не существует в этой системе).
Джеймс

1
скриншот программного обеспечения и обновлений спас меня !!
Kalpesh Soni

Не забудьте также поискать на launchpad.net !
Джонатан

1
Я запускаю свой сервер из оболочки и не могу открыть графический интерфейс. Можно ли решить это только с помощью командной строки?
Улисс Алвес

82

Есть много вопросов по этой теме. Здесь я даю основной / общий ответ.

Когда apt-get installне удается найти пакет, пакет, который вы хотите установить, не может быть найден в репозиториях, которые вы добавили (те, в /etc/apt/sources.listи ниже /etc/apt/sources.list.d/).

Следующая (общая) процедура помогает решить эту проблему:

  1. Убедитесь, что вы включили репозитории Ubuntu:

    Чтобы включить все хранилища ( main, universe, restricted, multiverse), используйте следующие команды:

    sudo add-apt-repository main
    sudo add-apt-repository universe
    sudo add-apt-repository restricted
    sudo add-apt-repository multiverse
    

    Посетите справку для получения дополнительной информации.

  2. Для поиска PPA для дополнительных пакетов:

  3. Добавьте PPA (из командной строки) :

    Используйте эту команду:

    sudo add-apt-repository ppa:<repository-name>
    

    Посетите справку сообщества Ubuntu для получения дополнительной информации.

  4. Не забудьте обновить (сообщить о своих изменениях):

    Необходимо выполнить эту команду после изменения любых репозиториев:

    sudo apt-get update
    

    Выбор лучшего сервера загрузки может помочь ускорить обновление.

  5. Наконец, установите пакет:

    sudo apt-get install <package>
    

    См. Управление пакетами по командной строке .

    Дополнительно / Совет : вы можете найти правильное имя пакета (то есть имя в хранилище), используя apt-cache search <package-name>.



Примечание . Если пакет недоступен в хранилище каким-либо образом, вам придется подождать, пока он станет доступен (в случае новых / обновленных версий), или использовать другие процессы установки, кроме, apt-getнапример, компиляция из исходного кода, загрузка исполняемого двоичного файла и т. Д.


3
Может также случиться так, что пользователь ищет libname, когда он находится libname2в Debian / Ubuntu.
saiarcot895

3
Во-первых, это зависит от пакета, и вы делаете ряд предположений. Во-первых, вы предполагаете, что OP идентифицировал правильное имя пакета, как указано saiarcot895. Во-вторых, вы предполагаете, что пакеты доступны. В общем, лучше всего сначала выявить проблему. Тогда, если это вообще возможно, установить из репозиториев. Если нет особой необходимости, ppa - второй выбор. Если пакет отсутствует в репозиториях или ppa, возможно, его необходимо скомпилировать из исходного кода. Вам действительно не хватает информации.
Пантера

@ saiarcot895 @ bodhi.zazen: исправлен ответ с указанием apt-cache searchправильного имени пакета в репозиториях.
Pandya

офигенный ответ мужчина, ты тот, кто должен быть победителем
sdream

9

xbmc доступен только в репозитории юниверсов , только начиная с Ubuntu 12.04 (точнее). Если у вас более старая версия Ubuntu, вам нужно обновить или получить xbmc из другого места.

Если у вас Ubuntu 12.04, убедитесь, что вы включили хранилище юниверсов . Вы можете увидеть, какие репозитории вы включили в файле /etc/apt/sources.list(и в файлах в каталоге /etc/apt/sources.list.d). Убедитесь, что этот файл содержит строку вроде

deb http://al.archive.ubuntu.com/ubuntu/ precise universe

или же

deb http://zw.archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse

Если вы найдете только строку, как

deb http://mn.archive.ubuntu.com/ubuntu/ precise main restricted

и без строки universe, добавьте universeв конце этой строки или отдельной строки precise universe, как показано выше.

Если вам нужно изменить /etc/apt/sources.list, запустите sudo apt-get updateпотом, затем попробуйте установить снова. Если пакет все еще не найден, опубликуйте полное содержимое /etc/apt/sources.listи выходные данные sudo apt-get update.


@EliahKagan Я не думал, что мой ответ можно так интерпретировать, я попытался уточнить. А почему бы alи нет zw? (Я пытаюсь выбрать подходящее зеркало для ОП, когда они дают подсказку, но здесь я понятия не имею.)
Жиль

5

Я новичок в Ubuntu, но я пишу это, поскольку я обнаружил некоторые решения, чтобы избежать ошибок «Unable to Locate Package». Есть три обстоятельства, когда это может произойти с шоком.

  1. Это может произойти после установки Ubuntu, если вы не обновляете его, а затем выполняете обновления.
  2. Если в будущем произойдет много обновлений программного обеспечения, убедитесь, что все важные обновления безопасности / рекомендуемые обновления отключены, введя « Диспетчер обновлений » при нажатии Alt+ F2.
  3. Первая и вторая проблема может возникнуть даже после обновления или очистки всех обновлений. Но вечное решение таково: попробуйте пункты 1 и 2, затем введите sudo apt-get killmanager, если не работает, без проблем перейдите к типу sudo apt-get update, а затем введите sudo apt-get upgrade.

Теперь вы сможете установить любое программное обеспечение через терминал.


Если вы все еще получаете ошибку в строке «sudo apt-get update», попробуйте использовать «sudo apt-get upgrade». Это будет работать .. Ребята! Поскольку Linux очень чувствителен к регистру, пожалуйста, убедитесь, что вы используете все команды маленькими буквами, например «sudo» вместо «Sudo»
Shaan Sundar

5

В случае, когда пытались установить файл:

sudo apt-get install libstdc++.so.6

вместо пакета. Вы получаете сообщение об ошибке:

E: Unable to locate package libstdc++.so.6
E: Couldn't find any package by regex 'libstdc++.so.6'

потому что вы пытались установить файл, libstdc++.so.6который вы не можете установить, потому что он находится в пакете debian.

Вы можете использовать apt-fileдля поиска пакета, который содержит этот файл. Чтобы установить его, введите:

sudo apt-get install apt-file

Затем вы должны обновить индекс.

sudo apt-file update

После этого вы можете искать пакет, содержащий файл libstdc++.so.6:

sudo apt-file find libstdc++.so.6

Затем вы найдете много пакетов, которые содержат искомый файл. Для этого примера я вставляю только один результат поиска:

libstdc++6: /usr/lib/x86_64-linux-gnu/libstdc++.so.6

Затем вы можете установить необходимый пакет libstdc++6:

sudo apt-get install libstdc++6
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.