Chỉ cài đặt các phụ thuộc của một gói nhất định trong Debian hoặc Ubuntu (apt)


18

Có cách nào tốt hơn để chỉ cài đặt các phụ thuộc cần thiết của gói, thay vì cài đặt trực tiếp với apt-get (hoặc bất kỳ giao diện nào khác của dpkg) và sau đó loại bỏ ngay lập tức, loại bỏ các phụ thuộc của nó không?

Câu trả lời:


22

apt-cache depends pkgname sẽ hiển thị các phụ thuộc của gói.

Nếu bạn muốn tất cả trong một lệnh, bạn có thể làm tồi tệ hơn:

apt-get install `apt-cache depends pkgname | awk '/Depends:/{print$2}'`

16

apt-get cung cấp một lệnh cho chính xác rằng ...

apt-get build-dep <package name>

Từ trang người đàn ông bạn nhận được

build-dep gây ra apt-get để cài đặt / gỡ bỏ các gói trong nỗ lực đáp ứng các phụ thuộc xây dựng cho gói nguồn. Theo mặc định, các phụ thuộc được thỏa mãn để xây dựng gói nguyên bản. Nếu muốn, một kiến ​​trúc máy chủ có thể được chỉ định bằng tùy chọn --host-architecture.


9
Không thể có sự khác biệt giữa build dependenciesdependencies? Như trong, nếu bạn thường cài đặt một chương trình, bạn sẽ nhận được các phụ thuộc mà nó cần để thực sự chạy và với các phụ thuộc xây dựng, tôi nghĩ nhiều hơn về các thư viện, trình biên dịch, những thứ tương tự. Vì vậy, vì tôi không chắc chắn (câu trả lời này có upvote) nhưng đối với tôi, việc nhận phụ thuộc xây dựng cũng giống như nhận các phụ thuộc (chạy) mà các gói có?
Nanne

1
Bạn nói đúng. Khi trả lời điều này, rất lâu trước đây, tôi không hiểu đầy đủ về sự khác biệt giữa phụ thuộc xây dựng (thời gian xây dựng) và phụ thuộc (thời gian chạy). Cảm ơn bạn đã làm rõ Nanne!
Nathan Crock

4

aptitude sẽ cho phép bạn chỉ định một truy vấn thay vì tên gói khi cài đặt. Nếu bạn muốn cài đặt các phụ thuộc của gói có tên foo, bạn có thể cài đặt các gói có phụ thuộc ngược vào foo:

aptitude install '?reverse-depends(foo)'

hoặc là

aptitude install '~Rfoo'

Vấn đề với việc cài đặt gói sau đó gỡ bỏ gói đó là tất cả các gói được cài đặt dưới dạng phụ thuộc sẽ được đánh dấu là "cài đặt tự động" và sẽ bị xóa bởi mọi hành động cài đặt / xóa / nâng cấp bởi aptitude hoặc khi bạn chạy apt-get autocleantrừ khi bạn chạy đánh dấu chúng là cài đặt thủ công bằng cách sử dụng aptitude markhoặc apt-marklệnh.

Tuy nhiên, điều này đặt ra câu hỏi tại sao bạn muốn làm điều này, phỏng đoán tốt nhất của tôi là bạn đang cố gắng cài đặt các phụ thuộc cho một số phần mềm mà bạn sẽ biên dịch bằng tay. Trong trường hợp đó, trước tiên bạn sẽ cài đặt phụ thuộc bản dựng apt-get build-dep packagename, nhưng sau đó bạn nên tạo gói giả có phụ thuộc thời gian chạy (thường khác với phụ thuộc bản dựng) bằng cách sử dụng equivgói để xây dựng gói giả với phụ thuộc chính xác cho chương trình tự biên dịch của bạn. Xem thông tin về equivstrong APT HOWTO


3

Trong trường hợp xây dựng pkgname từ các nguồn

apt-get build-dep pkgname

1
xây dựng phụ thuộc không phải là phụ thuộc thời gian chạy
sehe

>> Trong trường hợp xây dựng pkgname từ các nguồn
eri

Tôi không biết nơi nào được đảm bảo / tài liệu. Ngoài ra, vẫn không làm cho nó giống nhau cho bất kỳ mục đích nào. Tôi sử dụng build-dep mọi lúc nhưng tôi thực sự muốn có một câu trả lời tốt hơn cho câu hỏi hiện tại. Tôi cũng cần điều đó
sehe
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.