방금 시스템을 Debian 11에서 12로 업그레이드했습니다. 다음 단계를 따르세요.사이버시티 가이드. 이 시스템은 9년 넘게 최신 상태로 유지되어 최소한 4번의 주요 업그레이드(현재 데비안 7 또는 8에서 12)를 거쳤습니다.
처음 실행하는 동안 apt upgrade --without-new-pkgs
오류가 발생했는데 libudev
(불행히도 명령의 출력을 유지하는 것을 잊어버렸습니다) 2개의 파일을 삭제하여 문제를 해결했습니다.
$ rm /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.1.6.5
업그레이드를 완료하고 재부팅할 수 있었습니다.
추가 조사 결과 내 시스템에 다른 중복 라이브러리가 있는 것으로 나타났습니다.
$ dpkg --search /lib/x86_64-linux-gnu/perl/ /usr/lib/x86_64-linux-gnu/perl/
dpkg-query: no path found matching pattern /lib/x86_64-linux-gnu/perl/
libperl5.36:amd64: /usr/lib/x86_64-linux-gnu/perl
이 디렉토리는 심볼릭 링크가 아닌 것 같습니다.
$ ls -ld /lib/ /lib/x86_64-linux-gnu/ /usr/ /usr/lib/ /usr/lib/x86_64-linux-gnu/
drwxr-xr-x 84 root root 4.0K Jul 5 21:05 /lib//
drwxr-xr-x 78 root root 96K Jul 5 21:05 /lib/x86_64-linux-gnu//
drwxr-xr-x 12 root root 4.0K Jul 5 20:32 /usr//
drwxr-xr-x 84 root root 4.0K Jul 5 21:05 /usr/lib//
drwxr-xr-x 78 root root 96K Jul 5 21:05 /usr/lib/x86_64-linux-gnu//
이전에도 매우 비슷한 문제가 발생했습니다.Debian 10에서 11로 업그레이드한 후 systemd를 복원할 수 없습니다: "정의되지 않은 기호: seccomp_api_get"
질문은 다음과 같습니다.
/lib/x86_64-linux-gnu/
및/usr/lib/x86_64-linux-gnu/
- 출력에 의존하여
dpkg --search
표시된 경로를 제거 할 수 있습니까no path found …
? 아니면 이 난잡함을 정리하는 데 도움이 되는 도구가 있나요? - 내 시스템의 어떤 이벤트로 인해 이런 일이 발생할 수 있습니까?
업데이트: 실제로는 동일한 두 개의 디렉터리가 있는 것처럼 보입니다.
$ ls -lh /lib/x86_64-linux-gnu/test.ignore /usr/lib/x86_64-linux-gnu/test.ignore
ls: cannot access '/lib/x86_64-linux-gnu/test.ignore': No such file or directory
ls: cannot access '/usr/lib/x86_64-linux-gnu/test.ignore': No such file or directory
$ touch /lib/x86_64-linux-gnu/test.ignore
$ ls -lh /lib/x86_64-linux-gnu/test.ignore /usr/lib/x86_64-linux-gnu/test.ignore
-rw-r--r-- 1 root root 0 Jul 5 22:14 /lib/x86_64-linux-gnu/test.ignore
-rw-r--r-- 1 root root 0 Jul 5 22:14 /usr/lib/x86_64-linux-gnu/test.ignore
그러나 나는 그것이 어떻게 작동하는지 이해하지 못합니다. 이제는 그 안의 파일 /lib/x86_64-linux-gnu/
도 삭제되기 때문에 그 안의 파일을 삭제할 수 없다는 것을 알고 있습니다 /usr/lib/x86_64-linux-gnu/
.
답변1
답변2
Stephen Kitt의 답변을 통해 내 질문에 대한 답변은 다음과 같습니다.
/lib/x86_64-linux-gnu/
및/usr/lib/x86_64-linux-gnu/
예, 심볼릭 링크가 있습니다:
$ ls -ld /lib /usr/lib
lrwxrwxrwx 1 root root 7 Jul 5 20:34 /lib -> usr/lib/
drwxr-xr-x 75 root root 4096 Jul 6 00:42 /usr/lib/
- 출력에 의존하여
dpkg --search
표시된 경로를 제거 할 수 있습니까no path found …
? 아니면 이 난잡함을 정리하는 데 도움이 되는 도구가 있나요?
아니요, 일부 파일이 다음에 설치되어 있기 때문에 dpkg --search
on을 사용하면 /lib
관련 없는 결과만 제공됩니다 /usr/lib/
.
$ dpkg --search /lib/x86_64-linux-gnu/perl/cross-config-5.36.0/Config.pm \
/usr/lib/x86_64-linux-gnu/perl/cross-config-5.36.0/Config.pm
dpkg-query: no path found matching pattern /lib/x86_64-linux-gnu/perl/cross-config-5.36.0/Config.pm
libperl5.36:amd64: /usr/lib/x86_64-linux-gnu/perl/cross-config-5.36.0/Config.pm
이 파일을 삭제하면 /lib/x86_64-linux-gnu/perl/cross-config-5.36.0/Config.pm
그 안의 파일도 삭제되어 /usr/lib
전체 시스템이 손상될 수 있습니다.
- 내 시스템의 어떤 이벤트로 인해 이런 일이 발생할 수 있습니까?
Stephen이 공유한 링크에서 설명했듯이 데비안 12에서는 to to /lib
심볼릭 링크가 /usr/lib/
정상입니다.