TL; DR atau "Just scorch my pi"
sudo apt-get remove --auto-remove --purge 'libx11-.*'
sudo apt-get autoremove --purge
(Ulangi apt-get autoremove --purge
sampai tidak ada anak yatim yang tersisa)
Penjelasan lebih lanjut
Jika paket foo bergantung pada paket libfoo lain dan Anda menghapus paket libfoo , dependen ( foo ) juga dihapus. Karena Foo memiliki tergantung garis menentukan libfoo , itu akan rusak untuk meninggalkan foo jika libfoo telah dihapus. Kebalikannya tidak benar: menghapus foo tidak menghapus libfoo secara otomatis. Paket xfoo lain mungkin juga bergantung pada libfoo, jadi apt tidak hanya menghapusnya (walaupun apt akan melacak jika diinstal hanya sebagai efek samping dari menginstal foo dan menawarkan untuk menghapusnya secara otomatis jika Anda memintanya, selama tidak ada orang lain yang bergantung padanya)
Paket-paket meta bergantung pada sekumpulan paket lain dengan cara yang sama seperti foo bergantung pada libfoo , jadi ketika Anda menghapus paket meta, sedikit saja yang biasanya dihapus. Sebagai contoh, mungkin ada dua paket meta yang bergantung pada xterm (mungkin lxsession dan xfsession), tetapi menghapus satu atau keduanya tidak akan menghapus instalan xterm karena xterm tidak rusak tanpa lxsession atau xfsession. Paket meta umumnya di atas pohon dependensi, bukan di bawah, dan beberapa hal cenderung bergantung langsung pada meta-paket. Meta-paket terutama menyediakan cara mudah untuk menginstal satu set paket yang masuk akal sekaligus, tetapi mereka tidak menghapus alat.
Jadi, jika Anda ingin menghanguskan semua yang bergantung pada X11, Anda harus menargetkan kumpulan dasar pustaka libx11 yang pada akhirnya semua aplikasi x11 harus bergantung pada:
sudo apt-get remove --dry-run --auto-remove --purge 'libx11-.*'
sudo apt-get autoremove --dry-run --purge
Ini akan (mensimulasikan) menghapus semua yang akhirnya bergantung pada libx11 -. *, Dan juga akan menghapus paket apa pun yang diinstal sebagai dependensi program X11 bahkan jika mereka tidak secara langsung bergantung pada X11 itu sendiri (CUPS dan Ghostscript biasanya diinstal sebagai efek samping dari menginstal lingkungan desktop). Perintah kedua akan menghapus anak yatim berikutnya sampai tidak ada yang tersisa. Hapus "--auto-hapus" jika Anda ingin melakukan langkah ini nanti atau tidak melakukannya sama sekali, atau cukup tambahkan kembali paket secara manual setelah membersihkan GUI.
Hapus opsi --dry-run untuk benar-benar melakukan operasi setelah Anda memeriksa bahwa itu tidak akan menghapus paket yang tidak ingin Anda hapus.)
Saya lebih suka membersihkan dan membersihkan efek samping, dan menambahkannya kembali sesuai kebutuhan. Juga, saya pergi ke depan dan menguji ini pada pi saya sendiri, dan reboot ke server yang sangat sederhana tetapi fungsional. :)
Mengapa menghapus menginstal sesuatu?
Strategi di atas memecahkan masalah yang disebutkan, tetapi masih ada rasa ingin tahu mengapa operasi penghapusan menghasilkan paket yang diinstal .
Di jantung setiap manajer paket adalah pemecah kepuasan dari beberapa jenis. Ketika Anda memberi tahu manajer paket untuk menginstal beberapa paket, menghapus beberapa paket, atau memutakhirkan beberapa paket, yang benar-benar Anda minta lakukan adalah menyelesaikan keadaan instalasi perangkat lunak yang diinginkan berikutnya dengan serangkaian paket yang tersedia. Solusi ini mungkin termasuk menginstal paket tambahan (dependensi), menghapus paket yang ada (konflik, jeda), menurunkan versi / meningkatkan paket tertentu (tingkat kompatibilitas), atau kombinasi keduanya. Jadi, sementara itu agak berlawanan dengan intuisi bahwa pemecah menentukan bahwa beberapa paket perlu diinstal agar paket lain dihapusMasuk akal. Ini adalah masalah manajemen ketergantungan buruk yang dipecahkan oleh manajer paket.
Contoh konkret: Diberikan satu set aplikasi Java yang sudah diinstal, semuanya tergantung pada runtime yang kompatibel dengan java yang saat ini kebetulan openjdk-7-jre . Anda kemudian meminta manajer paket untuk memecahkan instalasi alat Java baru yang menyatakan suatu konflik dengan openjdk-7-jre tetapi bekerja dengan oracle-7-jre (kedua paket umum memberikan sebuah java-7-runtime ). Solver akan mengusulkan penghapusan dari openjdk-7-jre dan menginstal dari oracle-java-7-jresebagai solusi untuk keadaan yang Anda inginkan agar paket baru diinstal tanpa merusak paket yang ada.
Dalam hal ini spesifik kasus, xterm adalah paket yang menyediakan dependensi virtual yang disebut x-terminal-emulator ( xterm , lxterminal , dan aterm semua memberikan sebuah x-terminal-emulator ), sehingga kemungkinan bahwa dalam menghilangkan lxterminal (sebagai bagian dari menghapus lxde), solver menemukan paket terinstal yang ada ( transcode sebagai contoh yang mungkin) yang memerlukan beberapa jenis x-terminal-emulator , sehingga solver memilih untuk menginstal xterm (yang memerlukan libutempter0 dan xbitmaps, menjelaskan paket-paket lain untuk diinstal) untuk memenuhi ketergantungan yang rusak. Tanpa melihat paket database, saya akan berhipotesis bahwa ini adalah skenario yang paling mungkin.
Untuk menemukan paket yang saat ini bergantung pada xterm (atau alternatif), gunakan perintah apt-cache rdepends (menggunakan sakelar --installed untuk membatasi hanya paket yang diinstal):
$ apt-cache --installed rdepends xterm
xterm
Reverse Depends:
|xorg
clusterssh
|xinit
|tk8.5
|tk8.4
|transcode
Ketergantungan yang dimulai dengan karakter alternatif '|' berarti bahwa paket tergantung pada xterm atau sesuatu yang disediakannya (bahwa ada sesuatu x-terminal-emulator dalam kasus ini). The clusterssh paket tergantung pada xterm eksplisit , dan tidak memungkinkan untuk alternatif. Ini adalah daftar pendek dari paket-paket yang menyebabkan xterm diperlukan.
Bagaimana dengan deborphan?
Fungsionalitas pelacakan anak yatim dimasukkan ke dalam apt-get melalui fungsionalitas 'autoremove' pada tahun 2010 (Debian bug 582791 ) yang menjadikan deborphan sebagian besar berlebihan dan pada dasarnya usang. Tidak seperti deborphan dan solusi lain seperti itu, apt-get langsung melacak paket mana yang diinstal secara eksplisit dan paket mana yang diinstal sebagai efek samping atau ketergantungan dari paket yang diinstal secara eksplisit. Misalnya, jika administrator menginstal foo, libfoo diinstal sebagai efek samping dan apt-get autoremove akan , pada kenyataannya, menghapus libfoo jika autoremove (atau --auto-remove) ditentukan saat menghapus foo.
Pendekatan yang diambil oleh deborphan adalah kumpulan tebakan. Misalnya, tebakan bahwa pustaka terinstal yang tidak memiliki dependen harus berupa anak yatim: Jika libfoo diinstal, tetapi bukan foo atau xfoo , deborphan dapat memutuskan bahwa itu haruslah yatim piatu. Satu mode kegagalan di sini adalah bahwa perpustakaan mungkin secara khusus diinstal untuk alat yang mereka sediakan (libxml2 untuk xmllint sebelum dipaket ulang menjadi libxml2-utils) atau hanya tersedia untuk tujuan pengembangan. Paket seperti itu bukan yatim piatu. Selain itu, deborphan berfokus pada perpustakaan, sehingga merindukan sejumlah anak yatim non-perpustakaan yang sesuai trek (paket usang vs paket yatim) .
munin
karena beberapa alasan, tetapi saya bisa mengembalikannya dengan cukup mudah setelahnya.'libx11-.*'
untuk mencegah shell dari globbing.apt-get remove
yang diinginkannyainstall
xterm
dan dua lainnya. Saya juga pernah mengalami ini dan tidak bisa menyelesaikannya.rootfs ... 94% /
. Setelah apt-get remove --auto-remove --purge libx11 -. *:rootfs ... 51% /
Jawaban yang bagus, terima kasih banyak!rootfs ... 41% /
...Baris pertama menginstal
deborphan
yang akan menghapus semua paket yatim.Baris kedua menghapus paket inti dari sistem X11 LXDE, Samba (Windows File Sharing), font, Gnome, dan hal-hal lain yang berkaitan dengan lingkungan desktop Raspberry Pi.
Baris ketiga menghapus semua paket yatim yang terdeteksi oleh deborphan.
Baris keempat menghapus semua paket yang tidak dibutuhkan.
Baris kelima membersihkan cache paket.
sumber
1 /. Untuk menghapus semua desktop yang baru saja saya lakukan (pergi membuat sepoci kopi. Berjalan-jalanlah ini akan memakan waktu cukup lama) ...
apt-get remove --auto-remove --purge libx11-.*
2 /. Kemudian saya menginstal deborphan untuk menyingkirkan file yatim ...
sudo apt-get install deborphan
Jika Anda ingin melihat apa yang telah yatim piatu, lakukan ini ...
deborphan -sz
3 /. Lalu saya menghapus semua file yatim ...
sudo apt-get remove --purge $(deborphan)
Akhirnya lakukan ini untuk menghapus paket yang tidak perlu yang tidak yatim ...
sudo apt-get autoremove
Hasil akhir: Tanpa kepala dan bersih seperti peluit
sumber
apt-get remove --dry-run
tidak melakukan apa pun , tetapi mencetak pesan di layar.Memiliki lihat di sini tapi gulir ke bawah ke bagian tentang
tasksel
.Berjalan
tasksel --list-tasks
di pi melalui wifi ssh memberi saya (setelah sekitar 30 detik):Jadi,
tasksel remove desktop
harus melakukan apa yang Anda inginkan [lihat komentar] . Halaman manual sedikit singkat dan misterius, mungkin karena tasksel sebagian besar ditujukan untuk pengelola debian. Jika ini berhasil, beri tahu kami;)sumber
tasksel
, meskipun saya memiliki cukup banyak pengalaman Ubuntu. Sayangnya saya mencoba ini, butuh beberapa saat untuk menjalankanremove desktop
perintah tetapi semua paket "grafis" itu masih adaaptitude
.tasksel
tanpa opsi). Cukup yakin sekarang 'u' berarti metapackages tidak diinstal, dan jika Anda menginstal 'desktop', Anda akan mendapatkan lebih dari sekadar versi lxde wiki.debian.org/tasksel Jadi tidak ada dadu. Saya melihat metapackage "xorg" dariapt-cache search metapackage
sebenarnya tidak diinstal juga. Salahkan raspbians kurasa.Atau, Anda dapat mencoba gambar minimal Raspbian ini: http://www.linuxsystems.it/raspbian-wheezy-armhf-raspberry-pi-minimal-image/
sumber
Berdasarkan informasi tasksel, dimungkinkan untuk mengetahui, bahwa ada tugas-paket meta-desktop, yang merujuk semua paket terkait GUI lainnya. Jadi hanya
Ini akan menghapus banyak paket lain (terkait GUI / Desktop).
Latar Belakang: nama paket
task-desktop
dapat ditemukan dengan menjalankan perintah tasksel berikut:sumber
Pilihan lain adalah menggunakan aptitude yang harus selalu Anda sukai, jika Anda akan melakukan lebih dari sekadar menginstal atau menghapus beberapa paket.
Mulai aptitude sebagai root dengan mengetik
sudo aptitude
. Dalam tampilan Paket standar aptitude entri daftar terakhir adalahTasks
di mana Anda dapat memilih berbagai opsi yang terdaftar oleh tasksel. Menavigasi item denganj
,k
danenter
. Tandai item yang akan dihapus dengan memasukkan_
(garis bawah) pada item yang disorot. Ini hanya menyiapkan tindakan. Untuk menjalankan tindakan, tekang
.Baca tentang kecakapan dalam manual debian .
sumber
Ketikkan kode ini:
sumber
purge
en lieuremove
?