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]
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 tanpasudo 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).
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 wgetapt' s .debarsip dan instal ulang menggunakan dpkg -i.
Seperti yang ditunjukkan dalam jawaban lain, jika Anda menghapus aptdenganapt , 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.
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.
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.
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 ".*".
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.
# dnf remove dnf Dependencies resolved. Error: The operation would result in removing the following protected packages: dnf.
Jawaban:
APT memungkinkan Anda mensimulasikan perintah Anda menggunakan opsi
-s
. Anda dapat mencoba ini sendiri, mengeluarkan perintahapt-get -s remove apt
(tidaksudo
diperlukan).Ini menghasilkan output berikut:
Jadi jawabannya harus: ya, Anda bisa.
sumber
sudo
(-s
mode tidak membuat perubahan), jadi mungkin lebih baik untuk menjalankannya tanpasudo
tindakan pencegahan.Kamu bisa...
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).
sumber
sudo apt-get remember-what-2002-was-like
chroot
danapt-get
, seperti halnya Arch?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).Suatu ketika, kembali ketika saya menjalankan CoreUbuntu, saya menginstal paket buggy dari sumber yang
apt
memutuskan usangapt
. Lain kali saya berlariapt autoremove
, saya sebenarnya tidak melihat daftar perangkat lunak yang akan dihapus danapt
ada dalam daftar.Bayangkan keterkejutan saya saat saya mengetik
apt install <package-name>
dan menerimaThe program 'apt' is currently not installed. You can install it by typing: sudo apt-get install apt
.Untungnya, untuk beberapa alasan,
autoremove
tidak menghapus salahapt
's dependensi sehingga semua saya harus lakukan adalahwget
apt
' s.deb
arsip dan instal ulang menggunakandpkg -i
.Seperti yang ditunjukkan dalam jawaban lain, jika Anda menghapus
apt
denganapt
, 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.
sumber
apt
tidak menghapus dependensi adalah bahwa paket kereta yang telah Anda instal mencantumkannya sesuai kebutuhan. Masuk akal jika paket itu dimaksudkan sebagai pengganti.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.
sumber
dpkg
, dan jika Anda menghapusdpkg
maka apakah itu benar-benar Ubuntu lagi?/var/lib/dpkg/status
file. Anda dapat memulihkan dpkg jika suka juga.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.prerm
dan/var/lib/dpkg/info/dpkg.postrm
tidak 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.
--purge
pada 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/status
terhapus dan tidak ada cadangan saat ini, maka ya, manajer paket akan diperbaiki pada sistem itu.sumber
Saya bersumpah telah melihat
apt
binari di bawah/usr/local/bin
pada sistem berbasis Ubuntu belum lama ini, tetapi mereka tidak ada di sistem Ubuntu MATE 15.04 saya saat ini (mereka/usr/bin
menggunakan sebagian besar binari lainnya). Jika sudah masuk/usr/local/bin
maka mungkin tidak akan mungkin untuk menghapus denganapt
karena file di/usr/local/bin
seharusnya diabaikan oleh manajer paket. Saya harus mengakui bahwa menempatkanapt
(dandpkg
juga) di bawah/usr/local/bin
akan menjadi ide yang baik.Pertanyaan yang lebih menarik adalah - apa yang terjadi jika Anda menghapus instalan
dpkg
? Benar saja,dpkg
terdaftar sebagai paket olehapt
, tapi saya tidak akan mencoba mencopotnya sekarang (belum ada mesin virtual yang disiapkan saat ini). Secara teoritis kita juga bisa menghapusnya dengandpkg
sendirinya. 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 paketdpkg
itu sekarang diinstal lagi.(Lelucon :) Setara dengan pengguna Debian
# rm -rf /
adalah# apt-get purge ".*"
.sumber