업그레이드 중 dpkg 오류: dpkg-preconfigure를 찾을 수 없음

업그레이드 중 dpkg 오류: dpkg-preconfigure를 찾을 수 없음

저는 Ubuntu Server 16.04.3을 실행하고 있습니다. 보안 업데이트 자동 설치를 활성화했습니다. 오늘 아침에 서버가 종료되었습니다(이유는 모르겠지만 실행 중이어야 합니다). 재부팅 후 apt-get dist-upgrade. 그것은 나에게 다음과 같은 오류를 제공합니다 :

Fetched 351 kB in 0s (1 760 kB/s)           
/bin/sh: 1: /usr/sbin/dpkg-preconfigure: not found
dpkg: warning: files list file for package 'libpam-runtime' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'python3.5' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libpython3-stdlib:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'makedev' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libnettle6:amd64' missing; assuming package has no files currently installed
dpkg: unrecoverable fatal error, aborting:
 unable to open files list file for package 'libicu55:amd64': No such device or address
E: Sub-process /usr/bin/dpkg returned an error code (2)

그런 다음 알 수 없는 이유로 서버가 다운된 동안 무언가가 설치되고 있다고 가정했습니다. 나는 그것을 시도했다 apt-get install -f. 그것은 나에게 다음을 제공합니다 :

/bin/sh: 1: /usr/sbin/dpkg-preconfigure: not found
Setting up linux-firmware (1.157.16) ...
/usr/sbin/update-initramfs: 233: /usr/sbin/update-initramfs: linux-version: not found
dpkg: error processing package linux-firmware (--configure):
 subprocess installed post-installation script returned error exit status 127
Errors were encountered while processing:
 linux-firmware
E: Sub-process /usr/bin/dpkg returned an error code (1)

dpkg-preconfigure가 시스템에 존재합니다.

root@lelouch:~# whereis dpkg-preconfigure
dpkg-preconfigure: /usr/sbin/dpkg-preconfigure /usr/share/man/man8/dpkg-preconfigure.8.gz

linux 버전도 존재하지만 실행할 수 없습니다.

root@lelouch:~# whereis linux-version
linux-version: /usr/bin/linux-version /usr/share/man/man1/linux-version.1.gz
root@lelouch:~# /usr/bin/linux-version
bash: /usr/bin/linux-version: /usr/bin/perl: bad interpreter: No such file or directory

dpkg -C는 다음을 제공합니다

root@lelouch:~# dpkg -C
The following packages are only half configured, probably due to problems
configuring them the first time.  The configuration should be retried using
dpkg --configure <package> or the configure menu option in dselect:
 linux-firmware       Firmware for Linux kernel drivers

The following packages are missing the list control file in the
database, they need to be reinstalled:
 libc-bin             GNU C Library: Binaries
 libdns-export162     Exported DNS Shared Library
 libgtk2.0-common     common files for the GTK+ graphical user interface librar
 libidn11:amd64       GNU Libidn library, implementation of IETF IDN specificat
 libisc-export160     Exported ISC Shared Library
 libncursesw5:amd64   shared libraries for terminal handling (wide character su
 libnettle6:amd64     low level cryptographic library (symmetric and one-way cr
 libnewt0.52:amd64    Not Erik's Windowing Toolkit - text mode windowing with s
 libnih1:amd64        NIH Utility Library
 libp11-kit0:amd64    library for loading and coordinating access to PKCS#11 mo
 libpam-modules:amd64 Pluggable Authentication Modules for PAM
 libpam-modules-bin   Pluggable Authentication Modules for PAM - helper binarie
 libpam-runtime       Runtime support for the PAM library
 libpam0g:amd64       Pluggable Authentication Modules library
 libpcre3:amd64       Perl 5 Compatible Regular Expression Library - runtime fi
 libpng12-0:amd64     PNG library - runtime
 libpopt0:amd64       lib for parsing cmdline parameters
 libprocps4:amd64     library for accessing process information from /proc
 libpython3-stdlib:amd64 interactive high-level object-oriented language (default 
 libpython3.5:amd64   Shared Python runtime library (version 3.5)
 libreadline6:amd64   GNU readline and history libraries, run-time libraries
 libseccomp2:amd64    high level interface to Linux seccomp filter
 libselinux1:amd64    SELinux runtime shared libraries
 libsemanage-common   Common files for SELinux policy management libraries
 libsemanage1:amd64   SELinux policy management library
 libsepol1:amd64      SELinux library for manipulating binary security policies
 libslang2:amd64      S-Lang programming library - runtime version
 libsqlite3-0:amd64   SQLite 3 shared library
 libssl1.0.0:amd64    Secure Sockets Layer toolkit - shared libraries
 libtasn1-6:amd64     Manage ASN.1 structures (runtime)
 libtext-charwidth-perl get display widths of characters on the terminal
 libustr-1.0-1:amd64  Micro string library: shared library
 libuuid1:amd64       Universally Unique ID library
 libxtables11:amd64   netfilter xtables library
 linux-base           Linux image base package
 login                system login tools
 logrotate            Log rotation utility
 lsb-base             Linux Standard Base init script functionality
 lsb-release          Linux Standard Base version reporting utility
 makedev              creates device files in /dev
 mawk                 a pattern scanning and text processing language
 mime-support         MIME files 'mime.types' & 'mailcap', and support programs
 mount                tools for mounting and manipulating filesystems
 ncurses-bin          terminal-related programs and man pages
 net-tools            NET-3 networking toolkit
 netbase              Basic TCP/IP networking system
 netcat-openbsd       TCP/IP swiss army knife
 python3.5            Interactive high-level object-oriented language (version 
 systemd              system and service manager
 udev                 /dev/ and hotplug management daemon

The following packages are missing the md5sums control file in the
database, they need to be reinstalled:
 libncursesw5:amd64   shared libraries for terminal handling (wide character su
 libnettle6:amd64     low level cryptographic library (symmetric and one-way cr
 libnewt0.52:amd64    Not Erik's Windowing Toolkit - text mode windowing with s
 libnih1:amd64        NIH Utility Library
 libp11-kit0:amd64    library for loading and coordinating access to PKCS#11 mo
 libpam-modules:amd64 Pluggable Authentication Modules for PAM
 libpam-modules-bin   Pluggable Authentication Modules for PAM - helper binarie
 libpam-runtime       Runtime support for the PAM library
 libpam0g:amd64       Pluggable Authentication Modules library
 libpcre3:amd64       Perl 5 Compatible Regular Expression Library - runtime fi
 libpng12-0:amd64     PNG library - runtime
 libpopt0:amd64       lib for parsing cmdline parameters
 libprocps4:amd64     library for accessing process information from /proc
 libpython3-stdlib:amd64 interactive high-level object-oriented language (default 
 libreadline6:amd64   GNU readline and history libraries, run-time libraries
 libselinux1:amd64    SELinux runtime shared libraries
 libsemanage-common   Common files for SELinux policy management libraries
 libsemanage1:amd64   SELinux policy management library
 libsepol1:amd64      SELinux library for manipulating binary security policies
 libslang2:amd64      S-Lang programming library - runtime version
 libsmartcols1:amd64  smart column output alignment library
 libsqlite3-0:amd64   SQLite 3 shared library
 libss2:amd64         command-line interface parsing library
 libtext-charwidth-perl get display widths of characters on the terminal
 libtxc-dxtn-s2tc0:amd64 Texture compression library for Mesa
 libustr-1.0-1:amd64  Micro string library: shared library
 libuuid1:amd64       Universally Unique ID library
 linux-base           Linux image base package
 login                system login tools
 logrotate            Log rotation utility
 lsb-base             Linux Standard Base init script functionality
 lsb-release          Linux Standard Base version reporting utility
 makedev              creates device files in /dev
 mawk                 a pattern scanning and text processing language
 mime-support         MIME files 'mime.types' & 'mailcap', and support programs
 mount                tools for mounting and manipulating filesystems
 ncurses-base         basic terminal type definitions
 ncurses-bin          terminal-related programs and man pages
 net-tools            NET-3 networking toolkit
 netbase              Basic TCP/IP networking system
 netcat-openbsd       TCP/IP swiss army knife

정전으로 인해 모든 것이 엉망이 된 것 같아요. 그것에 대한 몇 가지 배경. 서버는 proxmox가 실행하는 가상 머신에 있습니다. 디스크 이미지(dcow2)가 손상되었습니다. 이 문제를 해결하려면 proxmox 도구를 사용해야 했습니다( qemu-img check -r all /var/lib/vz/images/100/vm-100-disk-1.qcow2). 그런 다음 손상된 것 같아서 grub을 복원해야 했습니다. 마지막으로 fsck -r서버가 다음과 같이 불평했기 때문에 하나를 실행해야 했습니다 EXT4-fs error (device sda3): ext4_iget:4245: inode #1835722: comm rs:main Q:Reg: bad_extra_isize (20725 != 256). fsck 이후 시스템은 정상적으로 실행되고 시스템에 저장된 파일은 손상되지 않은 것으로 보입니다.

VM 호스트의 어떤 로그도 무슨 일이 일어나고 있는지 알려주지 않습니다. 서버에는 서버 충돌 시점에 대한 시스템 로그가 없습니다. 그러나 unattended-upgrades-dpkg.log에는 다음이 표시되고 그 이후에는 아무것도 표시되지 않으므로 충돌과 관련이 있을 수 있습니다.

Log started: 2018-02-15  06:35:35
(Reading database ... ^M(Reading database ... 5%^M(Reading database ... 10%^M(Reading database ... 15%^M(Reading database ... 20%^M(Reading database ... 25%^M(Reading database ... 30%^M(Reading database \
... 35%^M(Reading database ... 40%^M(Reading database ... 45%^M(Reading database ... 50%^M(Reading database ... 55%^M(Reading database ... 60%^M(Reading database ... 65%^M(Reading database ... 70%^M(Read\
ing database ... 75%^M(Reading database ... 80%^M(Reading database ... 85%^M(Reading database ... 90%^M(Reading database ... 95%^M(Reading database ... 100%^M(Reading database ... 109727 files and direct\
ories currently installed.)^M
Preparing to unpack .../libvorbisenc2_1.3.5-3ubuntu0.1_amd64.deb ...^M
Unpacking libvorbisenc2:amd64 (1.3.5-3ubuntu0.1) over (1.3.5-3) ...^M
Preparing to unpack .../libvorbis0a_1.3.5-3ubuntu0.1_amd64.deb ...^M
Unpacking libvorbis0a:amd64 (1.3.5-3ubuntu0.1) over (1.3.5-3) ...^M
Preparing to unpack .../linux-firmware_1.157.16_all.deb ...^M
Unpacking linux-firmware (1.157.16) over (1.157.14) ...^M
Processing triggers for libc-bin (2.23-0ubuntu10) ...^M
Setting up libvorbis0a:amd64 (1.3.5-3ubuntu0.1) ...^M
Setting up libvorbisenc2:amd64 (1.3.5-3ubuntu0.1) ...^M
Setting up linux-firmware (1.157.16) ...^M
update-initramfs: Generating /boot/initrd.img-4.4.0-112-generic^M
W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.^M

Mdadm은 다음과 같습니다.

# mdadm.conf                                                                                                                                                                                                
#                                                                                                                                                                                                           
# Please refer to mdadm.conf(5) for information about this file.                                                                                                                                            
#                                                                                                                                                                                                           

# by default (built-in), scan all partitions (/proc/partitions) and all                                                                                                                                     
# containers for MD superblocks. alternatively, specify devices to scan, using                                                                                                                              
# wildcards if desired.                                                                                                                                                                                     
#DEVICE partitions containers                                                                                                                                                                               

# auto-create devices with Debian standard permissions                                                                                                                                                      
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system                                                                                                                                             
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts                                                                                                                                                  
MAILADDR root

# definitions of existing MD arrays                                                                                                                                                                         

# This file was auto-generated on Sat, 10 Feb 2018 17:09:37 +0100                                                                                                                                           
# by mkconf $Id$       

누구든지 문제를 해결하는 방법을 알고 있나요?

답변1

디스크 이미지 손상은 매우 이례적입니다.

다시 설치해야 하는 패키지의 수와 중요한 패키지가 많이 영향을 받는다는 점을 고려하면 이제 필요한 파일을 다른 VM에서 백업하고 처음부터 새 VM을 만들어야 할 때라고 생각합니다. 이는 현재 가상 머신을 복구하는 것보다 훨씬 적은 시간이 소요될 가능성이 높습니다.

관련 정보