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


10

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

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


serverfault.com/questions/23734は、支援するのに十分似ているかもしれません。ほとんどの答えは、効果的にシステム全体をhomedir内にインストールすることですが、Gentooプレフィックスとルートレスゴボで回避できます。
ephemient

回答:


13

私は最後の仕事でこれをかなり頻繁に行いました。最も効果的と思われた解決策は〜/ 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

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


うまくいきませんでした。configureスクリプトが〜/ usrに何も見つからないようです
postfuturist

私は同じ問題@postfuturistを持っていました。私はすべてのエクスポート呼び出しの${HOME}代わりにを使用してそれを修正すること~になり、pkg-configは満足して、ユーザーがインストールしたライブラリとパッケージを見つけることができました。
phyatt 2015年

3

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

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

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

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

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

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


1

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

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

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

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


1

prefix=/home/foo/usr動作しない場合は、以下を試してください。

CFLAGS=-I/home/foo/usr/include LDFLAGS=-L/home/foo/usr/lib ./configure
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.