Câu trả lời:
apt-get và aptitude là các UI khác nhau là một phần của cùng một hệ thống quản lý gói, APT, Công cụ đóng gói nâng cao . Chẳng hạn, cả hai đều được cấu hình bằng cách sử dụng /etc/apt/apt.conf
, cả hai đều sử dụng cùng một không gian tệp và định dạng để thể hiện trạng thái gói và cùng một không gian tệp để lưu trữ các tệp .deb đã tải xuống.
Chúng khác nhau như thế nào là hệ thống quy tắc nội bộ của chúng để thể hiện các xung đột tiềm ẩn giữa các gói, cách giải quyết chúng (nói trong khi apt-get dist-upgrade
so với aptitude full-upgrade
) và cách thể hiện những điều này khi tương tác với người dùng. Nói chung, cả hai có thể làm điều sai trong các tình huống khó khăn, nhưng apt-get có nhiều khả năng hiểu sai hơn là năng khiếu.
Rất nhiều lời khuyên tốt đã có ở đây, nhưng hãy để tôi thêm một điều chưa ai đề cập. Nếu bạn quyết định chuyển đổi, bạn có thể muốn chạy lệnh này, tùy thuộc vào những gì bạn đã làm với apt-get
:
aptitude keep-all
Lệnh đó đặt lại aptitude
ý nghĩa của các gói là trẻ mồ côi và nên được loại bỏ.
Đây là lý do đôi khi nó hữu ích: trong một lúc, cả hai apt-get
và aptitude
sẽ theo dõi các gói được cài đặt tự động như một sự phụ thuộc của thứ khác. Vì vậy, ví dụ, nếu bạn cài đặt mpd
, bạn có thể nhận được lib-so-and-so
như một phụ thuộc. Họ làm điều này, để sau này nếu bạn gỡ bỏ mpd
, cũng lib-so-and-so
sẽ bị xóa. Nhưng aptitude
và apt-get
xử lý này làm sạch khác nhau. aptitude
ngay lập tức cố gắng loại bỏ tất cả các phụ thuộc mồ côi; nhưng apt-get
chỉ gợi ý rằng bạn chạy apt-get autoremove
để dọn dẹp. (Logic đằng sau tất cả những điều này là bạn chỉ có thư viện vì mpd
cần nó. Nếu bạn không giữ mpd
, bạn không cần thư viện nữa. Nếu gói khác vẫn phụ thuộc vào nó, thì cả hai aptitude
vàapt-get
sẽ biết điều này và không cố xóa thư viện.)
Quan điểm của tôi là gì? Chà, nếu bạn đã thấy những cú huých liên tục để chạy apt-get autoremove
và bạn chuyển sang aptitude
, thì bạn có thể bị sốc khi lần đầu tiên bạn cố gắng cài đặt một cái gì đó. aptitude
sẽ ngay lập tức cố gắng để loại bỏ tất cả những đứa trẻ mồ côi. Nói chung, điều này sẽ ổn (rốt cuộc họ là trẻ mồ côi và không cần thiết), nhưng có một trường hợp phức tạp. Tất cả các gói meta máy tính để bàn đều liên quan đến một chuỗi phụ thuộc phức tạp, trong đó mỗi chương trình riêng lẻ được kéo vào như một phần phụ thuộc của trình bao gói ảo. Ví dụ: nếu bạn đã cài đặt Gnome vì bạn đã cài đặt gnome
gói, thì tất cả các chương trình máy tính để bàn thông thường của bạn đã được cài đặt dưới dạng phụ thuộc. Nếu bạn đã gỡ cài đặt một trong những chương trình này (ví dụ: Ekiga hoặc Gedit), thì trong mắt củaaptitude
phần còn lại của máy tính để bàn của bạn cũng nên được gỡ bỏ. Lưu ý rằng aptitude
luôn luôn hỏi trước khi nó xóa mọi thứ, nhưng mọi người thường nhập 'Y' mà không đọc. Theo kinh nghiệm của tôi, đây là khiếu nại / nhầm lẫn phổ biến nhất đối với những người mới sử dụng Debian.
Hai lời khuyên chung:
aptitude
hoặc apt-get
cẩn thận, trước khi nói có với bất cứ điều gì.aptitude -s safe-upgrade
hoặc aptitude -s install foo
. Các -s|--simulate
lá cờ là bạn của bạn.Người ta đã nói trong danh sách gửi thư Debian, nhiều năm trước, việc chuyển từ apt-get sang aptitude là rất mạo hiểm. Đây là hai phiên bản Debian (giả sử 10 năm) trước đây. Tất cả những vấn đề đó dường như đã được giải quyết ngay bây giờ và chắc chắn tôi chưa thấy vấn đề nào trên Debian hoặc Ubuntu.
apt-get
sang aptitude
. Hồi đó, họ xử lý nhiều chức năng thiết yếu rất khác nhau. Theo thời gian, chúng đã trở nên giống nhau hơn nhiều, và aptitude
đã trưởng thành hơn một tấn. Đối với 90% các trường hợp bây giờ, sẽ không có vấn đề gì nếu bạn chuyển đổi. Xem bài viết của tôi cho một trường hợp cạnh.
Tôi cũng sẽ nói đi trước và sử dụng aptitude
.
Aptitude
có một quản lý phụ thuộc tốt hơn apt-get
. Điều này sẽ giúp giữ cho số lượng các gói mồ côi ở mức thấp.
Tôi đã đọc cách đây một thời gian aptitude
có thuật toán nâng cấp dist tốt hơn so với apt-get
. Nhưng đó hầu như không phải là một tính năng giết người vì nó không được sử dụng thường xuyên trong thời gian sống của một hệ thống.
Ngoài ra, bạn sẽ có nhiều thứ hợp nhất trong một công cụ. Thay vì nhớ khi nào nên gọi apt-get
, apt-cache
hoặc dpkg
với thiết bị chuyển mạch nào, tôi chỉ sử dụng năng khiếu và hoàn thành hầu hết mọi việc.
Đối với các biến chứng khi chuyển đổi "ở giữa": Tôi không nhớ đã có bất kỳ khi tôi làm điều đó.
Có phải chúng không chỉ là một giao diện khác nhau cho cùng một phụ trợ?
aptitude
là một giao diện nhiều tính năng hơn ...
dpkg
. nhưng dpkg
chỉ cần cài đặt các gói; đó là các giao diện phụ trách tìm kiếm, giải quyết phụ thuộc và tải xuống.
Từ kinh nghiệm của tôi, họ có một cách khác để ghim các phiên bản gói. Trong trường hợp của tôi, tôi đã nói với khả năng khóa các gói nhất định, giả sử tôi sẽ an toàn trước các bản cập nhật trong tương lai. Tôi đã sai; trình quản lý cập nhật theo lịch trình, sử dụng apt-get, tiến hành nâng cấp nó thành mất tinh thần của tôi.
Drats, khi tôi đang viết bài này, tôi đã googled và phát hiện ra rằng lỗi ( # 557580 aptitude không tuân theo các chân trong sở thích.d / *) đã được sửa!
Tôi sử dụng cả apt-get và aptitude mà không có vấn đề gì: Tôi có cùng một câu hỏi ... Tại sao mọi người nói điều này ??? : D
Tiếp tục và đừng lo lắng: aptitude chỉ là một văn bản-gui cho apt-get, mà bạn thậm chí có thể sử dụng như một ứng dụng dòng lệnh, ví dụ như apt-get install foo
giống như aptitude install foo
.
Trân trọng
apt-get
cũng cung cấp tự động loại bỏ các gói được cài đặt chỉ là phụ thuộc. Sự khác biệt còn lại trong vấn đề đó là aptitude
loại bỏ ngay lập tức các phụ thuộc (nếu phù hợp), nhưng apt-get
chỉ hỗ trợ bạn chạy lệnh apt-get autoremove
. Nhưng cả hai đều theo dõi sự phụ thuộc theo cùng một cách bây giờ. Tuy nhiên, chúng vẫn khác nhau khi xử lý các trường hợp phụ thuộc phức tạp và các trường hợp cạnh (cài đặt hoặc gỡ bỏ rất phức tạp), nhưng đối với phần lớn mọi người và phần lớn các tình huống, giờ đây chúng hoạt động như nhau.
aptitude
sẽ loại bỏ chúng ngay lập tức, nhưngapt-get
sẽ chỉ nhắc bạn xóa chúng bằng cách nhập lệnhapt-get autoremove
. Nói chung, họ sẽ muốn loại bỏ các mặt hàng tương tự. Tuy nhiên, hãy xem liên kết này để biết trường hợp phức tạp khi họ không đồng ý với điều đó: forum.debian.net/viewtopic.php?f=10&t=49589&start=0