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ó 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:
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}'`
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.
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 autoclean
trừ 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 mark
hoặc apt-mark
lệ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 equiv
gó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ề equivs
trong APT HOWTO
build dependencies
vàdependencies
? 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ó?