メンテナンスされていない古いコンピュータに新しいパッケージをインストールします。

メンテナンスされていない古いコンピュータに新しいパッケージをインストールします。

私たちは2005年にインストールされた古いサーバー(Fedora Core 4)を持っています。このサーバーは更新されませんでした。外部世界と直接接続しなくても生産ラインを監視できる特殊ソフトウェアを実行する。

システムのアップグレードに問題はありません。

一部のユーティリティにはエラーがあるか、オプションがありません。いくつかの他のユーティリティがありません。

このサーバーにいくつかのスクリプトをインストールする必要があります。最大の問題は、Bashが本当に古くて便利なものが欠けていることです。私はよくテストされたスクリプトをハックするという考えが好きではありません。

システムを変更せずに最新のBashを実行して新しいプログラムをインストールする方法はありますか?

BusyBoxのような?それともchroot内で? chrootの問題は、実際のシステムにアクセスするのが難しいことです。たとえば、私のバックアップスクリプトは機能しません。

答え1

私の考えの最も簡単な方法は、別のインストールのプログラムとライブラリを別々のディレクトリに一括コピーすることです。たとえば、数百メガバイトにすぎず、必要なものすべてを含めることができるsystemrescuecdなどのライブCDから/opt/new/にコピーします。これにより、どのライブラリが必要かを検索/検索/推測/テストすることなく複製できます。

LD_LIBRARY_PATH=/opt/new/lib/ ; /opt/new/bin/diffその後、このプログラムを使用または実行できますLD_LIBRARY_PATH=/opt/new/lib/ ; /opt/new/bin/bash 。これは、ユーティリティが理解できなくなった古い設定ファイルを読み取らなくなるまで完全に機能します。それとも悪いことは、彼らが書くのをやめるまでです。

成功したら、新しいライブラリを/ lib /にコピーしてLD_LIBRARY_PATHトリックを忘れることができます。ファイル名が競合しない限り、これは安全です(他の提案も大歓迎です)。

大胆に古いバイナリを新しいバイナリに置き換えることもできます(選択したバイナリのみ)、これは本番サーバーには適していない可能性があります。

答え2

専用ユーザーのホームディレクトリに必要なツールをコンパイルしてインストールできます。

専用ユーザーの環境変数PATHLD_LIBRARY_PATH

必要なステップは次のようになります。

  1. 新しいユーザーを作成する:cooluser
  2. ~cooluser/Localディレクトリの作成
  3. ~cooluser/.profile必要に応じて設定環境を編集します。
    • PATH=${HOME}/Local/bin:${PATH}
    • LD_LIBRARY_PATH=${HOME}/Local/lib:${LD_LIBRARY_PATH}
  4. 必要なツールをダウンロードできるソース
  5. intselfがインストールされるようにツールを設定します。~cooluser/Local
    • 例えば./configure --prefix=~cooluser/Local
  6. コンパイルとインストール

gcc明らかに、お使いのコンピュータには他の多くの開発ツールが必要です。そのツールがない場合は、一部のバージョンのOSを実行している別の(仮想?)コンピュータでツールをコンパイルし、準備ができたら~cooluser/Localディレクトリを転送できます。

答え3

インストールされているプログラムが多い場合は、手動でメンテナンスするのが難しい場合があります。 chrootに最新のディストリビューションをインストールすることをお勧めします。

慣れたら、Fedoraをインストールすることもできます。 chrootにツールをインストールするのが役に立つかどうかわかりません。そうでなければ、Debianとその派生物がそうします。ブート防止プログラムこのガイド役に立つかもしれません。これらの以前のバージョンのFedoraにはschrootはありませんが、まだrpmをインストールできます。

schrootを操作できない場合は、バインドマウントでchrootを手動で入力してください。ディストリビューションをインストールしたが/newschrootを使用しない場合は、次のエントリを次に追加します/etc/fstab

/           /new/old      rbind   rbind
/dev        /new/dev      rbind    rbind
/home       /new/home     rbind    rbind
/tmp        /new/tmp      rbind    rbind
proc        /new/proc     proc    defaults
sysfs       /new/sys      sysfs   defaults

バインドマウントを使用するため、バインドマウントディレクトリを通過しないようにバックアップスクリプトを構成する必要があります。それ以外の場合は、元の場所に1回、新しい場所に1回、合計2回バックアップします。

答え4

Bashはlibcに依存していますが、これは古すぎるため、成功したコンパイルの可能性が非常に制限されています。おそらくあなたのbashのバージョンが何であるかを知らせるのは役に立ちます。

関連情報