아무래도 프로덕션 서버에 문제가 있어서 누군가 /var
이 폴더의 내용을 삭제한 것 같습니다.
이로 인해 다양한 서비스를 웹 서버로 사용하면서 몇 가지 오류가 발생했습니다.
내가 겪고 있는 문제 apt
는 패키지를 업데이트, 제거 또는 설치할 수 없다는 것입니다.
예를 들어 데이터베이스 서버를 다시 설치하고 싶지만 mariadb-server
패키지가 시스템에 설치되지 않았다는 메시지가 표시됩니다(잘못되었습니다. 직접 설치했습니다).
root# apt remove mariadb-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package 'mariadb-server' is not installed, so not removed
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
chkconfig : Depends: perl but it is not going to be installed
Recommends: insserv but it is not going to be installed
libboost-chrono1.50.0 : Depends: libgcc1 (>= 1:4.4.0) but it is not going to be installed
Depends: libstdc++6 (>= 4.4.0) but it is not going to be installed
libboost-system1.50.0 : Depends: libgcc1 (>= 1:4.4.0) but it is not going to be installed
Depends: libstdc++6 (>= 4.4.0) but it is not going to be installed
libboost-thread1.50.0 : Depends: libgcc1 (>= 1:4.4.0) but it is not going to be installed
Depends: libstdc++6 (>= 4.6) but it is not going to be installed
libc6 : Depends: libgcc1 but it is not going to be installed
libprotobuf-lite7 : Depends: libgcc1 (>= 1:4.4.0) but it is not going to be installed
Depends: libstdc++6 (>= 4.4.0) but it is not going to be installed
Depends: zlib1g (>= 1:1.1.4) but it is not going to be installed
oracle-java8-jdk : Depends: libasound2 (>= 1.0.16)
Depends: libgcc1 (>= 1:4.4.0) but it is not going to be installed
Depends: libx11-6 but it is not going to be installed
Depends: libxext6 but it is not going to be installed
Depends: libxi6 but it is not going to be installed
Depends: libxrender1 but it is not going to be installed
Depends: libxtst6 but it is not going to be installed
Recommends: netbase but it is not going to be installed
redis-server : Depends: init-system-helpers (>= 1.18~) but it is not going to be installed
Depends: libjemalloc1 (>= 2.1.1) but it is not going to be installed
Depends: adduser but it is not going to be installed
redis-tools : Depends: libjemalloc1 (>= 2.1.1) but it is not going to be installed
watchdog : Depends: debconf (>= 0.5) but it is not going to be installed or
debconf-2.0
Depends: init-system-helpers (>= 1.18~) but it is not going to be installed
Depends: makedev (>= 2.3.1-24) but it is not going to be installed or
udev but it is not going to be installed
Depends: lsb-base (>= 3.2-14) but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
충족되지 않은 종속성을 해결하라는 명령을 실행하는 경우:
root# apt-get -f install
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following extra packages will be installed:
adduser apt apt-utils base-passwd ca-certificates coreutils debconf debconf-i18n debianutils dpkg e2fslibs e2fsprogs gnupg gnupg-curl gpgv ifupdown init-system-helpers initscripts insserv iproute2 isc-dhcp-client isc-dhcp-common
krb5-locales libacl1 libalgorithm-c3-perl libapt-inst1.5 libapt-pkg4.12 libarchive-extract-perl libasound2 libasound2-data libatm1 libattr1 libaudit-common libaudit1 libblkid1 libbz2-1.0 libcgi-fast-perl libcgi-pm-perl
libclass-c3-perl libclass-c3-xs-perl libcomerr2 libcpan-meta-perl libcurl3-gnutls libdata-optlist-perl libdata-section-perl libdb5.3 libdebconfclient0 libdns-export100 libfcgi-perl libffi6 libgcc1 libgcrypt20 libgdbm3 libgmp10
libgnutls-deb0-28 libgpg-error0 libgpm2 libgssapi-krb5-2 libhogweed2 libidn11 libirs-export91 libisc-export95 libisccfg-export90 libjemalloc1 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libldap-2.4-2 liblocale-gettext-perl
liblog-message-perl liblog-message-simple-perl liblzma5 libmodule-build-perl libmodule-pluggable-perl libmodule-signature-perl libmount1 libmro-compat-perl libncurses5 libnettle4 libp11-kit0 libpackage-constants-perl libpam-modules
libpam-modules-bin libpam0g libparams-util-perl libpcre3 libpng12-0 libpod-latex-perl libpod-readme-perl libreadline6 libregexp-common-perl librtmp1 libsasl2-2 libsasl2-modules libsasl2-modules-db libselinux1 libsemanage-common
libsemanage1 libsepol1 libslang2 libsmartcols1 libsoftware-license-perl libss2 libssh2-1 libssl1.0.0 libstdc++6 libsub-exporter-perl libsub-install-perl libsystemd0 libtasn1-6 libterm-ui-perl libtext-charwidth-perl libtext-iconv-perl
libtext-soundex-perl libtext-template-perl libtext-wrapi18n-perl libtinfo5 libusb-0.1-4 libustr-1.0-1 libuuid1 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxext6 libxi6 libxrender1 libxtables10 libxtst6 lsb-base makedev netbase
openssl passwd perl perl-base perl-modules psmisc raspbian-archive-keyring readline-common redis-server redis-tools rename sensible-utils startpar sysv-rc sysvinit-utils tar tzdata util-linux uuid-runtime x11-common zlib1g
Suggested packages:
aptitude synaptic wajig dpkg-dev apt-doc python-apt debconf-doc debconf-utils whiptail dialog gnome-utils libterm-readline-gnu-perl libgtk2-perl libnet-ldap-perl libqtgui4-perl libqtcore4-perl gpart parted fuse2fs e2fsck-static
gnupg-doc libpcsclite1 parcimonie xloadimage imagemagick eog ppp rdnssd net-tools bootchart2 iproute2-doc resolvconf avahi-autoipd libasound2-plugins alsa-utils rng-tools gnutls-bin gpm krb5-doc krb5-user libpam-doc
libsasl2-modules-otp libsasl2-modules-ldap libsasl2-modules-sql libsasl2-modules-gssapi-mit libsasl2-modules-gssapi-heimdal perl-doc make libb-lint-perl libcpanplus-dist-build-perl libcpanplus-perl libfile-checktree-perl
libobject-accessor-perl readline-doc bum bootlogd sash bzip2 ncompress xz-utils tar-scripts dosfstools kbd console-tools util-linux-locales
Recommended packages:
libarchive-tar-perl
The following NEW packages will be installed:
adduser apt apt-utils base-passwd ca-certificates coreutils debconf debconf-i18n debianutils dpkg e2fslibs e2fsprogs gnupg gnupg-curl gpgv ifupdown init-system-helpers initscripts insserv iproute2 isc-dhcp-client isc-dhcp-common
krb5-locales libacl1 libalgorithm-c3-perl libapt-inst1.5 libapt-pkg4.12 libarchive-extract-perl libasound2 libasound2-data libatm1 libattr1 libaudit-common libaudit1 libblkid1 libbz2-1.0 libcgi-fast-perl libcgi-pm-perl
libclass-c3-perl libclass-c3-xs-perl libcomerr2 libcpan-meta-perl libcurl3-gnutls libdata-optlist-perl libdata-section-perl libdb5.3 libdebconfclient0 libdns-export100 libfcgi-perl libffi6 libgcc1 libgcrypt20 libgdbm3 libgmp10
libgnutls-deb0-28 libgpg-error0 libgpm2 libgssapi-krb5-2 libhogweed2 libidn11 libirs-export91 libisc-export95 libisccfg-export90 libjemalloc1 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libldap-2.4-2 liblocale-gettext-perl
liblog-message-perl liblog-message-simple-perl liblzma5 libmodule-build-perl libmodule-pluggable-perl libmodule-signature-perl libmount1 libmro-compat-perl libncurses5 libnettle4 libp11-kit0 libpackage-constants-perl libpam-modules
libpam-modules-bin libpam0g libparams-util-perl libpcre3 libpng12-0 libpod-latex-perl libpod-readme-perl libreadline6 libregexp-common-perl librtmp1 libsasl2-2 libsasl2-modules libsasl2-modules-db libselinux1 libsemanage-common
libsemanage1 libsepol1 libslang2 libsmartcols1 libsoftware-license-perl libss2 libssh2-1 libssl1.0.0 libstdc++6 libsub-exporter-perl libsub-install-perl libsystemd0 libtasn1-6 libterm-ui-perl libtext-charwidth-perl libtext-iconv-perl
libtext-soundex-perl libtext-template-perl libtext-wrapi18n-perl libtinfo5 libusb-0.1-4 libustr-1.0-1 libuuid1 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxext6 libxi6 libxrender1 libxtables10 libxtst6 lsb-base makedev netbase
openssl passwd perl perl-base perl-modules psmisc raspbian-archive-keyring readline-common rename sensible-utils startpar sysv-rc sysvinit-utils tar tzdata util-linux uuid-runtime x11-common zlib1g
The following packages will be upgraded:
redis-server redis-tools
2 upgraded, 153 newly installed, 0 to remove and 3 not upgraded.
11 not fully installed or removed.
Need to get 37.1 MB of archives.
After this operation, 120 MB of additional disk space will be used.
Do you want to continue? [Y/n]
Get:1 http://archive.raspberrypi.org/debian/ jessie/main libasound2-data all 1.0.28-1+rpi3 [65.3 kB]
Get:2 http://archive.raspberrypi.org/debian/ jessie/main libasound2 armhf 1.0.28-1+rpi3 [320 kB]
Get:3 http://mirrordirector.raspbian.org/raspbian/ jessie/main libgcc1 armhf 1:4.9.2-10+deb8u2 [39.5 kB]
Get:4 http://archive.raspberrypi.org/debian/ jessie/main x11-common all 1:7.7+16 [251 kB]
[...]
Get:152 http://mirrordirector.raspbian.org/raspbian/ jessie/main libterm-ui-perl all 0.42-1 [19.1 kB]
Get:153 http://mirrordirector.raspbian.org/raspbian/ jessie/main libtext-soundex-perl armhf 3.4-1+b2 [13.3 kB]
Get:154 http://mirrordirector.raspbian.org/raspbian/ jessie/main psmisc armhf 22.21-2 [117 kB]
Get:155 http://mirrordirector.raspbian.org/raspbian/ jessie/main rename all 0.20-3 [12.4 kB]
Fetched 37.1 MB in 2min 29s (249 kB/s)
Reading changelogs... Done
E: Cannot get debconf version. Is debconf installed?
debconf: apt-extracttemplates failed: No such file or directory
Extracting templates from packages: 19%E: Cannot get debconf version. Is debconf installed?
debconf: apt-extracttemplates failed: No such file or directory
Extracting templates from packages: 38%E: Cannot get debconf version. Is debconf installed?
debconf: apt-extracttemplates failed: No such file or directory
Extracting templates from packages: 58%E: Cannot get debconf version. Is debconf installed?
debconf: apt-extracttemplates failed: No such file or directory
Extracting templates from packages: 77%E: Cannot get debconf version. Is debconf installed?
debconf: apt-extracttemplates failed: No such file or directory
Extracting templates from packages: 96%E: Cannot get debconf version. Is debconf installed?
debconf: apt-extracttemplates failed: No such file or directory
Extracting templates from packages: 100%
dpkg: regarding .../libgcc1_1%3a4.9.2-10+deb8u2_armhf.deb containing libgcc1:armhf, pre-dependency problem:
libgcc1 pre-depends on multiarch-support
multiarch-support is unpacked, but has never been configured.
dpkg: error processing archive /var/cache/apt/archives/libgcc1_1%3a4.9.2-10+deb8u2_armhf.deb (--unpack):
pre-dependency problem - not installing libgcc1:armhf
Errors were encountered while processing:
/var/cache/apt/archives/libgcc1_1%3a4.9.2-10+deb8u2_armhf.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
다음은 mariadb-server가 설치되어 있다는 증거입니다(오류는 /var를 삭제했기 때문에 발생하므로 다시 설치하고 싶습니다).
root# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111 "Connection refused")
보시다시피 둘 다 디렉토리에 콘텐츠가 누락되었다는 오류가 apt
발생합니다 . 그래서 루프에 갇혀 있고 이 문제를 계속 해결하는 방법을 모르겠습니다.mariadb-server
/var
답변1
다음을 참고하겠습니다기사그리고데비안 위키 게시물내 대답을 위해.
먼저 작동 중인 Raspbian 시스템에 환경을 만듭니다 debootstrap
. 다음 지침을 따르세요.데비안 위키당신이 해야 할 일은 다음을 완료하는 것뿐입니다.
mkdir /debootstrap
debootstrap stable /debootstrap http://deb.debian.org/debian/
이제 Raspbian을 사용하고 있으므로 올바른 gpg-key를 추가해야 할 수도 있습니다.여기서 지적했듯이, Raspbian Deb Mirror를 참조하세요. 이 같은: http://archive.raspbian.org/raspbian
. 포함하겠습니다링크크로스 플랫폼 빌드 가이드에는 Raspberry Pi가 아닌 amd64 시스템에서 이 작업을 수행한다고 명시되어 있습니다.
중요: 메시지가 표시되면
grub
MBR에 설치하지 마세요! 이로 인해 기존 설치가 중단될 수 있습니다!
다음으로 손상된 시스템에 설치된 모든 프로그램 목록을 가져옵니다. 처음에는 사용을 제안했지만 dpkg --get-selections
사용자 AB가 지적했듯이 이는 실패합니다. dpkg
다양한 /var
디렉토리에 대한 참조가 작동합니다. /var
하나를 잃으면 당연히 실패합니다. 사용자 AB는 인용할 수 있는 내용 /usr/share/doc/
과 관련 심볼릭 링크를 지적했습니다. 먼저 사용 가능한 것이 무엇인지 확인한 다음 installed.txt
결과에 따라 하나를 만들어 보겠습니다.
cd /usr/share/doc && for i in *; do echo $i install >> /home/user/installed.txt; done
그 결과를 installed.txt
당신의 기대와 비교하십시오. 확인할 또 다른 위치는 입니다 /usr/share/man
. 이 디렉토리에는 맨페이지가 포함되어 있지만 맨페이지를 설치하는 패키지에만 해당됩니다. 비교할 수 있는 작동 중인 Raspberry Pi가 있는 경우,고장난 라즈베리파이와 구성이 동일합니다., installed.txt
Raspberry Pi의 출력을 사용하여 빌드 할 수 있습니다 dpkg --get-selections
.
installed.txt
손실된 호스트에서 /var
복구된 /var
호스트로 복사합니다. scp
또는 rysnc
여기에서 작동하지만 이 시점에서는 ssh
손상된 호스트와 복구를 수행하는 호스트 사이에 작동하는 구성이 있는지 확인해야 합니다. 두 호스트 사이에 유효한 구성이 없으면 ssh
복제할 수 없습니다 . /var
계속하기 전에 ssh
문제를 해결해야 합니다 .
이제 이 파일을 /deboostrap
환경으로 이동하고 이 chroot 내에 동일한 소프트웨어를 모두 설치할 준비를 합니다.
cp installed.txt /debootstrap/
chroot /bootstrap/
mount -t proc none /proc
dpkg --set-selections < installed.txt
sources.list
필요한 경우 일치하는지 확인하세요 . debootstrap
기본적으로는 main
.
apt update
apt install dselect
dselect update
apt-get dselect-upgrade
좋은 건물을 만들 수 없다면installed.txt
debootstrap
chroot에 필요한 모든 패키지를 수동으로 설치 해야 할 수도 있습니다 . 여기가 좋은 설정 문서나 코드로서의 인프라가 유용한 곳입니다. 가능한 한 원래 버전에 가깝게 하려면 apt install package1 package2 package3 ... packageN
chroot에서 실행하십시오 . 설치하는 대신 다음 단계를 따라야 합니다./var
/var
dselect
chroot /bootstrap/
mount -t proc none /proc
apt update
apt install package1 package2 package3 ... packageN
이 시점에서 귀하의 debootstrap
환경은 손상된 대상 호스트의 환경과 일치해야 합니다. 여기서 rsync
복사 해야 /var
합니다 . rsync -A
그 정도면 충분합니다. 내가 지적했듯이협회PermitRootLogin without-password
, 가 작동 sshd_config
하도록 허용해야 할 수도 있습니다 rsync
.
또한 Alephnull.uk의 Pete Donnell이 실행해야 할 최종 단계와 고려 사항을 직접 인용하겠습니다.
mariadb-server
... 깨진 서버에 패키지를 다시 설치 해야 했습니다apt-get install --reinstall mariadb-server mariadb-server-10.1 mariadb-server-core-10.1
.다음 단계는 사용자 데이터를 복구하는 것입니다. 이는 사용하는 구조에 따라 다르므로 지침을 제공할 수 없습니다. 이 작업을 완료한 후에는 작업자 서버(또는 부트스트랩)의 파일에 대한 권한을 확인하여 파일이 올바른지 확인하세요
/var/lib
./var/log
시스템 계정의 사용자 ID는 서버와 부트 환경 간에 다를 가능성이 높습니다.이제 를 사용하여 설치한 다양한 서비스를 확인해야 합니다
service --status-all
. 모든 서비스를 활성화할 필요는 없습니다. 다시 한 번 작동 중인 서버와 비교하는 것이 좋습니다. 현재 실행되고 있지 않지만 실행되어야 하는 서비스를 다시 시작해 보세요. 모든 권한이 올바르고 관련 사용자 데이터(있는 경우)가 복원된 경우 서비스가 성공적으로 시작됩니다. 그렇지 않은 경우 s로 systemd 상태를 확인하고ystemctl status <service-name>
, s로 systemd 로그를 확인하고,journalctl -xe
s로 서비스의 로그 파일을 확인하세요/var/log
. 이를 통해 남은 문제를 추적하는 데 충분한 정보를 얻을 수 있습니다.
debootstrap
운이 좋게 두 번째 작업 호스트가 있는 경우 시간을 내어 환경과 손상된 호스트를 비교하는 것이 좋습니다. 모든 권한이 올바른지, 서비스가 제대로 실행되고 있는지 확인해야 합니다. 이 작업이 완료되면 콘솔을 재부팅하고 모든 것이 복원되었는지 확인합니다.
명령을 시도하기 전에 제가 제공하는 각 링크를 주의 깊게 읽어보시기 바랍니다. 제 글에 오류나 오해, 문제가 있는 경우 알려주시면 수정하도록 노력하겠습니다.
행운을 빌어요!