ソースからアプリケーションをインストールしようとしていますが、abcと呼ばれる共有ライブラリが必要です。設定プロセスは、でabcの0.23バージョンを指すlibabc.so
シンボリックリンクを見つけました。しかし、私がインストールしたいプロジェクトには最新バージョンのabcが必要です。 abcのソースコードをダウンロードし、インストールプロセスに従いました。これでabcバージョンがインストールされました。ただし、インストールしているアプリケーションのユーティリティは、まだabcバージョンが不足しているため、インストールを続行できないと文句を言います。システムにインストールされているabcを0.23から0.24にアップグレードする方法は?潜在的なハッカーとして、私はforのシンボリックリンクを変更してファイルを指すようにすることができると思います。しかし、それがきれいな解決策ではないと思います。もう1つの可能性は、何とか設置者に知らせることです。最良の方法は何ですか?/usr/lib
/usr/lib folder
0.24
(configure, make, make install)
0.24
/usr/local/lib
configure
0.23
/usr/lib/libabc.so
/usr/local/lib
/usr/local/lib
/usr/local/lib
設定ファイルの1つがにリストされています/etc/ld.so.conf.d/
。
ベストアンサー1
デフォルトでは、これがアップグレードであり、既存のプログラムも0.24に依存できる場合は、以前にインストールされたライブラリを新しいプログラムで上書きすることをお勧めします(これをより高いレベルの「アップグレード」と呼びます)。これらすべてを管理するには、パッケージマネージャを使用する方が良いが、デプロイメントリポジトリでソースコードを使用できないいくつかのライブラリを見つけることができます。
デフォルトでは、手動でビルドされたライブラリは実行されますが、/usr/local/lib
これはスクリプトによって決まりますconfigure
。ただし、可能であれば変更できます。
$ ./configure --prefix=/usr
$ make
$ sudo make install
プレフィックスとして使用されると、ライブラリオブジェクトは、headers、設定など/usr
に移動します。これはデフォルトで以前のバージョンのライブラリを上書きする必要があります。開発者が正しく保守している場合は、両方のバージョンのファイルに同じ名前を持たなければならないからです。/usr/lib
/usr/include
/usr/etc
.so
0.23を維持するには(たとえば、最初のプログラムが0.24を処理できない場合)、最後のスクリプト/usr/local
(configure
0.24が必要なプログラムに関連付けられているスクリプト)への新しいライブラリ(at)へのパスを指定する必要があります。 )。
ほとんどの場合、configure
スクリプトはこれらの状況に遭遇した人がインストールしたときに特定できるようにライブラリパスを指定するスイッチを提供します。これらのスイッチのリストはを介して表示する必要があります./configure --help
。あなたの場合、標準によると、これらのスイッチは次のいずれかで--with-libabc
呼び出される必要があります--with-abc
。
$ ./configure --with-libabc=/usr/local/lib
PHPの依存関係が良い例ですlibxml
。
$ ./configure --with-libxml-dir=...
--with-libdir
一部のスクリプトは、ライブラリ検索パスを完全に変更できるスイッチを提供することもできます。
$ ./configure --with-libdir=...
また、見たいと思うかもしれませんconfig.site
ファイルに関するスタックオーバーフローの質問です。。