apt-get build-dep no puede encontrar un paquete fuente


16

Ya he seguido esta guía para deshabilitar pegar el botón central del mouse en mi Ubuntu 12.04.

Funciona de maravilla.

Ahora estoy tratando de lograr lo mismo en mi Linux Mint 17. Cuando intento

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

me da el siguiente resultado:

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

Para mí parece que apt-get es de alguna manera "resolver" 'libgtk2.0-0'a 'gtk+2.0', pero luego no encuentra ningún paquete llamado así.

EDITAR: aunque ahora puedo compilar el programa (ver mi respuesta), todavía no sé qué Picking 'gtk+2.0' as source package instead of 'libgtk2.0-0'se supone que significa. Cualquier idea sobre esto sería apreciada, ¡gracias!


¿Ha habilitado el deb-srcrepositorio relevante en su /etc/apt/sources.list?
steeldriver

Respuestas:


18

Como otros ya han notado, asegúrese de que para cada deb …entrada en /etc/apt/sources.listy /etc/apt/sources.list.d/*, tenga una deb-src …entrada coincidente . El resto de la línea debe ser idéntico. La debentrada es para paquetes binarios (es decir, listos para instalar), deb-srces para paquetes fuente (es decir, listos para compilar). La razón por la cual los dos tipos de fuentes están separadas es que se administran de manera muy diferente: los paquetes binarios tienen un mecanismo de seguimiento de dependencias y una lista instalada actualmente, mientras que los paquetes fuente solo se rastrean para que puedan descargarse convenientemente. Tenga en cuenta que cuando se discuten los repositorios de paquetes, la palabra fuente significa dos cosas no relacionadas: una fuente como en una ubicación para descargar paquetes y un paquete fuente en lugar de un paquete binario.

libgtk2.0-0es el nombre de un paquete binario. Está construido a partir de un paquete fuente llamado gtk+2.0. La razón por la cual los nombres de los paquetes fuente y binarios no siempre coinciden es que construir un paquete fuente puede producir múltiples paquetes binarios; por ejemplo, gtk+2.0es la fuente de 14 paquetes, ya que se divide en dos bibliotecas ( libgtk2.0, libgail ), corresponding packages to build programs using these libraries (... -dev ), documentation for developers (... -doc ), companion programs (libgtk2.0-bin`), etc.

Puede ver el nombre del paquete fuente correspondiente a un paquete binario marcando la Source: …línea en la salida de dpkg -s BINARY_PACKAGE_NAME(si el paquete está instalado) o apt-cache show BINARY_PACKAGE_NAME. Puede enumerar los paquetes binarios producidos por un paquete fuente con aptitude search '?source-package(^SOURCE_PACKAGE_NAME$).

El comando apt-get sourcedescarga un paquete fuente. Si le da un argumento que no es un paquete fuente conocido, lo busca en la base de datos de paquetes binarios instalables e intenta descargar el paquete fuente correspondiente. El comando apt-get build-depsigue el mismo enfoque para deducir el nombre de un paquete fuente, luego consulta la base de datos del paquete fuente para obtener una lista de paquetes binarios (la lista en el Build-Dep:campo) e instala esos paquetes binarios.

La GUI de fuentes de software tiene una casilla de verificación "habilitar repositorios con código fuente" para repositorios oficiales, asegúrese de que esté marcada. Si agrega repositorios de terceros manualmente, asegúrese de agregar ambas deb-srcy deblíneas.


6

Gracias a @steeldriver, descubrí qué hacer.

Solo tenía que agregar el siguiente ling a mi /etc/apt/sources.list:

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

Los repositorios de deb-src contienen paquetes de fuentes (a diferencia de los paquetes binarios listos para instalar) necesarios para la compilación.

Editar: después de agregar esto, debe ejecutar sudo apt-get update


5

Método CLI

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

Probado en la imagen Docker de Ubuntu 18.04. Después de este cambio, puedo hacer con éxito, por ejemplo:

sudo apt-get build-dep hello

y antes del cambio falló con el error:

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

software-properties-gtk opción "Código fuente"

Desde la GUI, puede ejecutar:

software-properties-gtk

luego en la pestaña "Software Ubuntu", haga clic en "Código fuente"

ingrese la descripción de la imagen aquí

Esto ha agregado algunas deb-srclíneas debajo /etc/apt/sources.list, y ahora puedo hacerlo sudo apt-get build-dep <package>.

Probado en Ubuntu 16.04 a 18.04.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.