Câu trả lời:
remove
gỡ cài đặt các gói được đặt tên theo nó.autoremove
gỡ cài đặt tất cả các gói được cài đặt tự động không còn cần thiết. Không chính xác để liệt kê tên gói sau autoremove
; chúng sẽ bị bỏ qua (và tất cả các gói đủ điều kiện sẽ bị xóa), đây có thể không phải là những gì bạn dự định.--purge
làm cho các tệp cấu hình toàn hệ thống liên quan đến các gói bị xóa cũng bị xóa. Nó phải được kèm theo một lệnh, chẳng hạn như remove
hoặc autoremove
. Các --purge
lá cờ làm thay đổi hoạt động của một lệnh; nó không tự hành động.purge
có nghĩa là điều tương tự như --purge remove
(giống như remove --purge
). Nói purge
hai lần là không đúng ; thứ hai purge
được hiểu là tên của một gói là purge
d, có lẽ không phải là những gì bạn dự định.Để hiểu những lệnh đó làm gì và chúng khác nhau như thế nào, điều này giúp (và có lẽ là rất cần thiết) để hiểu hai khái niệm:
Một gói được cài đặt là thủ công hoặc tự động cài đặt.
Khi bạn chỉ định một gói để cài đặt và nó được cài đặt, nó sẽ được cài đặt thủ công .
Nhưng các gói khác cũng có thể được cài đặt. Hầu hết các gói có phụ thuộc - các gói khác phải được cài đặt, để các gói đó hoạt động như dự định. Khi bạn cài đặt một gói, các gói phụ thuộc của nó (tức là các gói khác mà nó phụ thuộc) được cài đặt, ngoại trừ các gói đã được cài đặt trước đó.
Khi một gói không được chỉ định bởi bạn sẽ được cài đặt, nhưng thay vào đó được cài đặt như một phần phụ thuộc của gói bạn đã chỉ định để cài đặt, nó sẽ tự động được cài đặt.
Xin lưu ý rằng khi bạn có hai gói được cài đặt và một trong số chúng là phụ thuộc của gói khác, điều đó không có nghĩa là phụ thuộc được cài đặt tự động. Cũng có thể là phần phụ thuộc đã được cài đặt thủ công (ví dụ: do bạn chỉ định, ví dụ, được cài đặt trước hoặc cùng lúc với gói phụ thuộc vào nó).
Cuối cùng:
apt-mark
lệnh), bất kể chúng được cài đặt trong trường hợp nào hoặc trong hoàn cảnh nào.Thông thường, đối với mỗi gói được cài đặt tự động, bạn sẽ có ít nhất một gói được cài đặt thủ công phụ thuộc vào gói đó (và điều đó khiến nó được cài đặt tự động). Tuy nhiên, nếu sau đó bạn xóa tất cả các gói được cài đặt thủ công phụ thuộc vào gói được cài đặt tự động, thì gói được cài đặt tự động sẽ không còn cần thiết nữa, nhưng vẫn sẽ được cài đặt.
apt-get autoremove
loại bỏ các gói được cài đặt tự động không còn có các gói được cài đặt thủ công tùy thuộc vào chúng.
Gói cung cấp các tệp được dự định và vẫn giữ nguyên, giống nhau trên mọi hệ thống nơi phiên bản của gói đó được cài đặt. Các tệp này cung cấp các tệp thực thi, tài nguyên, tài liệu và "tài sản" khác cho các chương trình đã cài đặt. Chúng tôi thường chỉ gọi những "tập tin" mà gói cung cấp.
Nhưng một gói cũng cung cấp các tệp khác, dự định (có thể) sẽ được thay đổi. Chúng được gọi là tập tin cấu hình toàn cầu (hoặc toàn hệ thống). Chúng hầu như luôn được cài đặt trong /etc
thư mục và chúng có thể được sửa đổi tự động và thủ công để thay đổi hành vi của các chương trình đã cài đặt. Ví dụ: sudo
có tệp cấu hình /etc/sudoers
và thư mục chứa nhiều tệp cấu hình hơn /etc/sudoers.d
. Tệp đó và bất kỳ tệp nào được thêm vào thư mục đó, chỉ định ai được phép sử dụng sudo
theo những cách nào.
Thông thường, mong muốn gỡ cài đặt một gói và sau đó cài đặt lại không nên thay đổi cách hành xử (trừ khi các tệp gói của nó bị hỏng và tất nhiên đó là lý do tại sao bạn cài đặt lại gói đó). Do đó, thông thường khi một gói được gỡ cài đặt, các tệp gói của nó sẽ bị xóa nhưng các tệp cấu hình trên toàn hệ thống của nó không bị ảnh hưởng.
Khi bạn gỡ cài đặt gói mà không chỉ định rằng các tệp cấu hình trên toàn hệ thống cũng được cho là sẽ bị xóa, đó được gọi là "xóa" gói.
Nếu bạn cũng muốn xóa các tệp cấu hình toàn hệ thống của gói khi bạn gỡ cài đặt gói, đó được gọi là "thanh trừng" gói.
apt-get remove
sẽ loại bỏ một gói; nghĩa là, nó sẽ gỡ cài đặt gói nhưng để lại các tệp cấu hình toàn hệ thống.
apt-get purge
sẽ thanh lọc một gói; nghĩa là, nó sẽ gỡ cài đặt gói và cũng đảm bảo xóa các tệp cấu hình trên toàn hệ thống.
Một cách khác để thanh lọc các gói là sử dụng --purge
cờ. Điều đó không nói apt-get
phải làm gì; thay vào đó, nó sửa đổi những thuật ngữ (hoặc "lệnh") như remove
bảo nó làm gì. Các --purge
lá cờ gây ra bất kỳ uninstallations gói được kèm theo việc xóa các tập tin cấu hình toàn hệ thống cho gói (s) being gỡ cài đặt. Nói cách khác, --purge
lá cờ biến sự loại bỏ thành thanh trừng.
Tại sao chúng ta có --purge
cờ khi chúng ta có purge
lệnh? Rốt cuộc, không sudo apt-get --purge remove packagename
tương đương với sudo apt-get purge packagename
. Chúng tương đương nhau. Trong trường hợp --purge
có ích là khi bạn muốn thay đổi hành vi của các lệnh khác hơn remove
.
Ví dụ: giả sử bạn muốn gỡ cài đặt các gói đã cài đặt tự động không còn cần thiết (vì không còn gói nào được cài đặt thủ công tùy thuộc vào chúng), nhưng bạn không chỉ muốn xóa các gói được cài đặt tự động này, bạn cũng muốn xóa tập tin cấu hình trên toàn hệ thống của họ. Sau đó, bạn có thể chạy:
sudo apt-get --purge autoremove
Hãy xem xét thêm một lần sử dụng --purge
. Có một cờ được gọi --reinstall
, biến cài đặt thành cài đặt lại. Điều này có nghĩa là, thông thường, khi bạn cố gắng cài đặt một gói đã được cài đặt, sẽ không có gì xảy ra hoặc (nếu gói được đánh dấu tự động cài đặt), gói sẽ được đánh dấu cài đặt thủ công. Nhưng với --reinstall
cờ, việc cài đặt một gói đã được cài đặt sẽ khiến nó bị xóa và sau đó được cài đặt lại :
sudo apt-get --reinstall install packagename
Nhưng giả sử bạn muốn xóa các tệp cấu hình toàn hệ thống của gói bạn đang cài đặt lại. Điều này là hơi phổ biến; khi một gói không hoạt động và bạn không biết tại sao, bạn có thể thử cài đặt lại và cũng xóa các tệp cấu hình của nó để cấu hình của nó được đặt lại về mặc định. Để đạt được điều này, bạn có thể chạy:
sudo apt-get --purge --reinstall install packagename
Việc --reinstall
biến cài đặt thành cài đặt lại (nghĩa là loại bỏ sau khi cài đặt) và --purge
biến phần loại bỏ cài đặt lại thành purging.
Bây giờ cần phải rõ ràng chính xác từng apt-get
lệnh trong ví dụ của bạn làm gì:
sudo apt-get autoremove --purge packagenames
Việc thanh trừng này tự động cài đặt các gói không còn có các gói được cài đặt thủ công phụ thuộc vào chúng. Đó là, nó gỡ cài đặt các gói đó (đòi hỏi phải xóa các tệp gói của chúng) và nó cũng xóa các tệp cấu hình toàn hệ thống của chúng.
Ở đây, packagenames
không làm gì cả. Cụ thể, nếu bạn dự định chỉ xóa các gói có tên được liệt kê ở đó, thì điều này sẽ không hoạt động như bạn dự định.
sudo apt-get remove --purge packagenames
Cuộc thanh trừng này packagenames
; giả sử packagenames
là một danh sách các tên gói được phân tách bằng khoảng trắng, nó sẽ lọc tất cả chúng. Đó là, nó sẽ gỡ cài đặt chúng (đòi hỏi phải xóa các tệp gói của chúng) và cũng sẽ xóa các tệp cấu hình toàn hệ thống của chúng.
Nếu bất kỳ gói nào được liệt kê trong packagenames
không được cài đặt, sự hiện diện của nó trong danh sách sẽ không có hiệu lực (ngoại trừ việc bạn sẽ được thông báo rằng nó chưa được cài đặt). Nếu bạn liệt kê tên gói không phải là tên của bất kỳ gói thực tế nào, lệnh sẽ bị lỗi.unable to locate packagename
sudo apt-get purge purge packagenmaes
Nếu bạn loại bỏ một trong những lần xuất hiện purge
trong lệnh đó, nó sẽ tương đương với lần xuất hiện trước. Khi nó đứng, nó cố gắng thanh lọc một gói được gọi purge
, và cũng để thanh lọc các gói được liệt kê trong packagenames
. Vì purge
không phải là tên của bất kỳ gói nào, nó sẽ thất bại với thông báo lỗi.
sudo apt-get remove packagenames
Điều này loại bỏ các gói được liệt kê trong packagenames
đó đòi hỏi phải xóa các tập tin gói của họ. Điều này không xóa các tệp cấu hình toàn hệ thống của họ (vì nó chỉ là một loại bỏ, không phải là một cuộc thanh trừng).
sudo apt-get autoremove
Điều này gỡ cài đặt các gói được cài đặt tự động không còn có các gói được cài đặt thủ công phụ thuộc vào chúng. Điều này đòi hỏi phải xóa các tệp gói của họ, nhưng không phải các tệp cấu hình trên toàn hệ thống của họ (nghĩa là nó là một loại bỏ nhưng không phải là một cuộc thanh trừng).
Để biết thêm thông tin về cách sử dụng apt-get
, tôi khuyên bạn nên trang hướng dẫn sử dụng . Để biết thêm thông tin chung, xem hướng dẫn này .