ルートアクセスなしでシステムにビルドするには、開発ファイルをローカルにインストールしますか?

ルートアクセスなしでシステムにビルドするには、開発ファイルをローカルにインストールしますか?

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

編集:Virtualboxに同じOSをインストールし、そこにパッケージをビルドし、バイナリをコピーして最終的にこの問題を解決しました。

答え1

私は過去の仕事でこれをたくさんしました。最も効率的な解決策は、〜/ usrディレクトリを作成し、--prefixパラメータを使用して./configureスクリプトを正しい方向に指定するようでした。次のように進んでください。

  • ~/usr ディレクトリを作成し、その下に include、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

この配列は、ユーザー空間に何かを構築する必要があるほとんどの場合に適しています。最も難しいのは、一般的に必要なすべての依存関係を見つけて構築することですが、これにはインターネット検索またはパッケージマネージャの「ソースインポート」機能を賢く使用する必要があります。

答え2

通常、コードを再構成して変更して、ホームディレクトリの新しい場所、またはすべてのライブラリとプログラムの異なるパスを定義できるようにする必要があります。

ただし、IMHO、最も簡単な方法(十分なスペースがある場合)は、すべてのLinuxディストリビューションがインストールされているサブディレクトリでchrootを使用することです。もちろん、一般ユーザーは使用できません。chrootしかし、次の素晴らしいツールを使用できます。近さそして近さ

chrootファイルシステムを作成するには、Debian(またはubuntuなどのDebian派生製品)を使用してディレクトリを配布するのが好きです。ブート防止プログラム便利です。

したがって、プロセスは簡単です(技術的な詳細は扱いませんので、コマンドマニュアルをお読みください)。

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

詳細が必要な場合は、すべての操作を実行するスクリプトがあると思います。

答え3

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

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

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

Portageはすべての依存関係を追跡し、コミュニティでテストされた最新バージョンのソフトウェアを持つことになります。

答え4

prefix=/home/foo/usrそれでも問題が解決しない場合は、以下を試してください。

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

関連情報