Для пакета не найден кандидат на установку ubuntu

Обновлено: 30.06.2024

При попытке установить openssh-server на Ubuntu 14.04 64-bit, я получаю следующую ошибку:

Я вижу ту же ошибку при попытке установить любой пакет.

Это sources.list файл:

Ты бегал apt-get update ? Кроме того, вы проверили, если sources.list есть соответствующие записи?

$ sudo apt-cache policy [sudo] пароль для salman: Файлы пакетов: 100 / var / lib / dpkg / status release a = сейчас Закрепленные пакеты: salman @ salman-Inspiron:

Я предложил редактирование, которое должно сделать это ответственным, это просто требует одобрения.

Если это действительно весь ваш /etc/apt/sources.list файл, это объясняет вашу текущую ситуацию. И у меня нет объяснения, почему у вас установлен репозиторий Hardy. Я подозреваю, что вы следовали старому учебнику, и он сломал вещи.

Ваш первый шаг - вернуть репо в нужное русло. Я бы предложил использовать такой инструмент, как RepoGen, чтобы получить основы, но если это не удалось, вот наиболее важные из них:

Поместите их в нужное место sudoedit /etc/apt/sources.list (вы могли бы также бросить эти строки о Харди). Когда это будет сохранено, запустите, sudo apt-get update а затем вы сможете установить вещи снова.

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

Во-первых, мы должны быть подключены к Интернету, чтобы процесс обновления происходил.

Если обновление /var/lib/apt/lists/lock не может произойти из-за вас, вы можете удалить этот файл, что поможет загрузить процесс обновления. Затем выполните следующую команду, которая должна работать

Не пытайтесь это сделать, у меня это не сработало, и теперь у меня меньше, чем раньше

Чтобы увидеть список пакетов, которые имеют «Provides: openssh-server», вы должны выполнить:

Я подозреваю, что у вас есть другие проблемы в вашей системе Ubuntu, возможно, в ваших sources.list файлах - на Debian, по крайней мере, openssh-server является реальным пакетом, а не виртуальным пакетом. Я был бы удивлен, если бы это было по-другому на Ubuntu.

У меня была та же самая проблема, и удалил и добавил список источников снова и снова. В конце концов оказалось, что у меня установлена сторонняя архитектура armhf, и это вызвало проблемы. Итак, сначала очищены все пакеты ARM, а затем архитектура.

После этого apt-get update запустился без проблем, и я наконец смог обновить пакеты снова.

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

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

  1. Перейдите на http://packages.ubuntu.com/ с помощью веб-браузера.
  2. Прокрутите вниз до "Поиск по каталогам пакетов"

Введите пакет, который вы пытаетесь установить, в поле "Ключевое слово".

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

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

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

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

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

  1. Откройте Software Sources (или Software & Updates в 13.04+), выполнив поиск в Dash.
  2. Откройте вкладку "Программное обеспечение Ubuntu".

Убедитесь, что первые 4 флажка на этой вкладке включены:

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

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

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

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

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

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

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

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

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

экран

  • Перейти к поиску пакетов Ubuntu. (Уже объяснил в этом ответе)
  • Для внешних репозиториев посетите Обновления Ubuntu и выполните поиск по кнопка. или посетите PPA.
  • Или поиск в панели запуска ppa
  • Найдите подходящий ppa в соответствии с вашей версией Ubuntu.

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

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

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

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

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

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

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

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

Связанные часто задаваемые вопросы и ответы:

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

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

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

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

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

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

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

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

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

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

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

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

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

Я новичок в 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 ,

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

Часто бывает достаточно просто обновить списки пакетов из всех репозиториев и PPA:

Это должно быть первое, что нужно сделать.

Если это не сработает, вам нужно найти репозиторий или PPA, который содержит нужный вам пакет, добавить его и запустить sudo apt-get update еще раз. Шаги этого процесса подробно описаны в других ответах на этой странице.

В дистрибутиве Ubuntu и других, основанных на нем дистрибутивах, при установке новых пакетов пользователи могут столкнуться с ошибкой "package has no installation candidate" или по русски "Для пакета не найден кандидат на установку".

Эта ошибка может возникать при установке непопулярных программ или уже устаревших версий. Например, вы получите ее при попытке установить php5 или любой пакет, зависящий от этого в новой версии Ubuntu 16.04 или 16.10. В этой небольшой инструкции мы рассмотрим что означает ошибка "package has no installation candidate", а также как ее обойти и установить нужную программу.

Что означает package has no installation candidate?

Фактически, это означает то, что написано. Пакетный менеджер не нашел кандидата на установку для такого пакета. Ошибка будет выглядеть вот так в русской локализации:

pack

Или в английской:

pack1

Пакетный менеджер просто не знает где искать такой пакет. Его нет в официальных репозиториях, и нет в репозиториях, подключенных к вашей системе. Все это нам говорит пакетный менеджер:

Пакет php5 недоступен, но упомянут в списке зависимостей другого пакета.
Это может означать, что пакет отсутствует, устарел, или доступен из источников, не упомянутых в sources.list

Из этого выплывает несколько способов решения проблемы, которые мы рассмотрим ниже.

Как решить package has no installation candidate?

Для начала нужно обновить списки пакетов из репозиториев, возможно, у вас старая версия системы и для нее этот пакет еще недоступен. Это особенно актуально для бета-версий Ubuntu. Для обновления выполните:

sudo apt update

Затем пробуйте снова установить ваш пакет. Если пакетный менеджер по-прежнему не может его найти, но вы точно знаете что такой пакет должен быть в официальных репозиториях, то, возможно, он есть в репозиториях партнеров Canonical. Нужно их добавить. Для этого откройте Источники программного обеспечения и установите все галочки:

pack2

pack3

Дальше система автоматически обновит список пакетов:

pack4

pack5

Например, будем искать наш php 5. Вводим запрос в форму поиска и в результатах в первой же строке видим PPA, в котором есть нужная версия php. Такое решение подходит для многих пакетов.

На странице PPA мы уже видим способ добавления его в систему:

pack6

Например, для добавления этого PPA выполните такие команды:

sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update

После этого вы без труда установите нужный пакет.

pack7

Было найдено четыре версии, нам нужна последняя, для Trusty:

pack8

На странице кликните по архитектуре, в данном случае all, для загрузки:

pack9

Осталось только выбрать зеркало для загрузки и скачать файл:

pack10

Затем установить его с помощью dpkg:

sudo dpkg -i ./php5_5.5.9+dfsg-1ubuntu4.20_all.deb

Но не забудьте, что вам нужны все зависимости. Чтобы не делать это вручную, можно добавить репозиторий этого пакета в /apt/sources.list и заставить пакетный менеджер работать вместо вас. В нашем случае на сайте сказано, что нужно добавить строчку:

pack11

Можно добавить только ее, но не всегда все зависимости будут находиться только в этом репозитории, так что будет лучше добавить сразу все репозитории нужной версии Ubuntu в этот файл. Например, для версии Trusty нужно добавить такие репозитории:

pack12

Не забудьте обновить список пакетов:

sudo apt update

Далее можно установить нужную вам программу:

sudo apt install php5

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

Выводы

Этичный хакинг и тестирование на проникновение, информационная безопасность

Бывает что нужно установить пакет .deb для которого в стандартных репозиториях отсутствует нужная версия зависимости. Например, в зависимостях прописан пакет libcurl3, а в системе доступен только libcurl4; или в зависимостях libssl1.0.0, а в системе имеется только libssl1.0.2.

Сам по себе такой пакет .deb обычно берётся не из стандартного репозитория, поэтому надеяться, что проблема будет исправлена в будущем, особо не приходится.

При этом высока вероятность, что интересующий нас .deb пакет будет нормально работать и с libcurl4 вместо libcurl3 (может даже лучше будет работать) и с libssl1.0.2 вместо libssl1.0.0 — и так далее по аналогии, у вас могут быть свои собственные зависимости, которые вызывают проблемы.

Сразу оговорюсь, не стоит делать то, что здесь показано, с драйверами, особенно с драйверами видеокарты — слишком велика вероятность получить систему, которая загружается в чёрный экран. А с какими-нибудь прикладными программами это вполне можно попробовать — в конце-концов, если не заработает, то не заработает — просто удалим её, хуже уже не будет.

Для установки пакета его нужно скачать с официального сайта:

Пакет можно установить с помощью команды dpkg и ключей --ignore-depends:

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

Поэтому лучше пойти другим путём.

По большому счёту, файл .deb — это архив, в который собраны файлы программы (исполняемые файлы, файлы настроек, конфигурационные файлы — всё то, что нужно для запуска и работы программы), а также служебные файлы, в которых содержится описание пакета, требуемые зависимости и прочая метаинформация.

Распаковываем скаченный пакет deb:

Для распаковки используем утилиту ar, которая предназначена для создания, модификации и извлечения из архивов.

В результате будут извлечены следующие файлы:

  • control.tar.gz — архив с файлами в которых содержится метаинформация
  • data.tar.xz — архив с файлами самой программы
  • debian-binary

Вообще, поскольку data.tar.xz содержит саму программу, то может возникнуть идея просто раскидать файлы в системе по нужным путям — это тоже будет работать, но мы сделаем чуть более сложно, но и более правильно.

Распаковываем контрольный архив:

Открываем текстовым редактором файл control:


Найдём там строку, начинающуюся с Depends:

То есть, это и есть список зависимостей.

Скорее всего, свой установочный файл .deb вы уже пробовали установить и уже и так знаете, каких зависимостей не хватает.

Можно сделать проверку следующим образом — берём список, который идёт после Depends:, удаляем запятые, чтобы не нарушить синтаксис apt, и пытаемся установить все эти зависимости просто дописав этот список после sudo apt install, получается следующая команда:

Итак, требуется libcurl3, но в системе есть только libcurl4. Я просто меняю в файле control запись libcurl3 на libcurl4.

Ещё один отсутствующий пакет libssl1.0.0. Поскольку указана конкретная версия, можно предположить, что версия в репозитории была обновлена и по этой причине невозможно найти то, что нужно.

Ищем по более короткому описанию версии, то есть, например вместо libssl1.0.0 я ищу libssl1:


Как можно увидеть, найдено целых два варианта: libssl1.0.2 и libssl1.1. На мой взгляд, libssl1.0.2 ближе к libssl1.0.0, поэтому я в файле control меняю запись libssl1.0.0 на libssl1.0.2.


Сохраняем и закрываем файл control.

Теперь собираем установочный файл — делаем это в обратном разбору порядке.

Я уже пробовал, поэтому я знаю, что команда пожалуется на отсутствие файла postrm, поэтому просто создаём пустой файл postrm командой:

Упаковываем всё наше «добро» в control.tar.gz:

Разберём последнюю команду чуть подробнее. Строки pre post раскрываются в следующие:

То есть, фактически в создаваемый архив добавляются файлы postinst, postrm, preinst, prerm. Эти файлы представляют собой скрипты, выполняемые на различных этапах установки/удаления:

  • preinst — выполняется перед установкой пакета
  • postinst — выполняется после установки пакета
  • prerm — выполняется перед удалением пакета
  • postrm — выполняется после удаления пакета

Они являются необязательными — то есть могут отсутствовать. Если команда tar написала, что отсутствует какой-либо файл (например, файл postrm), то отредактируйте эту команду — уберите из списка отсутствующий файл, например, вместо создания postrm можно было записать команду следующим образом:

Продолжаем. Вновь собираем deb:

Устанавливаем наш пофиксенный пакет:

Ошибка «в значении поля «Description» обнаружена пустая строка»

Если при установки пакета возникла ошибка:

То это означает, что в файле control есть последняя пустая строка — удалите эту пустую строку и пересоберите установочный файл.

После этого всё ставится как нужно:


Если вам действительно просто нужен Viber, то смотрите статью «Как установить Viber на Linux».

Вам понравилось «потрошить» .deb пакеты? Тогда смотрите подробную справочную информацию об их устройстве в статье «Структура APT пакета: разбираемся в строении пакета Debian».

Я пытаюсь написать скрипт, который подключается к базе данных MySQL. Использование Python 2.7 в Ubuntu 16.04.

Мне все равно, как это делается, я просто хочу, чтобы это было сделано. Проведя некоторые исследования, я обнаружил, что MySQLdb является хорошим пакетом для загрузки для подключения к MySQL через python.

Я нашел несколько пошаговых руководств по установке mysqldb с, казалось бы, разными командами подсказок (что для меня мало смысла). Вот пример, который я только что попробовал:

Когда я пытаюсь выполнить шаг 3, я получаю:

Чтение списков пакетов . Готово

E: Невозможно найти пакет с исходным кодом для python-mysqldb

. что заставляет меня думать, что некоторые списки пакетов в ОС устарели?

Я посмотрел эту страницу:

И пытался бежать

$ sudo apt-get install python-pip python-dev libmysqlclient-dev

Чтение списков пакетов . Готово

Построение дерева зависимостей

Чтение информации о состоянии . Готово

Пакет libmysqlclient-dev недоступен, но на него ссылается другой пакет.

Это может означать, что пакет отсутствует, устарел или доступен только из другого источника.

Пакет python-dev недоступен, но на него ссылается другой пакет.

Это может означать, что пакет отсутствует, устарел или доступен только из другого источника.

Однако следующие пакеты заменяют его:

питон

E: Пакет 'python-dev' не имеет кандидата на установку

E: Пакет 'libmysqlclient-dev' не имеет кандидата на установку

4 ответа

Этот вопрос, вероятно, должен был быть опубликован в "Unix & Linux" или "Ask Ubuntu"

В любом случае, в этом посте я использовал Генератор списка источников Ubuntu для регенерации моего файла / etc / apt / sources.list , установив все флажки в «Ubuntu Branches» и «Ubuntu Updates» и нажмите «Создать список» внизу.

Затем скопировал и вставил результат в мой файл sources.list и загар: sudo apt-get update

После этого были выполнены следующие команды:

sudo apt-get install python-pip python-dev libmysqlclient-dev

sudo apt-get install python-mysqldb

Вы можете добавить этот источник и apt-get update & apt-get install libmysqlclient-dev

Читайте также: