dpkg: masalah ketergantungan mencegah konfigurasi initramfs-tools

10

Saya memulai pemutakhiran sistem Kubuntu 12.04 saya dengan perintah ini, seperti biasa:

sudo apt-get --show-upgraded dist-upgrade

Saya kembali lagi kemudian dan gagal:

Preconfiguring packages ...
(Reading database ... 478306 files and directories currently installed.)
Preparing to replace  ...
Unpacking replacement base-files ...
Processing triggers for man-db ...
Processing triggers for install-info ...
...
Processing triggers for initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-3.8.0-32-lowlatency

gzip: stdout: No space left on device
E: mkinitramfs failure cpio 141 gzip 1
update-initramfs: failed for /boot/initrd.img-3.8.0-32-lowlatency with 1.
dpkg: error processing initramfs-tools (--unpack):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)

inilah masalahnya: $ df -h output:

Filesystem                    Size  Used Avail Use% Mounted on
/dev/sda1                     894M  879M     0 100% /boot

secara manual menghapus file yang lebih lama dan sekarang sebagian ruang kosong

Filesystem                    Size  Used Avail Use% Mounted on
/dev/sda1                     894M  129M  717M  16% /boot

Saya menjalankan ini selanjutnya:

sudo apt-get autoremove

Lanjut:

sudo apt-get -f install keluaran:

The following extra packages will be installed:
  initramfs-tools
The following packages will be upgraded:
  initramfs-tools

dpkg: dependency problems prevent configuration of initramfs-tools:
 initramfs-tools depends on initramfs-tools-bin (<< 0.99ubuntu13.3.1~); however:
  Version of initramfs-tools-bin on system is 0.99ubuntu13.4.
dpkg: error processing initramfs-tools (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                         Errors were encountered while processing:
 initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)

sudo apt-get install initramfs-tools
di atas gagal

dpkg -l initramfs-tools keluaran:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version        Description
+++-==============-==============-============================================
iF  initramfs-tool 0.99ubuntu13.3 tools for generating an initramfs

sudo apt-get install --reinstall initramfs-tools keluaran:

The following packages will be upgraded:
  initramfs-tools
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 0 B/49.2 kB of archives.
After this operation, 0 B of additional disk space will be used.
dpkg: dependency problems prevent configuration of initramfs-tools:
 initramfs-tools depends on initramfs-tools-bin (<< 0.99ubuntu13.3.1~); however:
  Version of initramfs-tools-bin on system is 0.99ubuntu13.4.
dpkg: error processing initramfs-tools (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                         Errors were encountered while processing:
 initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)

Ini adalah output dari apt-cache policy initramfs-tools-bin initramfs-tools:

initramfs-tools-bin:
  Installed: 0.99ubuntu13.4
  Candidate: 0.99ubuntu13.4
  Version table:
 *** 0.99ubuntu13.4 0
        500 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
        100 /var/lib/dpkg/status
     0.99ubuntu13 0
        500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
initramfs-tools:
  Installed: 0.99ubuntu13.3
  Candidate: 0.99ubuntu13.4
  Version table:
     0.99ubuntu13.4 0
        500 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
 *** 0.99ubuntu13.3 0
        100 /var/lib/dpkg/status
     0.99ubuntu13 0
        500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

Seperti yang disarankan di bawah ini, berikut adalah langkah saya selanjutnya:

$ sudo apt-get update
$ sudo apt-get -f install initramfs-tools=0.99ubuntu13 initramfs-tools-bin=0.99ubuntu13

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  ...
Use 'apt-get autoremove' to remove them.
The following packages will be DOWNGRADED:
  initramfs-tools initramfs-tools-bin
0 upgraded, 0 newly installed, 2 downgraded, 0 to remove and 4 not upgraded.
1 not fully installed or removed.
Need to get 59.2 kB of archives.
After this operation, 2,048 B disk space will be freed.
Do you want to continue [Y/n]? 
Get:1 http://us.archive.ubuntu.com/ubuntu/ precise/main initramfs-tools all 0.99ubuntu13 [49.2 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu/ precise/main initramfs-tools-bin amd64 0.99ubuntu13 [9,988 B]
Fetched 59.2 kB in 0s (124 kB/s)            
dpkg: warning: downgrading initramfs-tools-bin from 0.99ubuntu13.4 to 0.99ubuntu13.
(Reading database ... 478624 files and directories currently installed.)
Preparing to replace initramfs-tools-bin 0.99ubuntu13.4 (using .../initramfs-tools-bin_0.99ubuntu13_amd64.deb) ...
Unpacking replacement initramfs-tools-bin ...
Setting up initramfs-tools-bin (0.99ubuntu13) ...
dpkg: dependency problems prevent configuration of initramfs-tools:
 initramfs-tools depends on initramfs-tools-bin (>= 0.99ubuntu13.3); however:
  Version of initramfs-tools-bin on system is 0.99ubuntu13.
dpkg: error processing initramfs-tools (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                         Errors were encountered while processing:
 initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)

Selanjutnya saya mencoba saran Giles:

sudo dpkg --configure -a --force-depends
sudo apt-get install -f
sudo apt-get dist-upgrade
MountainX
sumber
Saya sedikit bingung. Silakan kirim keluaran dariapt-cache policy initramfs-tools-bin initramfs-tools
Gilles 'SO- stop being evil'
@Gilles - terima kasih sudah melihatnya. Saya memperbarui pertanyaan dengan info ini.
MountainX
Coba tentukan versi secara manual:apt-get install initramfs-tools=0.99ubuntu13.4
jordanm
Hmmm, ini terlihat seperti bug dalam dependensi initramfs-toolspaket atau dalam cara dpkg mengelola mereka. Saya pikir sistem Anda tidak seharusnya berada dalam kondisi ini di mana yang baru initramfs-tools-binditandai telah diinstal tetapi yang lama initramfs-toolsmasih ada. Apakah dpkg --configure -a --force-dependsmembantu?
Gilles 'SO- stop being evil'
Apa output dari sudo apt-get checkdan dpkg --audit?
Braiam

Jawaban:

26

Sistem Anda dalam keadaan yang saya pikir tidak boleh terjadi: Anda memiliki versi baru dari dependensi initramfs-tools-bindi negara yang diinstal, tetapi versi lama dari dependensi initramfs-toolsdalam keadaan setengah terinstal. Saya tidak yakin apakah masalahnya adalah APT membiarkan sistem masuk ke keadaan di mana ia tidak dapat pulih, dpkg membiarkan sistem masuk ke keadaan di mana ia tidak dapat pulih, pengelola paket menggunakan kombinasi dependensi yang tidak didukung, atau pemahaman saya yang terbatas tidak mencakup kasus ini.

Coba gunakan dpkgsecara langsung:

dpkg --configure -a

Jika ini masih mengeluhkan ketergantungan, coba

dpkg --configure -a --force-depends

Jika ini berhasil, Anda memiliki basis data dpkg dalam keadaan konsisten. Anda perlu mendapatkan APT dalam kondisi baik (yang tidak memerlukan dependensi rusak):

apt-get -f install

Setelah ini, Anda dapat melanjutkan peningkatan normal.


Jika pembersihan Anda /bootmenghapus kernel lama yang ada dalam paket, Anda tidak akan bisa lagi menghapus paket kernel. Anda harus membuat ulang file. Anda dapat membuat file kosong ( touch `cat /var/lib/dpkg/info/linux-image-1.2.3-foo`) jika Anda menghapus linux-image-1.2.3-foopaket dan Anda menghapus beberapa file secara manual.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
Terima kasih banyak !!! dpkg dengan --force-depend membuat perbedaan dan kemudian memperbaiki paket yang rusak melakukan trik
omuthu
2
update-initramfs: Generating /boot/initrd.img-3.8.0-32-lowlatency

gzip: stdout: No space left on device

Ini berarti Anda perlu menghapus beberapa kernel. Kernel tua dan tidak terpakai adalah alternatif terbaik.

sudo dpkg --purge linux-generic-someold-version

secara manual menghapus file yang lebih lama dan sekarang sebagian ruang kosong

TIDAK!

Anda tidak boleh menghapus apa pun secara manual. Pernah. Hanya barang-barang dari /homedan /tmpyang mudah dipulihkan yang dapat saya sentuh dengan tangan, jika tidak gunakan alat ini. Itulah gunanya memiliki DPKG / APT ke layanan Anda. Jika Anda perlu menghapus sesuatu, gunakan apt / dpkg dan biarkan barang-barang dilakukan dengan tangan sebagai alternatif terakhir. Saya menduga masalah Anda saat ini adalah karena ini.


Untuk mengatasi masalah ketergantungan, Anda dapat menurunkan versi, lalu memutakhirkan:

sudo apt-get update
sudo apt-get -f install initramfs-tools=0.99ubuntu13 initramfs-tools-bin=0.99ubuntu13
sudo apt-get upgrade

Pada titik ini Anda seharusnya memberi tahu dpkg / apt untuk menghapus kernel lama juga.

Braiam
sumber
Saya mencoba saran Anda. Itu juga gagal. Saya memperbarui pertanyaan saya dengan output.
MountainX