Jak mogę usunąć wszystkie zależności kompilacji dla konkretnego pakietu?

10

Kiedy chcę skompilować coś ze źródła w Ubuntu / Debian, zwykle dostaję zależności kompilacji, uruchamiając „ sudo apt-get build-dep PACKAGE_NAME” w terminalu.

Są (zwykle) bezużyteczne po zakończeniu zadania kompilacji.

Jak więc usunąć wszystkie zależności kompilacji dla konkretnego pakietu?

Khurshid Alam
źródło

Odpowiedzi:

5

Aby dowiedzieć się o zależnościach kompilacji programu, możesz uruchomić apt-cache showsrc pkgname, który wyświetli między innymi informacje o tych Build-Dependsplikach, które często kończą się na -dev; chociaż warto sprawdzić, czy któryś z plików (szczególnie tych nieoznaczonych -dev) jest wymagany przez inne programy. Możesz to sprawdzić za pomocą apt-cache depends filei apt-cache rdepends file. Poniższy przykład dotyczy Shotwell:

apt-cache showsrc shotwell

Build-Depends: debhelper (> = 7.0.50 ~), m4, valac-0.16 (> = 0.15), libgee-dev (> = 0.5.0), libgtk-3-dev (> = 3.0.11), libexif -dev (> = 0.6.16), libsqlite3-dev (> = 3.5.9), libgexiv2-dev (> = 0.4.1-1build1), libgnomevfs2-dev (> = 2.24.2), libgphoto2-2-dev (> = 2.4.2), libsoup2.4-dev (> = 2.26.0), libxml2 (> = 2.6.32), libunique-3.0-dev (> = 1.0.0), libwebkitgtk-3.0-dev (> = 1.1.5), libgudev-1.0-dev (> = 145), libdbus-glib-1-dev (> = 0,80), libraw-dev (> = 0.13.1-2), libusb-dev, libjson-glib -dev (> = 0.7.6), libgstreamer0.10-dev (> = 0.10.28), libgstreamer-plugins-base0.10-dev (> = 0.10.32), python-scour, libunity-dev, liblaunchpad- integracja-3.0-dev (> = 0.1.36), librest-dev

Na stronie webupd8 jest polecenie wykonania tego wszystkiego za jednym razem , ale odkryłem, że nie wydaje się, aby działał niezawodnie z obecną wersją Ubuntu, ponieważ wydaje się, że usuwa zbyt wiele. Wypróbowałem to z Pintą i zasugerowało usunięcie całej biblioteki mono. Dyskusje na temat takich problemów z używaniem poleceń takich jak webupd8 w Launchpad . Zachowaj ostrożność podczas eksperymentowania z dowolnymi „rozwiązaniami”, jakie możesz znaleźć.

Szkoda, że ​​nie ma autoremovekomendy dla build-depzainstalowanych pakietów.


źródło
1
Próbowałem metody aptitude i tak, masz rację, to usuwa zbyt wiele ... może z powodu wzajemnych zależności. Jeden inny mothod znalazłem jest przekazać następujące opcje (przy użyciu polecenia build-dep) sudo apt-get build-dep -o APT::Get::Build-Dep-Automatic=true PACKAGE_NAME. Teraz można je usunąć za pomocą apt-get autoremove. Ale to działa tylko po usunięciu głównego pakietu.
Khurshid Alam
2
W każdym razie właśnie dowiedziałem się, że właściwym sposobem na to jest użycie pbuilder. Dlatego nikt nie musi się martwić instalowaniem / odinstalowywaniem zależności.
Khurshid Alam
6

Tumbleweed pisze :

W przyszłości zdecydowanie zalecam używanie mk-build-deps... zamiast aptitude build-dep. To pozostawia pakiet ... w twoim systemie [który ma zależności] od build-deps, który możesz łatwo odinstalować później.

mk-build-deps można zainstalować za pomocą sudo apt install devscripts

FalcoGer
źródło
4

Opcja 1:

Pamiętaj, które pakiety zostały zainstalowane sudo apt-get build-dep PACKAGE_NAMEi usuń je po zbudowaniu.

Opcja 2:

apt-cache showsrc zawiera wiele informacji na temat pakietów źródłowych, w tym listę zależności od kompilacji.

apt-cache showsrc PACKAGE_NAME

Na przykład:

$ apt-cache showsrc pithos
Package: pithos
Binary: pithos
Version: 0.3.17~git07dcbd86a1
Section: python
Maintainer: Kevin Mehall <[email protected]>
Build-Depends: cdbs (>= 0.4.43), debhelper (>= 6), python, python-central (>= 0.6.11), python-distutils-extra (>= 2.10)
Architecture: all
Standards-Version: 3.8.2
Format: 1.0
Directory: pool/main/p/pithos
Files:
 cdf2129923e62bb62c246965453b40bd 2023031 pithos_0.3.17~git07dcbd86a1.tar.gz
 97689e8ada8be527d689f2c83415d3b0 1544 pithos_0.3.17~git07dcbd86a1.dsc
Python-Version: current
Checksums-Sha1: 35cbf3ae52922e50a0b81afcce2cd97a86afb254 2023031 pithos_0.3.17~git07dcbd86a1.tar.gz
Package-List: pithos deb python extra
Checksums-Sha256: 2b704d86f3dc1d36d180177d11e578bdcf74ea97b09b530144afe754e570b262 2023031 pithos_0.3.17~git07dcbd86a1.tar.gz
$ sudo apt-get remove cdbs debhelper python python-central python-distutils-extra

Ryzyko związane z tą opcją polega na tym, że możesz usunąć pakiet, który jest ważny dla czegoś poza budowaniem PACKAGE_NAME. Po prostu przeczytaj listę pakietów, które chcesz usunąć, zanim przejdziesz dalej.

Michael Crenshaw
źródło