古くなった本番マシンに最新のソフトウェアをインストールする効果的な方法は何ですか?

古くなった本番マシンに最新のソフトウェアをインストールする効果的な方法は何ですか?

私の会社では、数値計算(具体的には有限要素計算)を行うために、小規模な旧式のクラスタ(CentOS 5.4)を使用しています。商用パッケージを使用しており、Linuxについてはまったく知りません。マシンが稼働している限り、マシンに何も変更を加えたくないと考えています。これは時間効率の良いポリシーとして受け入れています。ない管理者権限を持ちます。

より小さなパッケージをインストールさせることはできますが、たとえば Python のバージョンを 2.4 から 2.6+ に変更することはできません。そこで、現在のバージョン ( ) をコンパイルすることにしましたが、依存関係でいくつかの問題が発生しました (たとえば、readline、zlib、curses、bz2 のバージョンが間違っている、またはパッケージが見つからない)。また、、およびが./configure --prefix=/home/mysuser/root2見つからないというエラーを発する gcc を更新する必要もあります。GMPMPFRMPC

これを行う理由は、これらのマシンで実行するために他のテストソフトウェアをコンパイルしたいからです。作業に必要なソフトウェアをコンパイルするために必要なパッケージを効果的にインストールするにはどうすればよいでしょうか?私は他の場所で使用していますアーチリナックスそして、次のようなことができると非常に便利だと思います

pacman --root /home/myuser/root2 -S <package>

しかし、これが可能なのか、あるいは賢い方法なのかは分かりません。

その他の関連する SE の質問:gentoo プレフィックスそしてパッケージそれほど簡単ではないようです(間違っているかもしれませんが)。

答え1

管理者は、独自のパッケージに基づいて重要な機能を実行している稼働中のクラスターをアップグレードしようとしないのが賢明です。

パッケージのバックポートは時間がかかり、リスクも伴います。つまり、必ずしも実行可能というわけではありません。インストールしたいパッケージをオリジナルの CentOS 5.4 リポジトリまたは CentOS 5.4 バックポート リポジトリで見つけることができれば、時間の無駄を省くことができます。1 つのホストに複数のバージョンの GCC を同時にインストールすることはできますが (組み込みシステム/クロス コンパイルの開発者はこれを常に行っています)、単一のランタイム環境に複数の glibc をインストールするのは簡単ではありません。

したがって、必要なパッケージを備えた別の新しい環境で作業し、古い環境の出力を新しい環境でテストする方法を見つけることをお勧めします。いずれにしても、古い環境で何かを壊すリスクを冒さないでください。そうしないと、次の仕事を見つけるために、stackexchange.com の評判ポイントをすべて獲得する必要がある可能性があります ;-)

答え2

ディストリビューションからパッケージをインストールするのは、固定のディレクトリ レイアウトが想定されており、依存関係システムでは非ルートではインストールできない setuid または setgid プログラムを含むパッケージが必要になる傾向があるため、ルート権限がない場合には難しいことがよくあります。

ソースからコンパイルするのが、たいていの場合最も簡単な方法です。(速度を重視する場合は、特定のプロセッサ モデルに最適なコンパイル オプションを選択できます。)

コンパイルした(またはtarballを解凍してインストールした)パッケージを整理するには、以下を使用することをお勧めします。収納するあるいはより強力だがより複雑なエクストウ基本的な動作モードは、各パッケージを別々のディレクトリにインストールし、それらをすべてまとめるためのシンボリック リンクを作成することです。以下は、stow を使用した典型的なコンパイルおよびインストール セッションです。

tar xzf foobar-42.tar.gz
cd foobar-42
./configure --prefix=~/software/stow/foobar-42
make
make install
cd ~/software/stow
stow foobar-42

最後のコマンドは、~/software/stowの下にあるファイルとディレクトリからシンボリックリンクを作成します~/software。たとえば、にディレクトリとファイルと が~/software/stow/foobar-42含まれている場合、シンボリックリンクが作成されます。lib/foobarbin/foobarman/man1/foobar.1

~/software/bin/foobar -> ../stow/foobar-42/bin/foobar
~/software/lib/foobar -> ../stow/foobar-42/lib/foobar
~/software/man/man1/foobar.1 -> ../../stow/foobar-42/man/man1/foobar.1

プログラムをアンインストールするには、ディレクトリstow -D foobar-42で を実行し~/software/stow、 を削除します~/software/stow/foobar-42。プログラムを一時的に使用不可にするには (別のバージョンを試すなど)、 のstow -D部分を実行するだけです。

参照非ルートパッケージマネージャー;Ubuntu 10.04 で vim/gvim を 7.3 にアップグレードする最善の方法は何ですか?

関連情報