Masalah pertama saya adalah ketika saya mencoba apt-get update
atau apt-get upgrade
. Pada peningkatan, saya mendapatkan kesalahan berikut:
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not installed
E: Unmet dependencies. Try using -f.
Saya mencoba menjalankan apt-get install -f dan ini adalah output (setelah mengatakan ya saat diminta)
(Reading database ... 186183 files and directories currently installed.)
Unpacking linux-image-3.2.0-27-generic (from .../linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb) ...
Done.
dpkg: error processing /var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb (--unpack):
failed in write on buffer copy for backend dpkg-deb during `./boot/System.map-3.2.0-27-generic': No space left on device
No apport report written because the error message indicates a disk full error
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.2.0-27-generic /boot/vmlinuz-3.2.0-27-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.2.0-27-generic /boot/vmlinuz-3.2.0-27-generic
Errors were encountered while processing:
/var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Saya mencoba menjalankan apt-get autoremove
dan itu memberi saya kesalahan yang sama seperti apt-get upgrade
.
Ketika saya berlari df
, saya mendapatkan ini untuk /boot
:
/dev/sda1 233191 230297 0 100% /boot
Jadi, saya membaca di tempat lain bahwa saya harus mencoba membersihkan kernel lama. Saya memeriksa kernel apa yang saya miliki:
$ dpkg -l linux-image-\* | grep ^ii
ii linux-image-2.6.38-13-server 2.6.38-13.52 Linux kernel image for version 2.6.38 on x86_64
ii linux-image-3.0.0-13-server 3.0.0-13.22 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-14-server 3.0.0-14.23 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-15-server 3.0.0-15.26 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-16-server 3.0.0-16.29 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-17-server 3.0.0-17.30 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.2.0-24-generic 3.2.0-24.39 Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii linux-image-3.2.0-25-generic 3.2.0-25.40 Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii linux-image-3.2.0-26-generic 3.2.0-26.41 Linux kernel image for version 3.2.0 on 64 bit x86 SMP
Ketika saya mencoba menghapus yang tertua dengan ini:
$ sudo apt-get purge linux-image-2.6.38-13-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
Bagaimana saya bisa membebaskan atau memperpanjang boot tanpa mengacaukan instalasi saya?
upgrade
apt
partitioning
Strifey16
sumber
sumber
Remove-Unused-Dependencies
tidak default?Jawaban:
Membebaskan Ruang pada Sistem File Root
Untuk membebaskan ruang pada sistem berkas root Anda dapat mencoba untuk mengeksekusi
apt-get clean
.Jika itu tidak berhasil, Anda dapat pergi ke
/var/cache/apt/archives
dan secara manual menghapus beberapa file dari cache untuk mendapatkan ruang kembali, misalnya:Tidak ada ruginya untuk menghapus semua
.deb
file di sini jika Anda perlu - itulah yangapt-get clean
dilakukan. Mereka akan secara otomatis diunduh ulangapt
jika mereka diperlukan lagi.Membebaskan Ruang pada Sistem File / boot
Poster Asli memiliki
/boot
partisi yang terpisah , dan itulah yang penuh dan mencegahapt
sistem bekerja. Penting baginya untuk membebaskan ruang di sana.Jika ada cukup ruang, buka
/boot
dan hapus satu atau dua file konfigurasi:misalnya, tetapi menggunakan nama salah satu versi kernel yang ingin Anda hapus. Ini akan membebaskan sedikit ruang (masing-masing sekitar 144 ribu).
Jika Anda membutuhkan lebih banyak ruang individual menghapus tua
vmlinuz
,initrd
,abi
danSystem.map
file sampai Anda memiliki cukup ruang (sekitar 22m untuk salah satu versi kernel i386 saya).Apa pun yang Anda lakukan, jangan hapus semuanya . Anda setidaknya harus menyimpan dua versi terbaru yang cocok dari setiap jenis file, untuk setiap jenis kernel yang Anda gunakan.
Kemudian lanjutkan dengan perintah instalasi apt-get Anda. Seperti disebutkan di atas, mereka mungkin harus mengunduh ulang beberapa hutang yang Anda hapus, tetapi jika demikian itu akan terjadi secara otomatis. Ketika Anda harus bekerja lagi, bersihkan dengan menggunakan apt-get untuk menghapus paket yang sesuai dengan file yang Anda hapus - jadi semuanya cocok.
File config di
/boot
adalah konfigurasi kernel yang digunakan oleh tim kernel untuk membangun kernel dengan nama yang sama. Seharusnya tidak berbahaya untuk dihapus kecuali jika Anda menginginkannya untuk referensi atau untuk membantu Anda dalam membangun kernel Anda sendiri.Terakhir, Anda secara manual menghapus satu atau dua paket kernel lama dari
/boot
partisi untuk membuat lebih banyak ruang untuk yang baru.sumber
sudo rm
untuk menghapus dari / boot. Sebagai gantinya, gunakansudo dpkg --purge
untuk menghapus beberapa paket linux-image lama. Setelah itu digunakansudo apt-get -f install
untuk memperbaiki ketergantungan yang rusak.rm
bisa digunakan kemudian.Dalam kasus saya,
apt
perintah dandpkg
perintah tidak bisa selesai, dan tidak bisa menghapus. Pembaruan otomatis gagal diinstal2.6.32-56-server
.Langkah pertama saya, adalah mengidentifikasi ruang yang akan digunakan,
Saya memiliki sekitar 30 kernel dan file pendukung.
Saya melakukan
uname -a
untuk mendapatkan kernel yang berjalan, saya mengidentifikasi bahwa saya menggunakan Linux secara alternatif2.6.32-43-server
dan melakukantar
6 dari versi yang tidak berjalan, dan sudah tua.Saya kemudian melakukan
rm -rf
apa yang telah saya backup:Saya menunjukkan perintah ini sebagai contoh, Anda harus memutuskan apa yang akan Anda kerjakan untuk situasi Anda.
Sekarang saya memiliki beberapa ruang
/boot
, saya bisa berlariUntuk membersihkan instalasi gagal
2.6.32-56-server
.Saya kemudian melakukan
Ini memberi saya ruang untuk mengembalikan apa yang telah saya backup.
Untuk membersihkan, saya kemudian dapat menjalankan:
Saya reboot dan sekarang saya menggunakan 4% dari
/boot
.sumber
Anda bisa menggunakan
dpkg
alih-alihapt-get
menghapus kernel yang lebih lama:sumber
/boot
partisi terpisah ).Saya perhatikan masih ada beberapa file dari versi lama di direktori boot:
Dan manajer paket akan mencantumkan versi lama:
Karena itu saya menggunakan perintah ini (
autoremove
juga akan menghapus lebih banyak gambar terbaru yang tidak ingin saya hapus)Saya masih memiliki beberapa header:
Jadi saya melakukan ini:
Akhirnya ada satu paket lagi yang tidak bisa saya hapus dengan apt-get purge:
Sumber: Hapus paket yang ditandai sebagai rc oleh dpkg
sumber
Periksa penggunaan
/var/tmp
dengandu -sh /var/tmp/
. Semua file dalam folder itu dapat dihapus untuk membuat ruang.Anda kemudian dapat menjalankan yang berikut untuk menghapus kernel lama:
sumber
/var/tmp
hubungannya dengan kernel lama? Dan tidak selalu aman untuk menghapus semuanya di/var/tmp
...Inilah yang saya gunakan:
Lakukan itu untuk semua kernel lama dan simpan hanya dua yang terbaru.
Jika Anda ingin secara otomatis menghapus kernel lama dan memperbarui GRUB lihat ini: Dokumentasi Ubuntu
sumber
Saya menemukan bahwa satu-satunya hal yang berhasil bagi saya adalah menggunakan Aptitude.
Kemudian ketika terbuka biasanya akan mengatakan sesuatu tentang dependensi yang belum terpenuhi di bagian bawah. Anda dapat menekan huruf
g
untuk melanjutkan dengan penghapusan yang disarankan. Ini akan membawa Anda ke halaman di mana ia mencantumkan apa yang akan terjadi.Seharusnya ada minus di
-
sebelah kernel yang rusak. Tekang
lagi dan itu akan menghapus kernel yang rusak. Tekanq
untuk berhenti. Maka Anda harus dapat menggunakansudo apt-get autoremove
untuk menyingkirkan kernel lama dan membebaskan ruang.sumber
Anda tidak bisa menindaklanjuti paket, tetapi Anda bisa bertindak atas file lain. Pertama, buka folder rumah Anda dan lihat apakah ada sesuatu yang dapat Anda hapus. Jika tidak, cobalah untuk memindahkan sejumlah file ke partisi lain (atau flash drive) dan kemudian mencoba
sudo apt-get install -f
untuk membersihkan masalah ketergantungan paket (kemungkinan besar Anda menginstal file deb.dpkg
), Dan kemudian bersihkan kernel lama. Setelah Anda memiliki setidaknya 10 MB dengan aman, cobalah membersihkan perangkat lunak atau file yang tidak dibutuhkan.sumber
Gunakan Pengelola Paket Synaptic. Pilih saja paket yang ingin Anda hapus dan itu akan meminta Anda untuk juga menghapus paket yang bergantung padanya. Dalam pengalaman saya, paket kernel selalu datang dalam kelompok dua (atau lebih, tergantung pada bagaimana Anda menghitung) yang saling tergantung. Anda biasanya dapat menemukan yang lama dengan cepat menggunakan filter "lokal / usang".
sumber
Saya telah berjuang dengan masalah ini dari waktu ke waktu, dan masih belum melihat solusi yang benar-benar melakukan pekerjaan penuh. Dalam beberapa kasus, menghapus kernel lama berakhir dengan dependensi yang menghentikan saya menghapus apa pun dan saya harus menghapus kernel secara manual dari / boot. Namun, saya masih ingin melakukan pekerjaan penuh karena saya membayangkan kernel yang dihapus secara manual dicatat di suatu tempat dan dapat menyebabkan masalah di masa depan, ketika sesuatu melaporkan file yang hilang karena saya duduk melakukan rm-rf pada file.
Jadi saya menulis skrip ini, berdasarkan banyak saran Google di sini yang tidak memerlukan instalasi lebih lanjut dari sesuatu. Script telah dimodifikasi beberapa kali untuk mendukung beberapa situasi "tak terduga" saya sendiri. Sebagai contoh, menjalankan ini pada raspberry pi, pembaruan-grub mungkin tidak ada. Dan dalam beberapa kasus ketika menjalankan pembaruan terakhir, server macet dengan IPv6 di mana beberapa situs tidak terjangkau.
Script mencari tahu apakah ia harus menghapus kernel yang benar-benar macet karena ketergantungan membangun, atau jika bisa melakukannya dengan cara "benar".
sumber
Cukup menjalankan
sudo apt-get -f autoremove
menyelesaikan masalah saya.sumber
/dev/sda1
sudah terpasang/
Jalankan ini:
Sumber: Saya mendapatkan kesalahan ini setelah peningkatan. tolong bantu
sumber
apt
akan gagal menghapus paket kernel karena proses penghapusan itu sendiri menghasilkan file/boot
, yang sudah penuh. Itu sebabnyaapt-get autoremove
gagal. Pertanyaan yang Anda cari adalah askubuntu.com/q/142926/158442 , yang sudahautoremove
terdaftar.Saya telah melihat beberapa artikel di / boot penuh yang tidak diselesaikan dengan membersihkan kernel linux lama, karena apt-get -f install atau apt-get -f autoremov e menginstal ulang kernel.
Dalam kasus saya, setidaknya, paket yang ditandatangani dan tambahan juga perlu dihapus - kernelnya adalah dependensi untuk paket-paket ini sehingga perlu diinstal ulang. Secara umum, paket kernel terkait harus dibersihkan sebelum memanggil 'install'. Jika Anda mencoba apt-get upgrade segera setelah membersihkan, pesan kesalahan seharusnya mengatakan paket mana yang memiliki ketergantungan yang belum terpenuhi dari kernel yang baru saja Anda bersihkan.
Dalam kasus saya, taktik berikut berhasil:
sumber
Instal alat linux-purge seperti ini .
Kemudian jalankan di terminal:
Kemudian lanjutkan menghapus kernel dengan misalnya
Tambahan:
Jika Anda ingin menggunakan linux-purge untuk menghapus kernel tanpa pengawasan alih-alih menggunakan upgrade tanpa pengawasan untuk itu, Anda harus menonaktifkan penghapusan hal-hal yang tidak terpakai dengan mengedit /etc/apt/apt.apt.conf.d/50unattended-upgrades, dan mengatur layanan systemd mengeksekusi
kapanpun kamu mau.
sumber