apt-get build-dep не может найти исходный пакет

16

Я уже следовал этому руководству, чтобы отключить вставку средней кнопки мыши на Ubuntu 12.04.

Работает как шарм.

Теперь я пытаюсь добиться того же на моем Linux Mint 17. Когда я пытаюсь

sudo apt-get build-dep libgtk2.0-0

это дает мне следующий вывод:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Picking 'gtk+2.0' as source package instead of 'libgtk2.0-0'
E: Unable to find a source package for gtk+2.0

Для меня это выглядит как APT-GET как - то «решение» , 'libgtk2.0-0'чтобы 'gtk+2.0', но не находит пакет с именем , как это.

РЕДАКТИРОВАТЬ: хотя я теперь могу скомпилировать программу (см. Мой ответ), я все еще не знаю, что Picking 'gtk+2.0' as source package instead of 'libgtk2.0-0'должно означать. Любое понимание этого будет оценено, спасибо!

panepeter
источник
Вы включили соответствующий deb-srcрепозиторий в своем /etc/apt/sources.list?
апреля

Ответы:

18

Как уже отмечали другие, убедитесь, что для каждой deb …записи в /etc/apt/sources.listи у /etc/apt/sources.list.d/*вас есть соответствующая deb-src …запись. Остальная часть строки должна быть идентичной. debЗапись для бинарных пакетов (т.е. готов к установке), то deb-srcдля исходных пакетов (т.е. готов к компиляции). Причина, по которой два вида источников разделены, заключается в том, что они управляются совершенно по-разному: бинарные пакеты имеют механизм отслеживания зависимостей и установленный в настоящее время список, в то время как исходные пакеты отслеживаются только для удобной загрузки. Обратите внимание, что при обсуждении репозиториев пакетов слово « источник» означает две не связанные между собой вещи: источник, находящийся в месте загрузки пакетов, и пакет источника, а не двоичный пакет.

libgtk2.0-0это имя бинарного пакета. Он построен из исходного пакета с именем gtk+2.0. Причина, по которой имена источников и двоичных пакетов не всегда совпадают, заключается в том, что сборка исходного кода может создавать несколько двоичных пакетов; например, gtk+2.0является источником для 14 пакетов, так как он разделен на две библиотеки ( libgtk2.0, libgail ), corresponding packages to build programs using these libraries (… -dev ), documentation for developers (… -doc ), companion programs (libgtk2.0-bin`) и т. д.

Вы можете увидеть имя исходного пакета, соответствующего двоичному пакету, проверив Source: …строку в выходных данных dpkg -s BINARY_PACKAGE_NAME(если пакет установлен) или apt-cache show BINARY_PACKAGE_NAME. Вы можете перечислить двоичные пакеты, созданные исходным пакетом, с помощью aptitude search '?source-package(^SOURCE_PACKAGE_NAME$).

Команда apt-get sourceзагружает исходный пакет. Если вы передаете ему аргумент, который не является известным пакетом с исходным кодом, он ищет его в базе данных устанавливаемых бинарных пакетов и пытается загрузить соответствующий пакет с исходным кодом. Команда использует apt-get build-depтот же подход для определения имени исходного пакета, затем запрашивает базу данных исходного пакета, чтобы получить список двоичных пакетов (список в Build-Dep:поле), и устанавливает эти двоичные пакеты.

Интерфейс Software Sources имеет флажок «включить репозитории с исходным кодом» для официальных репозиториев, убедитесь, что он установлен. Если вы добавляете сторонние репозитории вручную, убедитесь, что вы добавили обе строки deb-srcи debстроки.

Жиль "ТАК - прекрати быть злым"
источник
6

Благодаря @steeldriver я понял, что делать.

Просто нужно было добавить следующий лин к моему /etc/apt/sources.list:

deb-src ftp://ftp.de.debian.org/debian/ stable main contrib

Репозитории deb-src содержат исходные пакеты (в отличие от бинарных, готовых к установке пакетов), необходимые для компиляции.

Редактировать: после добавления, вы должны выполнить sudo apt-get update

panepeter
источник
5

Метод CLI

sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
sudo apt-get update

Протестировано на образе Ubuntu 18.04 Docker. После этого изменения я могу успешно сделать, например:

sudo apt-get build-dep hello

и перед изменением произошел сбой с ошибкой:

E: You must put some 'source' URIs in your sources.list

software-properties-gtk опция "Исходный код"

Из графического интерфейса вы можете запустить:

software-properties-gtk

затем на вкладке «Программное обеспечение Ubuntu» нажмите «Исходный код»:

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

Это добавило несколько deb-srcстрок под /etc/apt/sources.list, и теперь я могу сделать sudo apt-get build-dep <package>.

Проверено на Ubuntu 16.04-18.04.

Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件
источник