Archlinuxで同じパッケージの2つのバージョンを維持する方法は?

Archlinuxで同じパッケージの2つのバージョンを維持する方法は?

私はArchlinuxを実行しています。最近呼び出されたパッケージの1つがicu更新されましたが、Firefoxはlibicuuc.so.56Rに依存していますlibicuuc.so.55。この問題をどのように解決できますか?

注:RパッケージはIntel MKLライブラリ用に構築されているため、新しいバージョンの依存関係では機能しません。 Rを再構築してみました。それでも以前のバージョンに依存しています。libicuuc.so.55

答え1

私はあなたが古いライブラリを使って特定の実行可能ファイルを実行したいと思います。実行ファイルを呼び出してみましょうmyprogram

libicuuc.so.55たとえば、別のディレクトリに配置する場合は、次のコマンドを使用して古いライブラリを使用するように指示/opt/oldlibs/libicuuc.so.55できます。myprogram

LD_LIBRARY_PATH=/opt/oldlibs myprogram

ライブラリファイルはパッケージファイルから抽出できます(リソースにあります/var/cache/pacman/pkg)。

それでもアプリケーションの使用計画の問題が解決しない場合は、chroot限られた環境(使用)またはコンテナで実行することを検討できます。

答え2

ArchiLinuxの使用経験

systemctl start mongodbでプロセス起動エラーが発生する

ただ当たった ログ制御-xe現在のログの確認

libboost_system.so.1.64.1が欠落していることを示しています(以前のもの)。

以下は、問題を解決するために使用した要約リンクです。

readlink -f /lib/libboost_system.so.1.65.1  (new one)

readlink は、シンボリックリンクが /usr/lib/libboost_system.so.1.65.1 を指していることを伝えます。

/var/cache/pacman/pkgからBoost-libs 1.64を抽出し、すべての/libファイルを/usr/libに貼り付けました。古いファイルを上書きするにはスキップします

これにより、依存関係を破る追加のタスクが解決されましたが、それでも機能しない場合は、欠落しているシンボリックリンクを作成します。

 ln -s /lib/libboost_system.so.1.64.1 /usr/lib/libboost_system.so.1.64.1 

得た経験

パッチを見つけずに常に使用してください。 pacman -Suy && pacman -S パッケージ_名前何でもインストールするために使用されます。部分更新はサポートされていません(アーチの場合)

関連情報