Làm thế nào tôi có thể loại bỏ tất cả các phụ thuộc xây dựng cho một gói cụ thể?


10

Khi tôi muốn biên dịch một cái gì đó từ nguồn trong Ubuntu / Debian, tôi thường nhận được các phụ thuộc xây dựng bằng cách chạy " sudo apt-get build-dep PACKAGE_NAME" trong thiết bị đầu cuối.

Chúng (thường) vô dụng một khi công việc biên dịch được thực hiện.

Vì vậy, làm cách nào để loại bỏ tất cả các phụ thuộc xây dựng cho một gói cụ thể?

Câu trả lời:


5

Để tìm ra các phụ thuộc xây dựng của một chương trình bạn có thể chạy apt-cache showsrc pkgnamevà nó sẽ liệt kê, trong số các thông tin khác Build-Depends, thường là các tệp kết thúc bằng -dev; mặc dù nó đáng để kiểm tra nếu bất kỳ tệp nào (đặc biệt là những tệp không được đánh dấu -dev) được yêu cầu bởi các chương trình khác. Bạn có thể tìm thấy điều này bằng cách sử dụng apt-cache depends fileapt-cache rdepends file. Ví dụ sau đây là cho Shotwell:

apt-cache showsrc shotwell

Bản dựng-phụ thuộc: debrcper (> = 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- tích hợp-3.0-dev (> = 0.1.36), librest-dev

Có một lệnh để thực hiện tất cả trong một lần tại trang web webupd8 , nhưng tôi đã thấy rằng nó dường như không hoạt động đáng tin cậy với phiên bản Ubuntu hiện tại ở chỗ nó dường như loại bỏ quá nhiều. Tôi đã thử nó với Pinta và nó đề nghị xóa toàn bộ thư viện đơn âm. Có cuộc thảo luận về các vấn đề như vậy với việc sử dụng các lệnh như webupd8 tại Launchpad . Hãy thật cẩn thận khi thử nghiệm với bất kỳ "giải pháp" nào bạn có thể tìm thấy.

Thật là xấu hổ khi không có autoremovelệnh cho build-depcác gói được cài đặt.


1
Tôi đã thử phương pháp năng khiếu & vâng, bạn đúng, nó loại bỏ quá nhiều ... có thể vì phụ thuộc chéo. Một mothod khác tôi tìm thấy là để vượt qua tùy chọn sau (trong khi sử dụng lệnh build-dep) : sudo apt-get build-dep -o APT::Get::Build-Dep-Automatic=true PACKAGE_NAME. Bây giờ họ có thể được gỡ bỏ với apt-get autoremove. Nhưng điều này chỉ hoạt động sau khi loại bỏ gói chính.
Khurshid Alam

2
Dù sao, tôi chỉ biết rằng cách thích hợp để làm điều đó, là sử dụng pbuilder. Vì vậy, không ai phải lo lắng về việc cài đặt / gỡ cài đặt phụ thuộc.
Khurshid Alam

6

Tumbleweed viết :

Trong tương lai, tôi khuyên bạn nên sử dụng mk-build-deps... thay vì aptitude build-dep. Điều đó để lại một gói ... trong hệ thống của bạn, [có phụ thuộc] vào các bản dựng, mà bạn có thể dễ dàng gỡ cài đặt sau này.

mk-build-deps có thể được cài đặt với sudo apt install devscripts


4

Lựa chọn 1:

Hãy nhớ những gói đã được cài đặt sudo apt-get build-dep PACKAGE_NAMEvà loại bỏ chúng sau khi xây dựng.

Lựa chọn 2:

apt-cache showsrc cung cấp rất nhiều thông tin về các gói nguồn, bao gồm cả danh sách phụ thuộc vào bản dựng.

apt-cache showsrc PACKAGE_NAME

Ví dụ:

$ apt-cache showsrc pithos
Package: pithos
Binary: pithos
Version: 0.3.17~git07dcbd86a1
Section: python
Maintainer: Kevin Mehall <km@kevinmehall.net>
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

Rủi ro với tùy chọn này là bạn có thể xóa gói quan trọng đối với nội dung nào đó bên cạnh việc xây dựng PACKAGE_NAME. Chỉ cần đọc qua danh sách các gói sẽ được gỡ bỏ trước khi tiếp tục.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.