ファイルシステムを最新バージョンにアップグレードすることはできませんが、最新バージョン/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からアップグレードするときに発生する可能性のある問題の1つは、
/usr/lib64
このディレクトリのファイルを含むすべてのArch Linuxパッケージが更新されたことです。したがって、まずこれらのパッケージを個別に更新します。このディレクトリにファイルを含むすべてのAURパッケージを更新することによって/usr/lib
。
答え2
このソリューションは、質問に記載されている問題に対して正しく機能しません(しかし、このために)、しかしとにかく役に立つかもしれません。
filesystem
通常、アップデートの失敗は、このパッケージをアップデートする前にアップデートする必要がある他のパッケージによって引き起こされます。したがって、次のように更新してください。
$ sudo -s
# pacman -Syu --ignore filesystem,bash
# pacman -S bash
# pacman -Su
sudo
最初のコマンドは、アップデート中にルートシェルが破損した場合に備えて、ルートシェルが開いていることを確認することです。 2番目のコマンドは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
機能します。
ありがとうジェイソン・ライアン私の答えを訂正してください。