web-dev-qa-db-ja.com

rootアクセスなしでシステム上に構築するために開発ファイルをローカルにインストールしますか?

私が作業しているサーバーがあり、古いバージョンのLinuxを実行しています。私はシステムへのrootアクセス権を持っていないので、私が頻繁に使用するツールのより新しいバージョン(Vim 7.3)を構築したいと思いました。ビルドして〜/ binにインストールすると思いました。ただし、システム全体にインストールされていないncurses開発ファイルが必要です。 ncurses-devel rpmを見つけ、「lib」および「include」フォルダーを抽出しました。それらをどこに置き、ローカルでパッケージを適切に構成およびビルドできるように./configureスクリプトにそれらを見つけるように指示するにはどうすればよいですか?

編集:Virtualboxに同じOSをインストールし、そこでパッケージをビルドしてバイナリをコピーすることで、これを回避することになりました。

10
postfuturist

私は最後の仕事でこれをかなり頻繁に行いました-最良に機能するように思われた解決策は〜/ usrディレクトリを作成し、--prefix引数を使用して./configureスクリプトを正しい方向に向けることでした。手順は次のとおりです。

  • 〜/ usrディレクトリを作成し、その下にlibおよびbinディレクトリを含めます。
  • .profile、.bashrc、またはその他のシェル初期化スクリプトで、次の(またはシェルの方言で同等のもの)を追加します。
    export PATH=$PATH:~/usr/bin
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/usr/lib
    export C_INCLUDE_PATH=$C_INCLUDE_PATH:~/usr/include
    export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:~/usr/include
  • パッケージをビルドするときは、./configure --prefix=/home/<username>/usr

この配置は、ユーザー空間で物事を構築する必要があるほとんどの状況で私に役立ちました。最も難しい部分は通常、必要なすべての依存関係を見つけて構築することですが、それには、パッケージマネージャーの「ソースの取得」機能をグーグルまたは賢明に使用するだけです。

13
chaos95

通常は、コードを再構成および変更して、すべてのライブラリとプログラムのホームディレクトリまたは他のパスに新しい場所を定義できます...

しかし、私見、最も簡単な方法(十分なスペースがある場合)は、すべてのLinuxディストリビューションがインストールされているサブディレクトリでchrootを使用することです。通常のユーザーとしては chroot は使用できませんが、次の優れたツールを使用できます: fakechroot および fakeroot

Chrootファイルシステムを作成するために、私は debootstrap ユーティリティを使用して、Debian(またはubuntuのような任意のDebian派生物)でディレクトリをデプロイするのが好きです。

手順は簡単です(技術的な詳細は入力しません。コマンドマニュアルを読みます)。

  • 入手してインストール:fakeroot、fakechroot、debootstrapツール
  • debootstrapを使用してサブディレクトリを作成します(これはrootとしてのみ実行できました。別のコンピューターで実行し、必要に応じてバイナリをコピーできます)
  • 実行:fakechroot fakeroot chroot mydebian-dir

詳細が必要な場合は、これをすべて行うスクリプトがどこかにあると思います。

3
Keymon

この問題の別の解決策は、MacOSXユーザーと他のプラットフォーム(solaris、AIX)が行うように、Gentooプレフィックスを使用することです。

http://www.gentoo.org/proj/en/gentoo-alt/prefix/

$ PREFIXの場所にあるGentooスタック(Portageを含む)をコンパイルします。 Gentooパッケージを使用しており、ほとんどのパッケージがこれらの設定の使用をサポートしています。

Portageはすべての依存関係を追跡し、ソフトウェアの最新バージョンを手に入れ、コミュニティによってテストされています...

1
Keymon

prefix=/home/foo/usrが機能しません。次を試してください:

CFLAGS=-I/home/foo/usr/include LDFLAGS=-L/home/foo/usr/lib ./configure
1
BobuSumisu