私は長い間Debian Wheezyを使ってきました。私は今日1つ実行しましたが、dpkg upgrade
なんだか真剣に問題が発生しました。アップグレードが中断apt-get
され、現在実行されていませんdpkg
。
# dpkg
dpkg: error while loading shared libraries: libselinux.so.1: cannot open shared object file: No such file or directory
欠落しているファイルを含む.debファイルをダウンロードできますが、作業ツールなしではインストールできません。このCatch-22からどのように抜け出すことができますか?
答え1
パフォーマンスを向上させるには、標準ディレクトリのライブラリファイルをキャッシュに登録する必要があります。アップグレードが間違った時間に中断されると、ライブラリファイルはファイルシステムにありますが、キャッシュには存在しない可能性があります。走るldconfig
キャッシュをルートに更新します。
動的ライブラリの問題を解決するのに役立つように、静的にリンクされたユーティリティのコレクションを使用すると便利です。busybox-static、ウエストバンド、zsh - 静的。
答え2
.deb
次のコマンドを組み合わせてファイルの内容を抽出できます。ar
tar
mkdir /tmp/selinux
cd /tmp/selinux
ar p /path/to/libselinux.deb data.tar.gz | tar xz
パッケージのコンテンツは、現在ディレクトリにルートがある階層で解凍され、必要なファイルを適切な場所に移動できます。 libselinuxの場合、これは単なる可能性があります/lib/x86_64-linux-gnu/libselinux.so.1
(ディレクトリ名はアーキテクチャによって異なります)。
この機能を再利用した後は、dpkg -i
パッケージ全体を再インストールする必要があります。