apt-get build-dep nie może znaleźć pakietu źródłowego

16

Postępowałem już zgodnie z tym przewodnikiem, aby wyłączyć wklejanie środkowego przycisku myszy na moim Ubuntu 12.04.

Działa jak marzenie.

Teraz próbuję osiągnąć to samo na moim Linux Mint 17. Kiedy próbuję

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

daje mi następujące dane wyjściowe:

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

Dla mnie to wygląda jak apt-get jest w jakiś sposób „rozwiązywania” 'libgtk2.0-0'do 'gtk+2.0', ale nie znaleźliśmy żadnych pakiet nazwany tak.

EDYCJA: chociaż jestem teraz w stanie skompilować program (patrz moja odpowiedź), wciąż nie wiem, co Picking 'gtk+2.0' as source package instead of 'libgtk2.0-0'to znaczy. Wszelkie informacje na ten temat będą mile widziane, dzięki!

panepeter
źródło
Czy włączyłeś odpowiednie deb-srcrepozytorium na swoim /etc/apt/sources.list?
steeldriver

Odpowiedzi:

18

Jak już zauważyli inni, upewnij się, że dla każdego deb …wpisu w /etc/apt/sources.listi /etc/apt/sources.list.d/*masz pasujący deb-src …wpis. Reszta linii musi być identyczna. debWpis jest dla pakietów binarnych (czyli gotowe do instalacji), przy czym deb-srcjest dla pakietów źródłowych (czyli gotowy do kompilacji). Powodem, dla której oba rodzaje źródeł są rozdzielone, jest to, że są one zarządzane w bardzo różny sposób: pakiety binarne mają mechanizm śledzenia zależności i aktualnie zainstalowaną listę, podczas gdy pakiety źródłowe są śledzone tylko po to, aby można je było wygodnie pobrać. Zauważ, że podczas omawiania repozytoriów pakietów słowo źródło oznacza dwie niezwiązane ze sobą rzeczy: źródło jak w lokalizacji, z której można pobierać pakiety oraz pakiet źródłowy w przeciwieństwie do pakietu binarnego.

libgtk2.0-0to nazwa pakietu binarnego. Jest zbudowany z pakietu źródłowego o nazwie gtk+2.0. Powodem, dla którego nazwy pakietów źródłowych i binarnych nie zawsze są takie same, jest to, że zbudowanie pakietu źródłowego może wygenerować wiele pakietów binarnych; na przykład gtk+2.0jest źródłem 14 pakietów, ponieważ jest podzielony na dwie biblioteki ( libgtk2.0, libgail ), corresponding packages to build programs using these libraries (… -dev ), documentation for developers (… -doc ), companion programs (libgtk2.0-bin`) itp.

Możesz zobaczyć nazwę pakietu źródłowego odpowiadającą pakietowi binarnemu, sprawdzając Source: …wiersz na wyjściu dpkg -s BINARY_PACKAGE_NAME(jeśli pakiet jest zainstalowany) lub apt-cache show BINARY_PACKAGE_NAME. Możesz wyświetlić listę pakietów binarnych utworzonych przez pakiet źródłowy za pomocą aptitude search '?source-package(^SOURCE_PACKAGE_NAME$).

Polecenie apt-get sourcepobiera pakiet źródłowy. Jeśli podasz argument, który nie jest znanym pakietem źródłowym, sprawdza go w bazie danych instalowalnych pakietów binarnych i próbuje pobrać odpowiedni pakiet źródłowy. Polecenie apt-get build-depstosuje to samo podejście, aby wydedukować nazwę pakietu źródłowego, a następnie wysyła zapytanie do bazy danych pakietów źródłowych w celu uzyskania listy pakietów binarnych (lista w Build-Dep:polu) i instaluje te pakiety binarne.

Interfejs GUI źródeł oprogramowania ma pole wyboru „włącz repozytoria z kodem źródłowym” dla oficjalnych repozytoriów, upewnij się, że jest zaznaczone. Jeśli ręcznie dodajesz repozytoria stron trzecich, upewnij się, że dodajesz oba deb-srci debwiersze.

Gilles „SO- przestań być zły”
źródło
6

Dzięki @steeldriver wymyśliłem, co robić.

Po prostu musiałem dodać do mojej następującą molwę /etc/apt/sources.list:

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

repozytoria deb-src zawierają pakiety źródłowe (w przeciwieństwie do binarnych, gotowych do zainstalowania pakietów) potrzebne do kompilacji.

Edycja: Po dodaniu tego musisz wykonać sudo apt-get update

panepeter
źródło
5

Metoda CLI

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

Testowane na obrazie Docker Ubuntu 18.04. Po tej zmianie mogę z powodzeniem wykonać na przykład:

sudo apt-get build-dep hello

i przed zmianą nie powiodło się z błędem:

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

software-properties-gtk opcja „Kod źródłowy”

Z GUI możesz uruchomić:

software-properties-gtk

następnie w zakładce „Oprogramowanie Ubuntu” kliknij „Kod źródłowy”:

wprowadź opis zdjęcia tutaj

To dodało kilka deb-srcwierszy poniżej /etc/apt/sources.listi teraz mogę to zrobić sudo apt-get build-dep <package>.

Testowane na Ubuntu od 16.04 do 18.04.

Ciro Santilli
źródło