파일 시스템을 최신 버전으로 업그레이드할 수 없는데 최신 버전 /lib
이 /lib64
존재합니다.
링크를 제거할 수 없습니다. 그렇지 않으면 모든 바이너리가 실행되지 않습니다.
어떤 아이디어가 있나요?
# pacman -S filesystem
:: filesystem is in IgnorePkg/IgnoreGroup. Install anyway? [Y/n]
resolving dependencies...
looking for inter-conflicts...
Targets (1): filesystem-2013.01-3
Total Installed Size: 0.31 MiB
Net Upgrade Size: 0.21 MiB
Proceed with installation? [Y/n]
(1/1) checking package integrity [###############################] 100%
(1/1) loading package files [###############################] 100%
(1/1) checking for file conflicts [###############################] 100%
error: failed to commit transaction (conflicting files)
filesystem: /lib exists in filesystem
filesystem: /lib64 exists in filesystem
Errors occurred, no packages were upgraded.
답변1
문제는 심볼릭 링크가 다른 패키지로 옮겨졌을 /lib
때 지적되었습니다 .
filesystem-2013.01-1과 glibc-2.17-2를 함께 업데이트합니다.
/lib 심볼릭 링크가 glibc 패키지에서 보다 적절한 파일 시스템 패키지로 이동되었으므로 glibc-2.17-2와 filesystem-2013.01-1을 함께 업데이트해야 합니다. 이는 를 실행할 때 자동으로 발생합니다
pacman -Syu
. 부분 업데이트는 지원되지 않으므로 이--force
옵션을 사용해서는 안 됩니다.x86_64에서 업그레이드할 때 발생할 수 있는 문제 중 하나는
/usr/lib64
이 디렉터리의 파일을 포함하는 모든 Arch Linux 패키지가 업데이트되었다는 것입니다. 따라서 먼저 이러한 패키지를 개별적으로 업데이트하십시오. 이 디렉터리에 파일이 포함된 모든 AUR 패키지를 업데이트하여/usr/lib
.
답변2
이 솔루션은 질문에 설명된 문제에 대해 정확하게 작동하지 않습니다(하지만 이를 위해), 하지만 어쨌든 도움이 될 수 있습니다.
filesystem
일반적으로 업데이트 실패는 이 패키지를 업데이트하기 전에 업데이트해야 하는 일부 다른 패키지로 인해 발생합니다 . 따라서 다음과 같이 업데이트하십시오.
$ sudo -s
# pacman -Syu --ignore filesystem,bash
# pacman -S bash
# pacman -Su
sudo
첫 번째 명령은 업데이트 중에 루트 쉘이 손상될 경우를 대비해 루트 쉘이 열려 있는지 확인하는 것입니다 . 두 번째 명령은 filesystem
이 패키지를 제외한 모든 패키지를 업데이트하고 마지막 명령은 마지막으로 filesystem
.
AUR 또는 자체 컴파일된 패키지를 사용하는 경우:AUR 패키지의 파일이나 유지 관리되지 않은 파일도 문제를 일으킬 수 있다는 점에 유의하세요 filesystem
. filesystem
다음 조건으로 인해 업데이트가 실패한다고 가정해 보세요.
filesystem: /bin exists in filesystem
filesystem: /sbin exists in filesystem
filesystem: /usr/sbin exists in filesystem
AUR 패키지 또는 유지 관리되지 않는 파일을 확인 /bin
하고 다음 명령을 /sbin
사용해야 합니다 ./usr/sbin
grep '^\(bin\|sbin\|usr/sbin\)' /var/lib/pacman/local/*/files | cut -d ":" -f 1 | uniq | cut -d "/" -f 6
이 디렉터리 중 하나에 파일을 보관하는 모든 패키지를 나열하고
find /bin /sbin /usr/sbin -exec pacman -Qo -- {} + >/dev/null
어떤 패키지에도 속하지 않는 이 디렉터리의 모든 파일을 나열합니다.
AUR 패키지를 업데이트하거나 유지 관리되지 않는 파일을 /usr/local/...로 이동하면 업데이트가 filesystem
작동합니다.
감사해요제이슨 라이언내 대답을 정정하십시오.