ソースからソフトウェアをコンパイルするには最新のライブラリが必要libpcre3-dev
ですが、私のサーバー上のオペレーティングシステム(Ubuntu)の現在のディストリビューションには以前のバージョンしかありませんが、libpcre3-dev
利用可能なバックポートはありません。
libpcre3-dev
最新バージョンで別のサーバーでバイナリをコンパイルし、実際のサーバーにバイナリを再インストールするつもりです。 2つの質問があります。
これはうまくいきますか?私の主な関心事は、
libpcre3
私のサーバーにまだ古いバージョンがあり、バイナリが最新libpcre3
バージョンにコンパイルされていても、実行時にまだ最新バージョンが必要であることですlibpcre3-dev
。私のサーバーにバイナリを再インストールする最良の方法は何ですか?バイナリをコピーするか、
.deb
パッケージに入れて(可能な場合)、パッケージマネージャを使用してインストールしますか?
答え1
プログラムがサーバーで利用できない新機能が必要な場合、その機能は実行時に使用できず、プログラムが実行されない可能性があります。
ライブラリを静的にリンクできます。欠点は、プログラムとは別にライブラリをアップグレードできないことです。このバージョンのライブラリでセキュリティの脆弱性が見つかった場合は、プログラムを再構築する必要があります。-lpcre3
リンカコマンドラインから/usr/lib/libpcre3.a
。
ソフトウェアがインストールされているのと同じディレクトリにライブラリを動的にリンクしてコピーできます。ソフトウェアは、この追加のディレクトリを含むようにライブラリのロードパスを設定するラッパースクリプトを介して起動されます。
#!/bin/sh
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/my-software/lib"
/opt/my-software/bin/foo "$@"