Câu hỏi Cách chính xác để xóa hoàn toàn ứng dụng là gì?


Tôi đã tìm kiếm trên mạng các thông tin như vậy và tìm thấy các dòng lệnh khác nhau, giống như các dòng lệnh sau:

sudo apt-get remove application
sudo apt-get remove application*

sudo apt-get remove --purge application
sudo apt-get remove --purge application*

sudo apt-get purge application
sudo apt-get purge application*

Vì vậy, cách chính xác là gì? Có cần thiết phải sử dụng "*" đó không?

Sau đó, tôi cũng tìm thấy các lệnh sau:

sudo updatedb
sudo locate application
sudo rm -rf (file/folder name)

478
2017-09-14 21:54


gốc


Một số câu hỏi của bạn có thể được trả lời trong bài đăng này: askubuntu.com/questions/1143/how-can-i-uninstall-software - Glutanimate
application* đôi khi có thể cho kết quả không mong muốn - ví dụ: nếu bạn có tệp trong thư mục hiện tại có tên application_information, shell sẽ mở rộng nó trước khi nó được truyền cho apt-get. Nếu điều này xảy ra và bạn muốn dấu hoa thị, bạn có thể sử dụng application\* hoặc là 'application*' - Izkata
application* thậm chí còn nguy hiểm hơn khi không có tệp nào trong thư mục hiện tại: apt-get sử dụng cụm từ thông dụng, không có mẫu toàn cục. Mọi người gần như đã xóa sạch toàn bộ hệ thống đang cố xóa wine*. - Andrea Corbellini
Bạn có thể chấp nhận câu trả lời không? Để biết ơn những người đã trả lời bạn. - m-ric
Cũng không application* cũng không application\* an toàn! Báo giá * với \ hoặc là '  ' chỉ có tăng rủi ro, đảm bảo * được chuyển thành apt-get (mặc dù nó thường là anyway!), nguyên nhân apt-get để diễn giải đối số dưới dạng regex. Trong một regex * có nghĩa là "không hoặc nhiều hơn của ký tự trước." Một dạng lỗi phổ biến là gỡ cài đặt wine*, xóa tất cả các gói bằng win (không phải wine, win) bất cứ đâu trong tên của họ và tất cả các gói tùy thuộc vào bất kỳ của họ. Xem lời giải thích này và sửa lỗi có thể. @Izkata - Eliah Kagan


Các câu trả lời:


  • apt-get remove packagename

    sẽ xóa các tệp nhị phân, nhưng không xóa các tệp cấu hình hoặc dữ liệu của gói packagename. Nó cũng sẽ để lại các phụ thuộc được cài đặt với nó vào thời gian cài đặt bị ảnh hưởng.

  • apt-get purge packagename hoặc là apt-get remove --purge packagename

    sẽ loại bỏ mọi điều liên quan đến gói packagename, nhưng không phải phụ thuộc được cài đặt với nó khi cài đặt. Cả hai lệnh đều tương đương nhau.

    Đặc biệt hữu ích khi bạn muốn 'bắt đầu tất cả' với một ứng dụng vì bạn đã sai cấu hình. Tuy nhiên, nó không loại bỏ các tập tin cấu hình hoặc dữ liệu nằm trong thư mục nhà của người dùng, thường là trong các thư mục ẩn ở đó. Không có cách nào dễ dàng để xóa những người đó.

  • apt-get autoremove

    loại bỏ các gói mồ côi, tức là các gói đã cài đặt được sử dụng để cài đặt dưới dạng phụ thuộc, nhưng không còn nữa. Sử dụng tính năng này sau khi xóa gói đã cài đặt các gói phụ thuộc mà bạn không còn quan tâm.

  • aptitude remove packagename hoặc là aptitude purge packagename (tương tự)

    cũng sẽ cố gắng loại bỏ các gói khác được yêu cầu bởi packagename nhưng không yêu cầu bất kỳ gói nào còn lại. Lưu ý rằng aptitude chỉ nhớ thông tin phụ thuộc cho các gói mà nó đã cài đặt.

Và nhiều hơn nữa tồn tại. Mức độ thấp hơn dpkg-commands có thể được sử dụng (nâng cao), hoặc các công cụ GUI như Muon, Synaptic, Software Center, v.v. Không có 'cách đúng' nào để xóa ứng dụng hoặc thực hiện các tác vụ khác tương tác với quản lý gói của bạn.

Danh sách bạn tìm thấy chỉ là ví dụ. Hãy chắc chắn rằng bạn hiểu ý nghĩa và thử những gì nó muốn làm trước khi chấp nhận hành động (bạn cần phải bấm Y trước khi nó thực sự thực hiện các hành động như được đề xuất).

Phiên bản dấu hoa thị trong câu hỏi là có thể sai; apt-get chấp nhận một biểu thức chính quy và không phải là một mẫu glob như vỏ. Vì vậy, những gì sẽ xảy ra với

sudo apt-get remove application*

như sau:

  1. Vỏ cố mở rộng application* xem các tệp trong thư mục hiện tại. Nếu (như thường là trường hợp) nó không tìm thấy gì, nó trả về mẫu glob không thay đổi (giả sử bash với hành vi mặc định ở đây --- zsh sẽ lỗi).

  2. apt-get sẽ xóa các gói có tên chứa một chuỗi thỏa mãn biểu thức chính quy application*, đó là, applicatio theo sau là một số tùy ý n: applicatio, application, applicationn, libapplicatio, v.v.

  3. Để xem làm thế nào điều này có thể nguy hiểm, hãy thử (không có gốc để tăng gấp đôi an toàn) apt-get -s remove "wine*" (-s sẽ mô phỏng thứ thay vì làm nó) --- nó sẽ nói là sẽ loại bỏ tất cả các gói có "giành chiến thắng" trong tên của họ và người phụ thuộc, gần như toàn bộ hệ thống ...

Có lẽ, lệnh đó có nghĩa là

 sudo apt-get remove "^application.*"

(lưu ý các dấu ngoặc kép và dấu chấm) sẽ xóa tất cả các gói có tên bắt đầu bằng application.

Các lệnh này,

sudo updatedb                  # <-- updates the locate database (index). harmless
sudo locate application        # <-- locates the file 'application'. harmless
sudo rm -rf (file/folder name) # <-- removes files/dirs recursively. dangerous.

hoàn toàn nằm ngoài phạm vi quản lý gói. Không xóa các tệp thuộc về các gói mà không sử dụng trình quản lý gói! Nó sẽ bị lẫn lộn và là sai rồi cách để làm việc.

Nếu bạn không biết tệp nào thuộc về gói, hãy thử:

dpkg -S /path/to/file

638
2017-09-14 22:04



Tùy chọn --purge cũng có ích khi cố gắng loại bỏ hoàn toàn mọi phụ thuộc còn lại, bao gồm các tệp cấu hình của chúng: apt-get-autoremove --purge  Điều quan trọng cần lưu ý là các tệp cấu hình trong thư mục chính của bạn không bị ảnh hưởng bởi tùy chọn --purge. Những bạn sẽ phải loại bỏ bằng tay. - Glutanimate
Đã xảy ra lỗi ở đây: apt-get chấp nhận RE, không phải là globs; Vì vậy, apt-get remove pack * sẽ loại bỏ tất cả các gói bắt đầu bằng pac theo sau là zero hoặc nhiều k ... thường không mong muốn. Tôi đã chỉnh sửa anser. Xem thêm askubuntu.com/questions/210976/… - Rmano
Tôi nghĩ câu trả lời này không còn chính xác nữa. Hoặc apt remove -s texlive* Hoặc của nó apt-get đối xứng dòng trả về như Note, selecting 'texlive-font-utils' for glob 'texlive*' (ngụ ý rằng họ thực sự chấp nhận bóng tối), tiếp theo là thông thường Package 'texlive-common' is not installed, so not removed, và cuối cùng Remv dòng, chẳng hạn như Remv texlive-font-utils [2015.20160320-1] [...]. - Jonathan Y.
@JonathanY. Bạn cũng sẽ chọn các gói chưa được cài đặt. Dù sao, bạn có thể vui lòng hỏi một câu hỏi MỚI và chi tiết hơn một chút về tình hình của bạn trong câu hỏi. Tôi sẽ rất vui khi nhìn vào nó :) - gertvdijk
Tôi không hỏi một câu hỏi mới. Tôi chỉ vào một sự thay đổi có thể vì câu trả lời này đã được thực hiện mà làm cho một số chi tiết không chính xác. Để hóm hỉnh, có vẻ như apt-get remove packa* thực sự có glob packa* thay vì nhìn vào nó như regex: nó phù hợp package nhưng không pack. - Jonathan Y.


Đối với Ubuntu 12.04 và có thể cao hơn, phương pháp chính xác là:

sudo apt-get --purge autoremove packagename

Chi tiết đây.

Không được dùng packagename* vì điều đó có thể xóa các gói không mong muốn và gây ra nhiều vấn đề hơn giải quyết. Hoặc nếu bạn phải, ít nhất hãy chạy nó với một -s, --simulate, --dry-run gắn cờ đầu tiên để xem chính xác những gì nó sẽ làm mà không làm việc đó.


92
2017-11-20 20:01



đây là câu trả lời đúng, ngắn gọn và súc tích: - Anwar


Bạn có thể sử dụng lệnh này:

sudo apt-get purge --auto-remove packagename

Nó sẽ dọn dẹp các gói cần thiết cùng với các phụ thuộc được cài đặt với các gói đó. Các --auto-remove tùy chọn (là bí danh của autoremove) hoạt động tương tự như sudo apt-get autoremove. Bằng cách sử dụng lệnh này, chúng ta có thể chạy một lệnh duy nhất:

sudo apt-get purge --auto-remove packagename

Thay vì:

sudo apt-get purge packagename
sudo apt-get autoremove

17
2017-09-16 20:08



Mặc dù bạn đúng nhưng cũng có thể sử dụng sudo apt-get --purge autoremove packagename. Cùng một lệnh ở đây - Anwar
Lệnh hoàn chỉnh có thể được viết như apt-get autoremove --purge thay vì apt-get purge --auto-remove ? - felwithe
Ai đó có thể bắn tôi không? - Martin Andersson


Bạn có thể sử dụng một cách an toàn sudo apt-get remove --purge application hoặc là sudo apt-get remove applications 99% thời gian. Khi bạn sử dụng purge cờ, nó chỉ đơn giản là loại bỏ tất cả các tập tin cấu hình quá. Mà có thể hoặc không thể là những gì bạn muốn, tùy thuộc vào nếu bạn muốn cài đặt lại ứng dụng nói. Các application* sẽ khớp với tất cả các ứng dụng bắt đầu bằng application, thường là các plugin, các tính năng bổ sung, v.v. của ứng dụng chính mà bạn đang xóa. I E.

sudo apt-get remove gedit*

sẽ xóa gedit, gedit-plugins và gedit-common. Thông thường, không nhất thiết phải thực hiện điều này, vì hầu hết các plugin / chương trình liên kết phụ thuộc vào ứng dụng chính và sẽ tự động bị xóa (hoặc được đánh dấu để xóa) khi bạn gỡ cài đặt ứng dụng chính.

Lệnh cuối cùng của bạn chỉ là xóa các phần còn lại từ các ứng dụng được biết là có các trình gỡ cài đặt lộn xộn và nó chỉ xóa bất kỳ phần còn lại nào của ứng dụng.


7
2017-09-14 22:05





Tôi đã nhận được một số thông báo lỗi xóa một gói, cách duy nhất tôi thấy rằng đã làm việc là:

mv /var/lib/dpkg/info/package.* /tmp/
dpkg --remove --force-remove-reinstreq package

Tôi thấy rằng mặc dù chỉ sử dụng

dpkg --remove --force-remove-reinstreq package

không loại bỏ gói nó cho tôi thấy đường dẫn chính xác đến tệp cần di chuyển với:

mv /var/lib/dpkg/info/package.* /tmp/

Thay thế gói với tên ứng dụng của bạn. Sử dụng sudo trong Ubuntu, trở thành root trong Debian.


5
2018-02-26 09:26





Tôi tìm thấy lệnh này trên internet.

dpkg --purge --force-depends application

http://www.debian-administration.org/article/Reinstalling_packages_to_fix_problems.


3
2017-09-14 22:10





Nó phụ thuộc vào ứng dụng bạn muốn xóa. Luôn chắc chắn kiểm tra các phụ thuộc của nó trước khi đưa ra lệnh yes. Khi bạn loại bỏ một cái gì đó bằng dòng lệnh, nó đôi khi sẽ hiển thị một số thư viện không còn cần thiết nữa. Chúng có thể được gỡ bỏ bằng apt-get autoremove.

Cẩn thận rằng bằng cách sử dụng các lệnh như sudo apt-get remove --purge applicationname có thể loại bỏ một số phụ thuộc cần thiết bởi các ứng dụng khác và, như vậy, có thể làm hỏng hệ thống của bạn.

Nếu bạn muốn thực hiện theo cách an toàn hơn, bạn luôn có thể xóa nó bằng cách sử dụng chỉ trung tâm phần mềm hoặc apt-get xóa tên ứng dụng. Nếu các phụ thuộc không cần thiết nữa, hãy tạo apt-get autoremove sau.


1
2017-09-14 22:10



Tôi nghĩ rằng toàn bộ hệ thống gói Debian được thiết kế đặc biệt để không phải loại bỏ một gói nếu có các gói khác phụ thuộc vào nó. Bạn có thể được (helpfully) hỏi nếu bạn muốn loại bỏ tất cả các gói phụ thuộc quá, và đó là nơi bạn nên thực sự đọc danh sách các gói sắp được xóa, đó là Tôi nghĩ những gì bạn đang cố gắng để nói. - Xen2050


Tôi chỉ muốn làm rõ một điều có vẻ là một nguồn gây nhầm lẫn ở đây. Các dpkgtiện ích không biết hoặc theo dõi các gói phụ thuộc liên quan đến nhau, đó là một lý do lớn mà apt đã được phát triển tôi tin. Bạn có thể đọc về nó trong phần 8.6 trên trang này Câu hỏi thường gặp về Debian GNU / Linux - Các công cụ quản lý gói Debian

  • Với apt: Nếu tôi muốn loại bỏ gói A, và nó có một sự phụ thuộc được gọi là gói B và gói B không có gói phụ thuộc nào khác, sau đó gói A và B sẽ bị xóa. Nếu gói B DID có phụ thuộc khác gói, sau đó chỉ gói A sẽ bị xóa.

  • Với dpkg: Phụ thuộc gì? Bạn chỉ cần nói với tôi để thanh trừng damn
    vì vậy đó là những gì tôi đã làm! Lập kế hoạch nghèo nàn về phía bạn không
    tạo thành một trường hợp khẩn cấp trên một phần của tôi.

Với điều đó đã nói, đây là hai lớp lót có thể được sử dụng cho mỗi phương pháp tẩy:

dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --dry-run --purge

apt-get autoremove -y; apt-get --dry-run purge -y $(dpkg --list |grep '^rc' |awk '{print $2}')

Gỡ bỏ --dry-run để thực hiện các hoạt động thanh lọc thực tế thay vì báo cáo những hành động mà nó đã thực hiện.


1
2017-08-23 23:32