
일주일 전에 데비안 10에서 11로 업그레이드했습니다.
반복되는 오류는 다음과 같습니다.
symbol lookup error: /lib/systemd/libsystemd-shared-247.so: undefined symbol: seccomp_api_get
시스템을 부팅하는 동안 커널 패닉이 발생합니다.
초기화 시스템으로 systemv로 전환해야 했습니다.
이제 복원하려고 하면 systemd
다음 오류가 발생합니다.
root@nas:~# apt install systemd
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
systemd is already the newest version (247.3-6).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n]
Setting up systemd (247.3-6) ...
systemd-machine-id-setup: symbol lookup error: /lib/systemd/libsystemd-shared-247.so: undefined symbol: seccomp_api_get
dpkg: error processing package systemd (--configure):
installed systemd package post-installation script subprocess returned error exit status 127
Errors were encountered while processing:
systemd
needrestart is being skipped since dpkg has failed
E: Sub-process /usr/bin/dpkg returned an error code (1)
내 버전:
root@nas:~# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye
root@nas:~# uname -a
Linux nas 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30) x86_64 GNU/Linux
답변1
해결책을 찾았습니다여기:
나는 같은 문제를 가지고있다. 그 이유는 /lib/x86_64-linux-gnu에 있는 일부 오래된 라이브러리, 특히 libseccomp 때문입니다. 패키지가 관리되지 않습니다(즉, 어떤 패키지에도 속하지 않습니다). […]
새로운 libseccomp2 패키지는 새 바이너리를 /usr/lib/x86_64-linux-gnu로 보내지만 런타임 로더는 /lib/x86_64-linux-gnu에 이전 버전을 로드합니다. […]
/lib/x86_64-linux-gnu에서 이전 라이브러리를 제거하면 문제가 사라집니다.
그래서 다음 파일을 삭제했습니다.
rm /lib/x86_64-linux-gnu/libseccomp.so.2*
Systemd로 다시 전환할 수 있었습니다.
확인 방법
dpkg --search
이를 사용하여 파일이나 디렉터리가 고아인지 확인할 수 있습니다 .
dpkg --search /lib/x86_64-linux-gnu/libseccomp.so.2
dpkg-query: no path found matching pattern /lib/x86_64-linux-gnu/libseccomp.so.2
다음 명령을 사용하여 해당 패키지가 없는 파일을 찾을 수 있습니다 cruft-ng
.어떤 패키지에도 속하지 않는 파일을 찾는 방법은 무엇입니까?
고쳐 쓰다
하나 있다/lib/x86_64-linux-gnu/
와 사이의 심볼릭 링크/usr/lib/x86_64-linux-gnu/
, 따라서 삭제를 결정하기 전에 두 디렉토리 모두에서 검색하십시오.
실행했는데 dpkg --search /usr/lib/terminfo/
경고가 반환되어 디렉터리를 삭제했는데 실제로 CLI가 중단되었기 때문에 CLI가 중단되었습니다 ncurses-base
.
이 디렉터리를 소유한 패키지를 검색하여 /usr/lib/
제공 합니다./lib/
dpkg --search /usr/lib/terminfo/ /lib/terminfo/
dpkg-query: no path found matching pattern /usr/lib/terminfo/
ncurses-base: /lib/terminfo
따라서 dpkg --search
데이터를 삭제하는 것이 안전한지 여부를 결정하기 위해 한 번의 검색에만 의존할 수는 없습니다.