archlinuxに同じパッケージの2つのバージョンを保持するにはどうすればよいですか?


8

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

注:RパッケージはIntel MKLlibiary に対してビルドされているため、新しいバージョンの依存関係では機能しません。私はRを再構築しようとしました-それはまだ古いものに依存しますlibicuuc.so.55


2
そのようなことは公式リポジトリでは起こらないはずです。完全に更新していない場合でも、部分的な更新はarchlinuxのローリングリリースではサポートされていないためです。それが本当にこのようになっている場合(完全に更新されたシステム上)、バグを報告する必要があります。
bvolkmer 2015年

回答:


6

古いライブラリで特定の実行可能ファイルを実行したいと思います。実行可能ファイルを呼び出しましょうmyprogram

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

LD_LIBRARY_PATH=/opt/oldlibs myprogram

ライブラリファイルは、パッケージファイルから抽出できます(おそらくで見つけることができます/var/cache/pacman/pkg)。

これでアプリケーションの使用方法の問題が解決しない場合は、代わりにchrootまたはコンテナーで実行することを検討できます。


1
* BSDとLinuxの経験が混ざり合っている私は、jailまたはchrootと呼ぶことを2度考えています。実際の名前は刑務所ではなく、それを達成するためのコマンドをchrootしますか?それ以外の場合は、優れた回答です。
Rui F Ribeiro、

@RuiFRibeiro「jail」は* BSDでの一般的な用語だと思います(安全性が高いため、chrootとは動作が異なります)が、Linuxでは「chroot」がより一般的に使用されていると思います。LinuxでのBSDの刑務所に相当するのは、セキュリティに関しては、Linuxコンテナだと思います。入力いただきありがとうございます。
Alexander

1
お答えいただきありがとうございます。私は置くことを指摘しなければならない/opt/oldlibs//etc/ld.so.conf.d/R.conf。(R.confファイルは既にそこにあり、R標準のlibパスが含まれています。)
Nick

0

Arch Linuxの私の経験

systemctl start mongodbはプロセス開始エラーを与えます

私は単にヒット journalctl -xeを現在のログをチェックします

不足しているlibboost_system.so.1.64.1(古いもの)を表示します

それは私がそれを使って解決するsumlinkです

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 package_nameを使用し てください。部分的な更新はサポートされていません(archの場合)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.