apt-get build-dep non è in grado di trovare un pacchetto sorgente


16

Ho già seguito questa guida per disabilitare l'incollaggio del pulsante centrale del mouse sul mio Ubuntu 12.04.

Funziona come un fascino.

Ora sto cercando di ottenere lo stesso risultato sul mio Linux Mint 17. Quando provo a farlo

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

mi dà il seguente output:

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

Per me sembra che apt-get stia "risolvendo" 'libgtk2.0-0'in qualche modo 'gtk+2.0', ma poi non trova alcun pacchetto chiamato così.

EDIT: anche se ora sono in grado di compilare il programma (vedi la mia risposta), non so ancora cosa Picking 'gtk+2.0' as source package instead of 'libgtk2.0-0'dovrebbe significare. Qualsiasi approfondimento su questo sarebbe apprezzato, grazie!


Hai abilitato il deb-srcrepository pertinente nella tua /etc/apt/sources.list?
Steeldriver,

Risposte:


18

Come altri hanno già notato, assicurarsi che per ogni deb …voce in /etc/apt/sources.liste /etc/apt/sources.list.d/*, si abbia una deb-src …voce corrispondente . Il resto della linea deve essere identico. La debvoce è per i pacchetti binari (cioè pronti per l'installazione), deb-srcper i pacchetti di origine (cioè pronti per la compilazione). Il motivo per cui i due tipi di sorgenti sono separati è che sono gestiti in modo molto diverso: i pacchetti binari hanno un meccanismo di tracciamento delle dipendenze e un elenco attualmente installato, mentre i pacchetti di sorgenti sono tracciati solo in modo da poter essere scaricati comodamente. Si noti che quando si parla di repository di pacchetti, la parola sorgente significa due cose non correlate: una fonte come in una posizione da cui scaricare i pacchetti e un pacchetto sorgente invece di un pacchetto binario.

libgtk2.0-0è il nome di un pacchetto binario. È costruito da un pacchetto sorgente chiamato gtk+2.0. Il motivo per cui i nomi dei pacchetti sorgente e binari non sempre corrispondono è che la creazione di un pacchetto sorgente può produrre più pacchetti binari; per esempio, gtk+2.0è il sorgente di 14 pacchetti in quanto è diviso in due librerie ( libgtk2.0, libgail ), corresponding packages to build programs using these libraries (... -dev ), documentation for developers (... -doc ), companion programs (libgtk2.0-bin`), ecc.

Puoi vedere il nome del pacchetto sorgente corrispondente ad un pacchetto binario controllando la Source: …riga nell'output di dpkg -s BINARY_PACKAGE_NAME(se il pacchetto è installato) o apt-cache show BINARY_PACKAGE_NAME. È possibile elencare i pacchetti binari prodotti da un pacchetto sorgente con aptitude search '?source-package(^SOURCE_PACKAGE_NAME$).

Il comando apt-get sourcescarica un pacchetto sorgente. Se gli dai un argomento che non è un pacchetto sorgente noto, lo cerca nel database dei pacchetti binari installabili e prova a scaricare il pacchetto sorgente corrispondente. Il comando apt-get build-depsegue lo stesso approccio per dedurre il nome di un pacchetto sorgente, quindi interroga il database del pacchetto sorgente per ottenere un elenco di pacchetti binari (l'elenco nel Build-Dep:campo) e installa tali pacchetti binari.

La GUI di Software Sources ha una casella di controllo "abilita repository con codice sorgente" per i repository ufficiali, assicurati che sia selezionata. Se aggiungi manualmente repository di terze parti, assicurati di aggiungere sia le righe deb-srcche le debrighe.


6

Grazie a @steeldriver, ho capito cosa fare.

Ho dovuto aggiungere il seguente ling al mio /etc/apt/sources.list:

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

I repository deb-src contengono pacchetti sorgenti (al contrario di pacchetti binari pronti per l'installazione) necessari per la compilazione.

Modifica: dopo aver aggiunto questo, è necessario eseguire sudo apt-get update


5

Metodo CLI

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

Testato sull'immagine Docker di Ubuntu 18.04. Dopo questa modifica, posso ad esempio fare con successo:

sudo apt-get build-dep hello

e prima della modifica non è riuscito con l'errore:

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

software-properties-gtk opzione "Codice sorgente"

Dalla GUI, è possibile eseguire:

software-properties-gtk

quindi nella scheda "Software Ubuntu" fai clic su "Codice sorgente":

inserisci qui la descrizione dell'immagine

Questo ha aggiunto alcune deb-srcrighe sotto /etc/apt/sources.list, e ora posso farlo sudo apt-get build-dep <package>.

Testato su Ubuntu dal 16.04 al 18.04.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.