인터넷 없이 업데이트 및 설치를 시도한 후 apt가 손상됨

인터넷 없이 업데이트 및 설치를 시도한 후 apt가 손상됨

인터넷 접속이 불가능한 Debian Buster 시스템에서 대부분의 apt 명령(예: apt install/remove/autoremove)은 다음 오류를 표시합니다:

The following packages have unmet dependencies:
 systemd : Depends: libsystemd0 (= 241-7~deb10u6) but 241-7~deb10u8 is to be installed
           Recommends: libpam-systemd but it is not installable
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

실행하려고 하면 apt --fix-broken install다음 오류가 발생합니다.

root@debian10-h1:/var/cuda-repo-debian10-11-4-local# apt --fix-broken install
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
 big list of packages
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
  systemd
0 upgraded, 0 newly installed, 1 to remove and 1 not upgraded.
After this operation, 13.8 MB disk space will be freed.
Do you want to continue? [Y/n] Y
(Reading database ... 114294 files and directories currently installed.)
Removing systemd (241-7~deb10u6) ...
systemd is the active init system, please switch to another before removing systemd.
dpkg: error processing package systemd (--remove):
 installed systemd package pre-removal script subprocess returned error exit status 1
Errors were encountered while processing:
 systemd
E: Sub-process /usr/bin/dpkg returned an error code (1)

내가 거기 어떻게 갔어?

인터넷에 접속할 수 없는 Debian Buster 서버에 프로그램을 설치해야 합니다. 지금까지 apt를 통해 무언가를 설치해야 할 때 apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances <your-package-here> | grep "^\w" | sort -u)가상 머신에서 실행하여 패키지와 모든 종속성에서 .deb 파일을 다운로드하고 파일을 내 대상 머신으로 전송한 다음 dpkg -i *.deb거기에서 설치를 실행합니다. 이는 효과적이고 아름다운.

CUDA를 설치해야 해서 nvidia 설치 가이드를 따랐습니다. 어떤 시점에서는 다음 명령을 실행해야 합니다.

wget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda-repo-debian10-11-4-local_11.4.0-470.42.01-1_amd64.deb
sudo dpkg -i cuda-repo-debian10-11-4-local_11.4.0-470.42.01-1_amd64.deb
sudo apt-key add /var/cuda-repo-debian10-11-4-local/7fa2af80.pub
sudo add-apt-repository contrib
sudo apt-get update
sudo apt-get -y install cuda

처음 4개의 명령을 아무 문제 없이 실행했지만(첫 번째 명령은 인터넷이 연결된 가상 머신에서 실행되었습니다) 인터넷에 연결되어 있지 않아 다섯 번째 명령은 실패했습니다.

root@debian10-h1:/home/user/installation# apt-get update
Get:1 file:/var/cuda-repo-debian10-11-4-local  InRelease
Ign:1 file:/var/cuda-repo-debian10-11-4-local  InRelease
Get:2 file:/var/cuda-repo-debian10-11-4-local  Release [564 B]
Get:2 file:/var/cuda-repo-debian10-11-4-local  Release [564 B]
Err:4 http://deb.debian.org/debian buster InRelease
  Temporary failure resolving 'deb.debian.org'
Reading package lists... Done
W: Failed to fetch http://deb.debian.org/debian/dists/buster/InRelease  Temporary failure resolving 'deb.debian.org'
W: Some index files failed to download. They have been ignored, or old ones used                                                                                                                                                              instead.

그리고 여섯번째:

root@debian10-h1:/home/user/installation# apt-get -y install cuda
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 apt-utils : Depends: apt (= 1.8.2.2) but 1.8.2.3 is to be installed
 cuda : Depends: cuda-11-4 (>= 11.4.0) but it is not going to be installed
 libglib2.0-bin : Depends: libglib2.0-0 (= 2.58.3-2+deb10u2) but 2.58.3-2+deb10u
3 is to be installed
 libpython3.7 : Depends: libpython3.7-stdlib (= 3.7.3-2+deb10u2) but 3.7.3-2+deb10u3 is to be installed
 systemd : Depends: libsystemd0 (= 241-7~deb10u6) but 241-7~deb10u8 is to be installed
 udev : Depends: libudev1 (= 241-7~deb10u6) but 241-7~deb10u8 is to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

그래서 나는 다음을 시도했습니다 apt --fix-broken install.

root@debian10-h1:/home/user/installation# apt --fix-broken install
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  big list of packages
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
  big list of packages
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  init systemd-sysv (due to init)
0 upgraded, 0 newly installed, 58 to remove and 1 not upgraded.
After this operation, 364 MB disk space will be freed.
You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'
?]n

제안된 대로 시도해 보았 apt autoremove으나 E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).이전과 동일한 결과를 얻었습니다. 와 동일합니다 apt remove cuda. 기간 문제로 인해 작동하지 않는다고 생각하여 apt-get updateapt-offline을 통해 업데이트를 시도했지만 다음을 사용하라는 요청을 다시 받았습니다 apt --fix-broken install.

root@debian10-h1:/home/user/installation# apt-offline set ./my.sig

Generating database of files that are needed for an update.

Generating database of file that are needed for operation upgrade
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
ERROR: FATAL: Something is wrong with the APT system

다른 할 일이 없어서 다시 시도했지만 apt --fix-broken install이번에는 계속을 수락했습니다.

root@debian10-h1:/home/user/installation# apt --fix-broken install
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  big list of packages
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
  big list of packages
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  init systemd-sysv (due to init)
0 upgraded, 0 newly installed, 58 to remove and 1 not upgraded.
After this operation, 364 MB disk space will be freed.
You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'
?]Yes, do as I say!
(Reading database ... 120959 files and directories currently installed.)

Lot of others thing were removed, I just kept the ones where I got a different message, can post the full list if needed.

Removing linux-image-amd64 (4.19+105+deb10u9) ...
Removing linux-image-4.19.0-14-amd64 (4.19.171-2) ...
W: Removing the running kernel
W: Last kernel image has been removed, so removing the default symlinks
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-4.19.0-14-amd64
/etc/kernel/postrm.d/zz-update-grub:
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Adding boot menu entry for EFI firmware configuration
done
update-initramfs: deferring update (trigger activated)
Removing initramfs-tools (0.133+deb10u1) ...
Removing initramfs-tools-core (0.133+deb10u1) ...
Removing systemd (241-7~deb10u6) ...
systemd is the active init system, please switch to another before removing systemd.
dpkg: error processing package systemd (--remove):
 installed systemd package pre-removal script subprocess returned error exit status 1
Errors were encountered while processing:
 systemd
E: Sub-process /usr/bin/dpkg returned an error code (1)

내가 시도한 것

  • 이미 팔로우 중https://askubuntu.com/a/1093253: sudo apt-get clean아무것도 표시되지 않습니다.

    root@debian10-h1:/home/user# dpkg --configure -a
    Processing triggers for mime-support (3.62) ...
    Processing triggers for hicolor-icon-theme (0.17-2) ...
    Processing triggers for libglib2.0-0:amd64 (2.58.3-2+deb10u3) ...
    Processing triggers for libc-bin (2.28-10) ...
    Processing triggers for man-db (2.8.5-2) ...
    Processing triggers for libreoffice-common (1:6.1.5-3+deb10u6) ...
    Processing triggers for dbus (1.12.20-0+deb10u1) ...
    Processing triggers for desktop-file-utils (0.23-4) ...
    

그리고 다시 sudo apt upgrade --fix-missing해달라고 하더군요 apt --fix-broken install.

  • 이미 팔로우 중https://askubuntu.com/a/1244984, 그러나 stat / /dev /var루트가 3개 디렉터리 모두의 소유자임을 보여줍니다.

  • 이미 팔로우 중https://askubuntu.com/a/380701, 그러나 sudo fuser -v /var/cache/debconf/config.dat아무것도 표시하지 않습니다. (+나는 이것이 정확히 같은 문제라고 생각하지 않습니다).

이 문제를 해결하는 방법을 아는 사람이 있는지 궁금합니다. 필요한 경우 추가 정보를 제공할 수 있습니다.

답변1

시스템이 어떻게 이런 상황에 이르렀는지(적어도 내 이론은 그렇습니다), 앞으로 이를 방지하는 방법을 설명하겠습니다. 하지만 먼저 문제를 해결하는 방법을 살펴보겠습니다.

apt-offline문제를 해결하기 위한 합리적인 조치를 취하기 에는 설정이 너무 잘못된 것 같습니다 . 다운로드 하시면 좋을 것 같아요Current Point가 출시한 최초의 장편 DVD, 그리고 그것을 사용하십시오. 이렇게 하려면 구성된 모든 리포지토리를 삭제하고 서버에 DVD 이미지를 탑재한 다음 다음을 사용하십시오.apt-cdrom, DVD 드라이브 자체를 관리하려고 시도하지 않도록 이 --no-mount옵션을 사용하십시오(이미지를 사용한다고 가정).apt-cdrom

이렇게 하면 제거된 패키지를 다시 설치하고 시스템을 일관된 상태로 업그레이드하는 데 사용할 수 있는 최신 패키지 소스가 제공됩니다. 이에 대한 마법의 비밀은 없습니다. 어떤 패키지가 제거되었는지 알아내야 합니다. apt full-upgrade도움이 될 수도 있습니다.

시스템이 이렇게 충돌한 이유는 CUDA와 관련이 없고 오프라인으로 설치하는 데 사용한 기술과 관련이 있다고 생각합니다. 이미 설치된 항목을 무시하고 전체 종속성 트리를 다운로드하면 함께 업그레이드해야 하는 다른 종속성 트리와 교차하는 패키지 세트를 필연적으로 다운로드하게 됩니다. 예를 들어, 많은 패키지는 궁극적으로 에 의존 libsystemd0하지만 해당 종속성 트리에는 가 포함되지 않습니다 systemd. 이러한 패키지 세트를 설치하면 일치하지 않는 systemd및 가 발생하며 libsystemd0이는 질문의 첫 번째 오류를 설명합니다. dpkg -i이러한 불일치가 발생하도록 허용하는 것은 괜찮지만 apt이를 싫어하고 합리적인 조치를 취하기 전에 이를 수정해야 합니다. 이것이 apt install --fix-broken바로 해결 방법이지만 패키지 저장소가 필요합니다.

이러한 상황을 방지하려면 설치된 패키지 세트가 전역적으로 일관성을 유지해야 합니다. 연결이 끊긴 시스템의 경우 apt-offline이것이 가장 좋은 방법이지만 항상 사용해야 하며 apt-cache depends트릭이 없습니다. 부분적으로 연결된 시스템의 경우,네트워크에 있지만 인터넷에 직접 액세스할 수 없는 상황에서는 네트워크 로컬 패킷 캐싱이 더 나은 솔루션일 수 있습니다.apt-cacher-ng.

관련 정보