Tôi có thể loại bỏ apt với apt không?


45

Tôi biết rằng tôi có thể sử dụng apt-get remove <package>để loại bỏ một chương trình.

Nhưng aptlà một chương trình chính nó. Tôi có thể sử dụng apt-get remove aptđể loại bỏ nó, hoặc nó sẽ bị lẫn lộn một phần thông qua?


2
Đó là một thực tế hay chỉ là một câu hỏi giả định? Trong trường hợp 1: Hãy thử nó. Khác: Tôi nghĩ rằng nó sẽ có thể tự thanh lọc nếu nó không cố gắng khởi chạy bất kỳ thành phần nào của nó sau khi đã loại bỏ chúng. Các tập tin đã được mở có thể được gỡ bỏ mà không có vấn đề.
Chỉ huy Byte

@ByteCommander Đó là cả hai, nhưng tôi thực sự không thể thử nó ngay bây giờ.
Tim

13
Bạn có thể nhưng có lẽ bạn không nên . Linux hiếm khi hỏi tại sao người dùng của nó muốn tự bắn vào chân mình, nó chỉ cho rằng bạn có lý do chính đáng và cho phép bạn bóp cò ...
Shadur

1
Để hoàn thiện, Fedoras sẽ không cho phép bạn làm điều đó. # dnf remove dnf Dependencies resolved. Error: The operation would result in removing the following protected packages: dnf.
Davidmh

Thật là một câu hỏi thú vị độc ác! Theo dõi hợp lý là: bạn có thể phục hồi từ đó không, hoặc có yêu cầu cài đặt lại hoàn toàn không?
KlaymenDK

Câu trả lời:


78

APT cho phép bạn mô phỏng các lệnh của mình bằng tùy chọn -s. Bạn có thể tự thử điều này, ban hành lệnh apt-get -s remove apt(không sudocần thiết).

Điều này mang lại đầu ra sau đây:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  apturl-common xul-ext-ubufox
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  apt apt-utils apturl nautilus-share python3-software-properties
  software-properties-common software-properties-gtk ubuntu-desktop
  unattended-upgrades
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  apt
0 upgraded, 0 newly installed, 9 to remove and 0 not upgraded.
Remv ubuntu-desktop [1.341]
Remv nautilus-share [0.7.3-1ubuntu5]
Remv apturl [0.5.2ubuntu9]
Remv software-properties-gtk [0.96.13.1]
Remv software-properties-common [0.96.13.1]
Remv python3-software-properties [0.96.13.1]
Remv unattended-upgrades [0.86.2ubuntu1]
Remv apt-utils [1.0.10.2ubuntu1]
Remv apt [1.0.10.2ubuntu1]

Vì vậy, câu trả lời nên là: có, bạn có thể.


8
Tôi không chắc chắn rằng chế độ mô phỏng của apt bao gồm toàn bộ bụi phóng xạ cho thứ gì đó như thế này. Chắc chắn đây sẽ là một trường hợp cạnh mà mã có thể hoặc không thể giải quyết.
Sparhawk

12
Điều này không yêu cầu sudo( -schế độ không thực hiện bất kỳ thay đổi nào), vì vậy có lẽ tốt hơn là chạy nó mà không có sudo biện pháp phòng ngừa.
Tên giả

3
Apt cũng có thể xác định cách loại bỏ apt. Nhưng nó thực sự có thể làm điều đó? Thật dễ dàng để tưởng tượng rằng nó có thể xóa một tệp mà sau này nó phụ thuộc vào, khiến cho việc cài đặt ở trạng thái không nhất quán.
dùng253751

1
@immibis Tôi quan tâm nhiều hơn về việc loại bỏ dpkg. Bản thân Apt chỉ cho dpkg biết phải làm gì, dpkg là những gì thực sự thực hiện cài đặt (un).
Random832

1
Vì vậy, nếu apt cho dpkg biết phải làm gì, điều gì sẽ xảy ra khi bạn xóa dpkg ... lol
SuperSluether

30

Bạn có thể...

sudo apt-get remove apt
Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following packages will be REMOVED:
  apt apt-utils apturl nautilus-share python3-software-properties
  software-center software-properties-common software-properties-gtk
  ubuntu-desktop ubuntu-extras-keyring ubuntu-minimal unattended-upgrades
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  apt
0 upgraded, 0 newly installed, 12 to remove and 0 not upgraded.
After this operation, 9,031 kB disk space will be freed.
You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'
?] Yes, do as I say!
(Reading database ... 179817 files and directories currently installed.)
Removing ubuntu-desktop (1.327) ...
Removing nautilus-share (0.7.3-1ubuntu5) ...
Removing apturl (0.5.2ubuntu4) ...
dpkg: warning: while removing apturl, directory '/usr/lib/python3/dist-packages/AptUrl/gtk/backend' not empty so not removed
Removing software-properties-gtk (0.94) ...
dpkg: warning: while removing software-properties-gtk, directory '/usr/lib/python3/dist-packages/softwareproperties/gtk' not empty so not removed
Removing software-properties-common (0.94) ...
Removing python3-software-properties (0.94) ...
Removing unattended-upgrades (0.82.8) ...
Removing ubuntu-minimal (1.327) ...
Removing apt-utils (1.0.9.2ubuntu2) ...
Removing software-center (13.10-0ubuntu4.1) ...
Removing ubuntu-extras-keyring (2010.09.27) ...
OK
Removing apt (1.0.9.2ubuntu2) ...
Processing triggers for man-db (2.7.0.2-2) ...
Processing triggers for gconf2 (3.2.6-2ubuntu1) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for shared-mime-info (1.2-0ubuntu3) ...
Processing triggers for gnome-menus (3.10.1-0ubuntu2) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu2) ...
Processing triggers for bamfdaemon (0.5.1+14.10.20140925-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for mime-support (3.55ubuntu1) ...
Processing triggers for dbus (1.8.8-1ubuntu2) ...
Processing triggers for libc-bin (2.19-10ubuntu2) ...

và sẽ được cảnh báo bạn sắp làm một cái gì đó rất phá hoại. Tôi phải nói rằng ... danh sách các gói trông thật khủng khiếp để tiết kiệm không gian ít hơn 6000kb: D

Nó kết thúc nhưng không có cách nào quay lại sử dụng "apt-get". Trung tâm phần mềm Ubuntu sẽ không còn hoạt động nữa và bạn sẽ cần sử dụng "dpkg" để cài đặt lại trình quản lý gói (và cũng cần cài đặt thủ công tất cả các phụ thuộc).


12
sẽ cần sử dụng "dpkg" để cài đặt lại trình quản lý gói (và cũng cần phải cài đặt tất cả các phụ thuộc) , do đó, nói cách khác,sudo apt-get remember-what-2002-was-like
user1717828

Bạn không thể khởi động vào một Live CD, sau đó chrootapt-get, giống như Arch không?
Sparhawk

1
@Sparhawk Không chắc chắn những gì bạn đang hướng tới; sau khi bạn chroot, bạn đang ở trong hệ thống gốc bình thường của bạn và sẽ tìm kiếm apt-get ở đó mà bạn đã xóa. Tôi nghĩ apt-get (hoặc có thể là dpkg) cho phép chỉ định một thư mục gốc thay thế, nhưng dường như tôi không thể tìm thấy nhanh chóng cách bạn sẽ làm điều đó.
một CVn

Không có gói nào mà nó loại bỏ là IMO đặc biệt "đáng sợ" ngoại trừ, tất nhiên, chính apt.
Random832

@ MichaelKjorling Tôi đã nghĩ rằng bạn có thể chạy đường dẫn thủ công đến apt-get, cài đặt trong "root" mới, nhưng tôi quên rằng bạn cũng cần tất cả các tệp cấu hình / bộ đệm. Đề nghị có thể của bạn chắc chắn sẽ sạch hơn (nếu có tùy chọn đó).
Sparhawk

12

Một lần, khi tôi chạy CoreUbfox, tôi đã cài đặt gói lỗi từ nguồn aptquyết định lỗi thời apt. Lần sau khi tôi chạy apt autoremove, tôi không thực sự nhìn vào danh sách các phần mềm sẽ bị xóa và aptnằm trong danh sách.

Hãy tưởng tượng sự ngạc nhiên của tôi lần tới khi tôi gõ apt install <package-name>và nhận The program 'apt' is currently not installed. You can install it by typing: sudo apt-get install apt.

May mắn thay, vì một lý do, autoremovekhông loại bỏ bất kỳ của apt'phụ thuộc s vì vậy tất cả tôi phải làm là wget apt' s .deblưu trữ và cài đặt lại sử dụng dpkg -i.


Như được hiển thị trong các câu trả lời khác, nếu bạn xóa apt bằng apt , bạn sẽ gặp nhiều rắc rối hơn vì các phụ thuộc mà nó cố gắng giải quyết.

Tôi thấy nó thú vị nhưng thực sự là như vậy (chắc chắn đối với Debian, và có lẽ Fedora / openSUSE ở một mức độ nào đó?), Nhiều phân phối hiện đại được định nghĩa và xây dựng chủ yếu dựa trên cơ sở hạ tầng được cung cấp bởi người quản lý gói của họ.


5
Tôi cá rằng lý do aptkhông loại bỏ các phụ thuộc là gói lỗi mà bạn đã cài đặt liệt kê chúng theo yêu cầu. Có ý nghĩa nếu gói đó có nghĩa là một sự thay thế.
Dmitry Grigoryev

5

Về mặt kỹ thuật, apt không thể xóa apt ... vì apt không biết cách gỡ bỏ, cài đặt hoặc nâng cấp các gói. Các tác vụ cài đặt, gỡ bỏ, nâng cấp, cấu hình các gói được để lại cho dpkg. Mặc dù bạn có thể yêu cầu apt loại bỏ gói được gọi là "apt", nhưng những gì nó làm là kiểm tra các phụ thuộc ngược của gói apt, hãy lưu ý các gói đó và đặt hàng dpkg để loại bỏ chúng. Đó là những gì có thể được nhìn thấy trong các câu trả lời khác .

Ngay cả khi không apt bạn có thể sử dụng dpkg để cài đặt, gỡ bỏ hoặc nâng cấp bao bì, chỉ rằng nó sẽ đau đớn hơn để theo dõi phụ thuộc và nâng cấp cần thiết, đó là raison d'être của apt.


Vâng, apt thực sự chỉ là một lối vào đơn giản hơn dpkg, và nếu bạn gỡ bỏ dpkgthì nó có thực sự là Ubuntu nữa không?
mèo

@cat Tôi nghĩ nó vẫn sẽ ... miễn là bạn không thanh lọc gói hoặc xóa /var/lib/dpkg/statustệp. Bạn có thể phục hồi dpkg nếu bạn thích quá.
Braiam

1

Tất nhiên bạn có thể. Apt và dpkg là các gói chính chúng, và chúng có nghĩa là có thể được cập nhật thông qua chính chúng, vì vậy có các quy định để loại bỏ; nếu không /var/lib/dpkg/info/dpkg.prerm/var/lib/dpkg/info/dpkg.postrmsẽ không có lý do để tồn tại :)

Nếu bạn vô tình xóa chúng theo cách khiến bạn không có dpkg, bạn vẫn có thể giải nén thủ công kho lưu trữ .deb cho dpkg trừ khi bạn cũng thoát khỏi binutils, tar, gzip / bzip2.

--purgetrên bất kỳ gói nào liên quan đến apt toolchain, mặc dù có thể cung cấp cho bạn các vấn đề khó chịu; khó để nói những gì sở hữu các tập tin nhất định trong /var/lib/dpkg. Nếu /var/lib/dpkg/statusđã bị xóa và không có sao lưu hiện tại, sau đó có, quản lý gói sẽ là vô phương cứu chữa trên hệ thống đó.


-1

Tôi thề tôi đã thấy các apttệp nhị phân /usr/local/bintrên một hệ thống dựa trên Ubuntu cách đây không lâu, nhưng chúng không có trên hệ thống Ubuntu MATE 15.04 hiện tại của tôi (chúng nằm trong /usr/binhầu hết các nhị phân khác). Nếu có /usr/local/binthì có lẽ sẽ không thể gỡ cài đặt được aptvì các tệp trong /usr/local/binđược cho là bị người quản lý gói bỏ qua. Tôi phải thừa nhận rằng đặt apt(và dpkgcả) dưới đây /usr/local/binsẽ là một ý tưởng tốt.

Một câu hỏi thú vị hơn là - điều gì xảy ra nếu bạn gỡ cài đặt dpkg? Chắc chắn, dpkgđược liệt kê dưới dạng một gói apt, nhưng tôi sẽ không thử gỡ cài đặt ngay bây giờ (hiện tại chưa có máy ảo nào được thiết lập). Về mặt lý thuyết người ta cũng có thể gỡ cài đặt nó với dpkgchính nó. Tôi sẽ đoán rằng cách duy nhất để cài đặt lại là làm thủ công, sau đó hy vọng rằng nó sẽ lấy các tệp cấu hình hiện có (vì vậy bạn không phải nói lại hệ thống theo cách thủ công gói nào được cài đặt) và sau đó nói với nó rằng gói đó đã dpkgđược cài đặt lại.


(Một trò đùa :) Tương đương với người dùng Debian # rm -rf /# apt-get purge ".*".


Nếu bất cứ điều gì đến từ gói phân phối chính thức kết thúc bằng / usr / local / bin, hãy gửi một lỗi đối với gói đó.
rackandboneman

Có điều là nó không đến từ một gói hàng; nó được cài đặt riêng biệt với trình quản lý gói với mục đích rõ ràng là tránh các vấn đề "apt-get remove apt" và "apt-get remove dpkg". Tôi nghĩ rằng đó thực sự là Linux Mint, mà tôi đã từng sử dụng làm hệ thống chính của mình.
Micheal Johnson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.