Đối với một gói cụ thể, tôi có thể tìm hiểu tại sao nó được cài đặt không?
Vì vậy, tôi có thể thấy hoặc nó được cài đặt thủ công hay nó được cài đặt như một phần phụ thuộc của gói khác? Hoặc nó được cài đặt như một phần của bản phân phối?
Đối với một gói cụ thể, tôi có thể tìm hiểu tại sao nó được cài đặt không?
Vì vậy, tôi có thể thấy hoặc nó được cài đặt thủ công hay nó được cài đặt như một phần phụ thuộc của gói khác? Hoặc nó được cài đặt như một phần của bản phân phối?
Câu trả lời:
Một giải pháp nhanh chóng là nhập lệnh sau trong một thiết bị đầu cuối:
aptitude why $package
hoặc, nếu bạn chỉ quan tâm đến nguyên nhân cuối cùng:
aptitude why $package --show-summary
Thay thế gói $ bằng tên của gói và trước tiên bạn có thể cần cài đặt aptitude
gói.
Đây là đầu ra bạn có thể nhận được cho aptitude why aspell --show-summary
Packages requiring aspell:
inkscape
Để biết thêm chi tiết bạn sẽ chạy aptitude why aspell
. Bạn có thể đọc kết quả đầu ra, bên dưới, như sau: "Bạn đã cài đặt thủ công inkscape
, yêu cầu libgtkspell
, yêu cầu libenchantic2a
, yêu cầu aspell
". ( i
điểm đánh dấu chỉ các gói đã cài đặt; A
điểm đánh dấu chỉ các gói được cài đặt tự động.)
i inkscape Depends libgtkspell0 (>= 2.0.10)
i A libgtkspell0 Depends libenchant1c2a (>= 1.6.0)
i A libenchant1c2a Depends aspell-en | myspell-dictionary | aspell-dictionary | ispell-dictionary | hunspell-dictionary
i A aspell-en Depends aspell (>= 0.60.3-2)
Cuối cùng, lệnh sau
apt-cache rdepends --installed $package
liệt kê các gói khác được cài đặt trên máy tính của bạn phụ thuộc trực tiếp vào gói $ . Bạn có thể thêm --recurse
tùy chọn để liệt kê tất cả các gói phụ thuộc trực tiếp hoặc gián tiếp vào nó.
apt-cache rdepends --recurse $package
có thể cho quá nhiều gói Tôi sẽ thêm --installed
tùy chọn để hạn chế các gói đã cài đặt. -i
tùy chọn hạn chế các gói liên quan đến sự phụ thuộc trước và phụ thuộc. Nhưng một gói có thể được cài đặt bởi vì nó được khuyến nghị bởi gói khác. Để đưa khuyến nghị relateded gói như vậy, tôi cho rằng điều này sẽ cung cấp cho những cái đúng:apt-cache rdepends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --installed --recurse $package
apt-cache rdepends --no-{suggests,conflicts,breaks,replaces,enhances} --installed --recurse $package
Có thể tìm ra lý do nhanh và ngắn về lý do tại sao một gói nhất định được cài đặt bằng cách nhập lệnh sau vào terminal ( Applications -> Accessories -> Terminal
):
aptitude why <package-name>
Thay thế bằng tên của gói bạn quan tâm. Ví dụ: nhập aptitude why libgoo-canvas-perl
kết quả như sau:
i shutter Suggests libgoo-canvas-perl
Điều này về cơ bản có nghĩa là gói shutter
trong trường hợp này đã đề nghị libgoo-canvas-perl
được cài đặt. Sau đó gõ aptitude why shutter
tôi có thể đi lên chuỗi phụ thuộc.
Tuy nhiên có một lời cảnh báo. Tôi thường nhận thấy năng khiếu tìm ra lời giải thích hợp lý nhất cho tình huống có thể không phải là trường hợp thực tế, tuy nhiên sẽ cung cấp cho bạn một manh mối để nhìn xa hơn.
Trong trường hợp của tôi, shutter
đề xuất libgoo-canvas-perl
- tuy nhiên, các gói được đề xuất không được cài đặt tự động theo mặc định. Tuy nhiên, nó khiến tôi nhớ về "trải nghiệm" mà không thể chỉnh sửa ảnh chụp màn hình shutter
khiến tôi phải cài đặt thủ côngligbgoo-canvas-perl
Cuối cùng, bạn có thể tìm hiểu xem một gói được cài đặt tự động (có nghĩa là do hệ thống quản lý gói quyết định là bắt buộc khi xem xét các phụ thuộc và đề xuất của các gói khác mà bạn yêu cầu cài đặt) bằng cách chạy lệnh sau.
aptitude show <package-name>
Điều này sẽ xuất ra một dòng như dưới đây (dòng thứ 3 của đầu ra):
Automatically installed: no
Để biết thêm thông tin chạy info aptitude
(trong một thiết bị đầu cuối) hoặc truy cập trang wiki Aptitude
Để tìm hiểu khi một gói cụ thể được cài đặt, có 2 tùy chọn:
Install
(nhớ trường hợp) để liệt kê tất cả các mục liên quan đến cài đặt. Tuy nhiên, điều này sẽ chỉ hiển thị các gói được cài đặt bằng SynapticChạy lệnh sau trong một thiết bị đầu cuối. Điều này sẽ tìm kiếm nhật ký dpkg cho các mục lịch sử cài đặt. Tuy nhiên, có giới hạn tối đa về số lượng các bản ghi này được giữ lại, vì vậy nếu gói bạn đang tìm kiếm đã được cài đặt từ lâu, bạn có thể không tìm thấy nó. Thêm chi tiết tại đây
zcat -f /var/log/dpkg.log* | grep "\ install\ " | grep -i <package-name>
zcat -f /var/log/dpkg.log* | grep -i PackageName | egrep “\ install\ |\ upgrade\ “
Vâng, bạn có thể, và thực tế đó là một mệnh lệnh khá rõ ràng. Giả sử bạn đã cài đặt năng khiếu, bạn có thể mở loại quảng cáo Terminal Window:
aptitude why package
Điều đó sẽ đưa ra một danh sách các gói phụ thuộc vào gói cụ thể đó. Nếu đó là gói được cài đặt thủ công, nó sẽ có nội dung như "Không thể tìm thấy lý do để cài đặt gói".
Đây là một cách đơn giản không dựa vào aptitude
, mà 10.10 không được gửi theo mặc định nữa.
Mở Synaptic và cố gắng loại bỏ nó.
Nếu một hộp thoại bật lên yêu cầu bạn xóa các gói khác, thì đó là các gói (theo cách đệ quy) phụ thuộc vào nó.
apt-get remove package_name_goes_here -s
Một lần nữa, các gói sẽ bị loại bỏ do kết quả là tất cả các gói (theo đệ quy) phụ thuộc vào nó. ( -s
Tham số cho biết apt-get
không thực sự loại bỏ gói.)
y/N
yêu cầu xác nhận nếu bạn đánh máy -s
. Tôi đã thêm một cảnh báo tuy nhiên.