あるサーバーでは最新のライブラリを使用し、古いサーバーではバイナリを使用してソースをコンパイルします。

あるサーバーでは最新のライブラリを使用し、古いサーバーではバイナリを使用してソースをコンパイルします。

ソースからソフトウェアをコンパイルするには最新のライブラリが必要libpcre3-devですが、私のサーバー上のオペレーティングシステム(Ubuntu)の現在のディストリビューションには以前のバージョンしかありませんが、libpcre3-dev利用可能なバックポートはありません。

libpcre3-dev最新バージョンで別のサーバーでバイナリをコンパイルし、実際のサーバーにバイナリを再インストールするつもりです。 2つの質問があります。

  1. これはうまくいきますか?私の主な関心事は、libpcre3私のサーバーにまだ古いバージョンがあり、バイナリが最新libpcre3バージョンにコンパイルされていても、実行時にまだ最新バージョンが必要であることですlibpcre3-dev

  2. 私のサーバーにバイナリを再インストールする最良の方法は何ですか?バイナリをコピーするか、.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 "$@"

おすすめ記事