Archで「ファイルシステム」パッケージをアップグレードできない

Archで「ファイルシステム」パッケージをアップグレードできない

ファイルシステムを最新バージョンにアップグレードすることはできませんが、最新バージョン/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パッケージのファイルやメンテナンスされていないファイルも問題を引き起こす可能性があることに注意してくださいfilesystemfilesystem次の条件で更新が失敗したとします。

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機能します。

ありがとうジェイソン・ライアン私の答えを訂正してください。

関連情報