「デフォルトパス」とは、「/usr/local
」、またはルートによって管理されるその他のパス(「システムパス」)を意味します。
多くのアプリケーションパッケージをインストールする必要があります(つまり、svn
、httpd
、git
、Perl
、python
、。 ..)いくつかのLinux(RedHat)またはSolaris(10、 ローカルゾーン )サーバー。
だが:
Sudo root
はありません)たとえばSolarisで、pkgadd -R
を使用して、プリコンパイル済みパッケージをカスタムパス(つまり、通常のデフォルトパスである/usr/local/...
ではなく、特定のユーザーのhomedir内)にインストールしてみました。 、しかし、プリコンパイルされたパッケージはすべて/usr/...
の他のリソースへの参照が付属していると述べました。
ldd /path/to/local/installed/packages
は、システムパスへの多くの依存関係を示します。
ldd /home/myuser/usr/local/git
libz.so => /usr/local/lib/libz.so
libiconv.so.2 => /usr/local/lib/libiconv.so.2
libsocket.so.1 => /usr/local/libsocket.so.1
...
それはしません、なぜなら:
/usr
に何かを書き込む方法がありません。同じ(LinuxまたはSolaris)サーバーに異なる「サービス」を分離してインストールするために何をすることをお勧めしますか?独自のバージョンの(Perl、python、...)?
以下に解決策を提案しますが、他に選択肢があれば興味があります。
私がこれまでに見つけた唯一の解決策:
は:
すべてを再コンパイル
(そして、Solarisサーバーにデフォルトでインストールされている/usr/swf/bin/gcc
は、前提条件のgcc
3.4.6よりも古いため、必要に応じてgcc
自体も意味します)
このグローバル再コンパイルで使用されるすべてのバージョンは、 sunfreeware からのものであり、必要なすべての依存関係の詳細が示され、各パッケージのソースへのリンクが提供されます。
これはLinuxとSolarisの両方で機能します。
各パッケージソースはダウンロードされ、コンパイルされ、$HOME/usr/local
にインストールされます(つまり、システムパスにnot)。
重要なのは、.bashrc
または/usr/bin
を持たないようにするために、$ PATHを変更する/usr/local/bin
を持つことです。その中にありますが、$HOME/usr/local/bin
のみです。
私は時間をかけて見つけましたいくつかの利点:
/usr
のライブラリは変更される可能性があり、現在実行されているいくつかのサービスに影響はありません($HOME/usr/local
にインストールされている独自の依存関係のセットですべてコンパイルされているため)$HOME/usr/local
内の任意の要素を起動/強制終了/更新/再コンパイルできます。$HOME
に新しいディレクトリを作成し、特定のアプリケーションのアップグレードをテストするためにすべての依存関係を再コンパイルするのは簡単です。最終的に同じパッケージの複数のバージョンが作成され、あるバージョンから別のバージョンにテスト/切り替えられる可能性があります。主な欠点は次のとおりです。
LDFLAGS
、CFLAGS
、CPPFLAGS
、LD_LIBRARY_PATH
)は、適切な値で設定するのが難しい場合がありますすべてのサービスにchroot環境をセットアップし、その下にそれらのパッケージをインストールするオプションがあります。基本的に多くのライブラリをchroot環境に複製する必要があるという点で、それは確かにいくらかの肥大化を伴います。ただし、サービスを他のすべてのサービスから分離し、その逆も同様であり、環境を完全に(ルートのように)制御できます。
これには、chroot環境をセットアップしてアクセスするためにrootアクセスが必要です。
後続のアクセスは、たとえばを使用して管理できます。 SSH:
Solarisでは、$ Originマジックワードを使用してRPATHを定義できます。たとえば、次のレイアウトがある場合、バイナリのRPATHでRPATHを「$ Origin /../ lib」として定義し、-Rフラグをリンカに渡すことができます。
/usr/local/bin/foo
/usr/local/lib/libfoo.so.1
ただし、ユーザーがレイアウトを指定した場合は機能しません。たとえば、ユーザーはbindirを/ usr/local/bin/sparcv9に設定し、libdirを/ usr/local/lib/sparcv9に設定できます。この場合、設定は$ Origin /../../ lib/sparcv9である必要があります。
従来、Solaris用にコンパイルされたすべてのバイナリはハードコードされたRPATHを使用するため、再配置できません。
もう1つ注意すべき点は、 crle です。これにより、動的リンカーを構成できます。