過去数日間、私は PIPを広範囲にテストしてきました およびPipenv ArchLinuxシステムのツール。これらのツールをテストしている間、Python2.x、Python 3.xパッケージ、およびその他のPython依存関係パッケージを何度も再インストールしてダウングレードする必要がありました。ある時点で、それは私のArch Linuxを壊し、pacmanは動作を停止しました。 pacmanを実行するたびに、「pacman:共有ライブラリのロード中にエラーが発生しました:libidn2.so.0:共有オブジェクトファイルを開けません:そのようなファイルまたはディレクトリはありません」というエラーが発生しました。 。
pacman:共有ライブラリのロード中にエラーが発生しました:libidn2.so.0:共有オブジェクトファイルを開くことができません:そのようなファイルまたはディレクトリはありません
pacmanだけでなく、pacaur、yaourt、packer、virtualbox、transmissionなどの他のアプリケーションも動作を停止しました。これらのアプリケーションのいずれかを開こうとすると、「共有ライブラリのロード中にエラーが発生しました:libidn2.so.0:共有オブジェクトファイルを開くことができません」というメッセージが表示され続けます。思い出せないものをアンインストールした可能性があります。運が悪かったのですが、これは私の個人的なシステムであり、アプリケーションがたくさんあるので再インストールしたくありません。そのため、OSとすべてのアプリケーションの再インストールには、2日またはそれ以上かかる場合があります。 Arch Linux wikiや狂人のような他のLinuxフォーラムを精力的に検索した後、私はついにそれを修正することができました。このような問題が発生した場合は、どこにも目を向けずに、ソースファイルをダウンロードして、不足しているファイルを / usr / lib /にコピーしてください。 フォルダ。私がウェブで検索した限り、この方法はこれまでのところ非常に簡単な方法のようです。このエラーをどのように修正したかを知るために読んでください。
「pacman:共有ライブラリのロード中にエラーが発生しました」を修正しました。ArchLinuxでのエラー
すでに述べたように、このエラーが発生し続けました-「pacman:共有ライブラリのロード中にエラーが発生しました:libidn2.so.0:共有オブジェクトファイルを開くことができません:そのようなファイルまたはディレクトリはありません」 pacmanコマンドまたはpacaur、packer、yaourtなどのAURヘルパーを実行すると、VirtualBoxアプリケーションとTransmissionクライアントを開くことさえできません。したがって、ここでの実際の問題は、ファイル "libidn2.so.0"です。 行方不明になっています。私たちはそれを見つける必要があります!
$ ls -la /usr/lib/libidn*
Arch Linuxシステムからの出力例:
lrwxrwxrwx 1 root root 22 Jul 22 2013 /usr/lib/libidnkitlite.so -> libidnkitlite.so.1.0.2 lrwxrwxrwx 1 root root 22 Jul 22 2013 /usr/lib/libidnkitlite.so.1 -> libidnkitlite.so.1.0.2 -rw-r--r-- 1 root root 276352 Jul 22 2013 /usr/lib/libidnkitlite.so.1.0.2 lrwxrwxrwx 1 root root 18 Jul 22 2013 /usr/lib/libidnkit.so -> libidnkit.so.1.0.2 lrwxrwxrwx 1 root root 18 Jul 22 2013 /usr/lib/libidnkit.so.1 -> libidnkit.so.1.0.2 -rw-r--r-- 1 root root 282368 Jul 22 2013 /usr/lib/libidnkit.so.1.0.2 lrwxrwxrwx 1 root root 17 Aug 15 19:00 /usr/lib/libidn.so -> libidn.so.11.6.16 lrwxrwxrwx 1 root root 17 Aug 15 19:00 /usr/lib/libidn.so.11 -> libidn.so.11.6.16 -rwxr-xr-x 1 root root 210872 Aug 15 19:00 /usr/lib/libidn.so.11.6.16
「libidn.so」を持っていましたが、「libidn2.so.0」が見つかりません。 pacmanおよびその他のパッケージマネージャーが機能しなかったため、公式リポジトリまたはローカルキャッシュからパッケージをインストール、アップグレード、またはダウングレードする方法はありません。したがって、インターネットから不足しているファイルを含むパッケージをダウンロードし、それを抽出して、最後に不足しているファイルを/ usr /lib/ディレクトリにコピーすることが唯一の方法であると考えました。 libdin2 tarファイルを保存するためのディレクトリを作成しましょう:
$ mkdir libidn
$ cd libidn
このパッケージの最新バージョンを見つけてダウンロードします。クイックグーグル検索は私をここにもたらしました 。ファイルを抽出します:
$ tar xf libidn2-2.0.4-2-x86_64.pkg.tar.xz
上記のコマンドは、「usr」という名前のディレクトリにあるファイルの内容を抽出しました。 usr/libフォルダーに移動します:(注 - usr / libです 、 / usr / libではありません )
$ cd usr/lib
最後に、不足しているファイルをコピーします。この場合は、 libidn2.so.0です。 、ArchLinuxシステムの/usr /lib/ディレクトリに移動します。
$ sudo cp libidn2.so.0 /usr/lib/
次に、実行しました:
$ sudo pacman -syu
ArchLinuxを更新する
出来上がり!パックマンは今働いています!おっと!ああ、いや、待って..それはうまくいきませんでした。数分後にこのエラーが発生しました。
[....] (511/511) checking keys in keyring [######################] 100% (511/511) checking package integrity [######################] 100% (511/511) loading package files [######################] 100% (511/511) checking for file conflicts [######################] 100% error: failed to commit transaction (conflicting files) libidn2: /usr/lib/libidn2.so.0 exists in filesystem Errors occurred, no packages were upgraded.
これを修正するために、私は実行しました:
$ sudo pacman -S libidn2 --force
その後、もう一度更新してみました:
$ sudo pacman -Syu
修理済み!!今はすべて良いです。したがって、「共有ライブラリの読み込み中にエラーが発生しました:..共有オブジェクトファイルを開くことができません:そのようなファイルやディレクトリはありません」のような問題が発生した場合 、これを修正する1つの方法は、不足しているファイルを含むパッケージを見つけ、そのパッケージの最新バージョンをダウンロードして抽出し、不足しているファイルを / usr / lib /にコピーすることです。 ディレクトリ。もちろん、そのような問題を解決する方法はたくさんあります。しかし、これは私が見つけることができた唯一の実用的な解決策であり、私はこれをはるかに簡単かつ迅速に見つけることができます。このトリックは他のLinuxディストリビューションでも機能する可能性があります。
関連記事:
- 壊れたArchLinuxを以前の動作状態に復元する方法
- ArchLinuxで「データベースをロックできない」エラーを修正する方法
- Arch Linuxで「無効または破損したパッケージ(PGP署名)」エラーを修正する方法
- 「完全なシステムアップグレードを開始する…何もすることがない」問題をArchLinuxで解決する方法
- Arch Linuxで「エラー:トランザクションのコミットに失敗しました(ファイルの競合)」を解決する方法