概要
CentOS7では、デフォルトで/libと/usr/lib以下のファイルは、共有ライブラリとして含まれています。
それ以外のディレクトリのライブラリを追加したい場合は、以下のいずれかの方法で設定する必要があります。
OpenSSLのインストール
今回は例として、OpenSSLを共有ライブラリに追加するため、インストールをします。
参考:CentOS7にOpenSSL1.1.1をインストール
特定のユーザーのみが使えるようにする方法
LD_LIBRARY_PATHは、/etc/ld.so.confで定義されたパスよりも優先されます。
設定したいディレクトリ以下のライブラリを全て参照するようになります。
$ LD_LIBRARY_PATH=/usr/local/openssl-1.1.1/lib; export LD_LIBRARY_PATH
設定したいディレクトリが複数ある場合は、:
で区切って設定します。
$ LD_LIBRARY_PATH=/usr/local/lib:/usr/lib; export LD_LIBRARY_PATH
ちなみに、LD_LIBRARY_PATHの設定を以下で定義しても反映されません。
- $HOME/.profile
- /etc/profile
- /etc/environment
参考:EnvironmentVariables - Community Help Wiki
LD_LIBRARY_PATH についての説明から抜粋
Note: You can only set this environment variable inside an interactive shell. Since Ubuntu 9.04 Jaunty Jackalope, LD_LIBRARY_PATH cannot be set in $HOME/.profile, /etc/profile, nor /etc/environment files. You must use /etc/ld.so.conf.d/*.conf configuration files. See Launchpad bug #366728 for more information.
参考:LD_LIBRARY_PATH を設定しても反映されないことがある
システム全体で永続的に使いたい場合
追加するライブラリ
今回は例として、以下のopensslのライブラリ群を追加します。
$ sudo ls -l /usr/local/openssl-1.1.1/lib
total 10432
drwxr-xr-x 2 root root 39 Apr 17 04:12 engines-1.1
-rw-r--r-- 1 root root 5599274 Apr 17 04:12 libcrypto.a
lrwxrwxrwx 1 root root 16 Apr 17 04:12 libcrypto.so -> libcrypto.so.1.1
-rwxr-xr-x 1 root root 3370584 Apr 17 04:12 libcrypto.so.1.1
-rw-r--r-- 1 root root 1019068 Apr 17 04:12 libssl.a
lrwxrwxrwx 1 root root 13 Apr 17 04:12 libssl.so -> libssl.so.1.1
-rwxr-xr-x 1 root root 685240 Apr 17 04:12 libssl.so.1.1
drwxr-xr-x 2 root root 61 Apr 17 04:12 pkgconfig
共有ライブラリとして認識されているパスの確認
以下コマンドで読み込まれているパスを確認できます。
$ sudo ldconfig -p
ライブラリ追加前の状態を確認します。ssl関係のライブラリは/lib64
のもののみ認識されています。
$ sudo ldconfig -p | grep libssl
libssl3.so (libc6,x86-64) => /lib64/libssl3.so
libssl.so.10 (libc6,x86-64) => /lib64/libssl.so.10
ライブラリを追加する
システム全体に永続的にライブラリを追加したい場合は、/etc/ld.so.conf
に定義します。
実際にファイルの中を見てみると、以下のようになっています。
$ sudo cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/etc/ld.so.conf
で直接定義することもできますが、/etc/ld.so.conf.d
の下にファイルを作成して定義することを推奨します。
/etc/ld.so.conf.d/openssl-1.1.1.confを作成して、以下を定義します。
/usr/local/openssl-1.1.1/lib
キャッシュファイルを更新
OSはライブラリを検索する際に、/etc/ld.so.confを直接参照するのではなく、/etc/ld.so.cacheというキャッシュファイルを参照するため、以下のコマンドでこのキャッシュファイルを更新します。
$ sudo ldconfig
ライブラリが追加されたことを確認
以下コマンドで/usr/local/openssl-1.1.1/lib
以下のライブラリが追加されたことを確認できます。
$ sudo ldconfig -p | grep libssl
libssl3.so (libc6,x86-64) => /lib64/libssl3.so
libssl.so.10 (libc6,x86-64) => /lib64/libssl.so.10
+ libssl.so.1.1 (libc6,x86-64) => /usr/local/openssl-1.1.1/lib/libssl.so.1.1
+ libssl.so (libc6,x86-64) => /usr/local/openssl-1.1.1/lib/libssl.so