btoメモ

なんか適当に書く

複数パッケージをインストールする場合はライブラリのパスに気をつける

またまたELFさんとこからTBをもらいました。

ありがとうございます。

続: includeとlibはワイルドカード指定はよくないのでは?

シンボリックリンクにしなかったのはhttpd.confを修正したくなかったから(趣味の問題ですね

僕も極力オリジナルのファイルは修正しないようにしてます。なので別ファイルに

<Directory "/var/www/cgi-bin">
Options FollowSymLinks
</Directory>

と書いてます。

パーティションが同じなら cp ではなくてハードリンクでもいいと思います。ハードリンクならバイナリが書き換えられても大丈夫だし、設定ファイルも変更する必要がない。

ABIがデグレードした場合,foo-1.1.1のABIに依存するバイナリはことごとく実行できなくなります.

また,アップグレードの場合でも動作しなくなる場合があります.

この辺は /etc/ld.so.conf.d でライブラリパスを追加してやると問題ないです。ライブラリにはバージョン番号がついている(はず)なので、たとえシンボリックリンクでデフォルトの参照先を変更しても実行時にはちゃんとコンパイル時にリンクしたバージョンのライブラリを参照してくれます。逆に言うと実行時にコンパイル時にリンクしたバージョンのライブラリを参照しようとするので、ちゃんと過去のバージョンのライブラリを残しておかないと、実行できなくなります。

Red Hat 系でベタなところだとcompatシリーズのパッケージ.

これでgcc 4系(ABI的には3.4系も)3.2系,2.96系が共存します.opensslもありますね(openssl-*,openssl097fとか).

私も同様なやり方でいくつかの独自パッケージを共存させています(ABIが変化したときに依存関係を崩さずにアップデートとかでは常套手段)

できないって言い切っちゃうのは、よくない表現でしたね。すみません。

もちろん過去との互換性を保つために古いライブラリ類のパッケージが存在するのは知ってます。かつては僕もディストリ作ってましたから。この手のパッケージは過去の互換性のために存在するので、ライブラリや実行ファイルのみの存在なんですよね。ヘッダファイルの共存まではできない。なので、任意のバージョンのライブラリにリンクすることができないという問題があります。