Bisakah saya menghapus apt dengan apt?

45

Saya tahu bahwa saya dapat menggunakan apt-get remove <package>untuk menghapus suatu program.

Tetapi aptprogram itu sendiri. Bisakah saya gunakan apt-get remove aptuntuk menghapusnya, atau bingung sebagian?

Tim
sumber
2
Apakah itu pertanyaan aktual atau hanya hipotesis? Dalam kasus 1: Cobalah. Lain: Saya pikir itu harus dapat membersihkan dirinya sendiri jika tidak mencoba untuk meluncurkan komponennya setelah menghapusnya. File yang sudah dibuka dapat dihapus tanpa masalah.
Byte Commander
@ByteCommander Keduanya, tapi saya tidak bisa mencobanya sekarang.
Tim
13
Anda bisa tetapi Anda mungkin tidak seharusnya . Linux jarang bertanya mengapa penggunanya ingin menembak diri mereka sendiri, itu hanya mengasumsikan Anda memiliki alasan yang bagus dan memungkinkan Anda menarik pelatuknya ...
Shadur
1
Untuk kelengkapan, Fedoras 'dnf tidak akan membiarkan Anda melakukannya. # dnf remove dnf Dependencies resolved. Error: The operation would result in removing the following protected packages: dnf.
Davidmh
Sungguh pertanyaan jahat yang menarik! Tindak lanjut yang logis adalah: dapatkah Anda memulihkannya, atau perlu instalasi ulang yang lengkap?
KlaymenDK

Jawaban:

78

APT memungkinkan Anda mensimulasikan perintah Anda menggunakan opsi -s. Anda dapat mencoba ini sendiri, mengeluarkan perintah apt-get -s remove apt(tidak sudodiperlukan).

Ini menghasilkan output berikut:

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]

Jadi jawabannya harus: ya, Anda bisa.

cauon
sumber
8
Saya tidak yakin bahwa mode simulasi apt mencakup dampak penuh untuk sesuatu seperti ini. Tentunya ini akan menjadi kasus tepi bahwa kode mungkin atau mungkin tidak diatasi.
Sparhawk
12
Ini tidak memerlukan sudo( -smode tidak membuat perubahan), jadi mungkin lebih baik untuk menjalankannya tanpa sudo tindakan pencegahan.
Nama Palsu
3
Apt mungkin bisa menentukan cara menghapus apt. Tapi bisakah itu benar-benar melakukannya? Sangat mudah untuk membayangkan bahwa itu mungkin menghapus file yang nantinya tergantung, meninggalkan instalasi dalam keadaan tidak konsisten.
user253751
1
@ imibis saya akan lebih khawatir tentang itu untuk menghapus dpkg. Apt sendiri hanya memberi tahu dpkg apa yang harus dilakukan, dpkg adalah apa yang sebenarnya melakukan instalasi (un).
Random832
1
Jadi jika apt memberitahu dpkg apa yang harus dilakukan, apa yang terjadi ketika Anda menghapus dpkg ... lol
SuperSluether
30

Kamu bisa...

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) ...

dan akan diperingatkan Anda akan melakukan sesuatu yang sangat merusak. Saya harus mengatakan ... daftar paket terlihat mengerikan untuk menghemat ruang kurang dari 6000 kb: D

Itu selesai tetapi tidak ada jalan kembali menggunakan "apt-get". Ubuntu Software Center tidak lagi berfungsi dan Anda harus menggunakan "dpkg" untuk menginstal ulang manajer paket (dan secara manual juga perlu menginstal semua dependensi).

Rinzwind
sumber
12
akan perlu menggunakan "dpkg" untuk menginstal ulang manajer paket (dan secara manual juga perlu menginstal semua dependensi) , jadi dengan kata lain,sudo apt-get remember-what-2002-was-like
user1717828
Tidak bisakah Anda mem-boot ke Live CD, lalu chrootdan apt-get, seperti halnya Arch?
Sparhawk
1
@Sparhawk Tidak yakin apa yang Anda tuju; setelah chroot, Anda berada di root sistem normal Anda, dan akan mencari apt-get sana, yang Anda hapus. Saya pikir apt-get (atau mungkin itu dpkg) memungkinkan menentukan direktori root alternatif, tetapi saya tidak bisa menemukan dengan cepat bagaimana Anda akan melakukannya.
CVn
Tak satu pun dari paket yang dihapusnya adalah IMO yang "menakutkan" kecuali, tentu saja, tepat untuk dirinya sendiri.
Random832
@ MichaelKjörling Saya berpikir bahwa Anda dapat menjalankan jalur manual apt-get, menginstal di "root" baru, tapi saya lupa bahwa Anda akan memerlukan semua file config / cache juga. Saran Anda yang mungkin tentu akan lebih bersih (jika ada opsi itu).
Sparhawk
12

Suatu ketika, kembali ketika saya menjalankan CoreUbuntu, saya menginstal paket buggy dari sumber yang aptmemutuskan usang apt. Lain kali saya berlari apt autoremove, saya sebenarnya tidak melihat daftar perangkat lunak yang akan dihapus dan aptada dalam daftar.

Bayangkan keterkejutan saya saat saya mengetik apt install <package-name>dan menerima The program 'apt' is currently not installed. You can install it by typing: sudo apt-get install apt.

Untungnya, untuk beberapa alasan, autoremovetidak menghapus salah apt's dependensi sehingga semua saya harus lakukan adalah wget apt' s .debarsip dan instal ulang menggunakan dpkg -i.


Seperti yang ditunjukkan dalam jawaban lain, jika Anda menghapus apt dengan apt , Anda akan berada dalam lebih banyak masalah karena dependensi yang dicoba untuk diselesaikan.

Saya menemukan itu menarik tetapi memang demikian halnya (tentu untuk Debian, dan mungkin Fedora / openSUSE sampai batas tertentu?) Banyak distro modern didefinisikan dan dibangun sebagian besar di atas infrastruktur yang disediakan oleh manajer paket pilihan mereka.

kucing
sumber
5
Saya yakin alasannya apttidak menghapus dependensi adalah bahwa paket kereta yang telah Anda instal mencantumkannya sesuai kebutuhan. Masuk akal jika paket itu dimaksudkan sebagai pengganti.
Dmitry Grigoryev
5

Secara teknis, apt tidak dapat menghapus apt ... karena apt tidak tahu cara menghapus, menginstal atau memutakhirkan paket. Tugas menginstal, menghapus, memutakhirkan, mengonfigurasi paket diserahkan ke dpkg. Meskipun Anda dapat memberitahu apt untuk menghapus paket yang disebut "apt", yang dilakukannya adalah memeriksa dependensi kebalikan dari paket apt, perhatikan paket-paket itu dan pesan dpkg untuk menghapusnya. Itulah yang dapat dilihat pada jawaban lainnya .

Bahkan tanpa apt Anda dapat menggunakan dpkg untuk menginstal, menghapus, atau memutakhirkan paket, hanya saja akan lebih menyakitkan untuk melacak dependensi dan peningkatan yang diperlukan, yang merupakan alasan utama apt.

Braiam
sumber
Ya, apt benar-benar hanya sebuah frontend yang lebih sederhana dpkg, dan jika Anda menghapus dpkgmaka apakah itu benar-benar Ubuntu lagi?
kucing
@cat Saya pikir itu masih akan ... selama Anda tidak membersihkan paket atau menghapus /var/lib/dpkg/statusfile. Anda dapat memulihkan dpkg jika suka juga.
Braiam
1

Tentu saja Anda bisa. Apt dan dpkg adalah paket itu sendiri, dan itu dimaksudkan untuk dapat diperbarui melalui diri mereka sendiri, jadi ada ketentuan untuk dihapus; jika tidak /var/lib/dpkg/info/dpkg.prermdan /var/lib/dpkg/info/dpkg.postrmtidak akan ada alasan untuk ada :)

Jika Anda secara tidak sengaja menghapusnya dengan cara yang membuat Anda tanpa dpkg, Anda masih bisa membongkar arsip .deb secara manual untuk dpkg kecuali Anda juga menyingkirkan binutils, tar, gzip / bzip2.

--purgepada paket apa pun yang terlibat dengan apt toolchain bisa memberi Anda masalah buruk; sulit untuk mengetahui di mana memiliki file tertentu /var/lib/dpkg. Jika /var/lib/dpkg/statusterhapus dan tidak ada cadangan saat ini, maka ya, manajer paket akan diperbaiki pada sistem itu.

pemeras
sumber
-1

Saya bersumpah telah melihat aptbinari di bawah /usr/local/binpada sistem berbasis Ubuntu belum lama ini, tetapi mereka tidak ada di sistem Ubuntu MATE 15.04 saya saat ini (mereka /usr/binmenggunakan sebagian besar binari lainnya). Jika sudah masuk /usr/local/binmaka mungkin tidak akan mungkin untuk menghapus dengan aptkarena file di /usr/local/binseharusnya diabaikan oleh manajer paket. Saya harus mengakui bahwa menempatkan apt(dan dpkgjuga) di bawah /usr/local/binakan menjadi ide yang baik.

Pertanyaan yang lebih menarik adalah - apa yang terjadi jika Anda menghapus instalan dpkg? Benar saja, dpkgterdaftar sebagai paket oleh apt, tapi saya tidak akan mencoba mencopotnya sekarang (belum ada mesin virtual yang disiapkan saat ini). Secara teoritis kita juga bisa menghapusnya dengan dpkgsendirinya. Saya akan menebak bahwa satu-satunya cara untuk menginstal ulang adalah dengan melakukannya secara manual, kemudian berharap bahwa itu mengambil file konfigurasi yang ada (jadi Anda tidak perlu secara manual memberitahu sistem lagi paket apa yang diinstal) dan kemudian katakan bahwa paket dpkgitu sekarang diinstal lagi.


(Lelucon :) Setara dengan pengguna Debian # rm -rf /adalah # apt-get purge ".*".

Micheal Johnson
sumber
Jika ada yang datang dari paket distribusi resmi berakhir di / usr / local / bin, ajukan bug pada paket itu.
rackandboneman
Masalahnya adalah itu tidak berasal dari paket; itu diinstal secara terpisah dari manajer paket dengan tujuan untuk menghindari masalah "apt-get remove apt" dan "apt-get remove dpkg". Saya pikir itu sebenarnya Linux Mint, yang dulu saya gunakan sebagai sistem utama saya.
Micheal Johnson