sudo特権なしでアプリケーションをビルドする方法は?


15

ユーザーがsudo / admin特権を必要とせずに、選択したアプリケーション(./configure、make && make install)を構築できるように、Ubuntu 9.10サーバーで何をセットアップする必要がありますか。

アプリを構築するために、ユーザーがシステムの必要のない部分にアクセスできるようにすることは、ちょっとしたセキュリティ上のリスクを感じるだけです。

回答:


40

ユーザーが使用する場合

./configure --prefix=/home/user/opt/

またはcmakeプロジェクトの場合

cmake -D CMAKE_INSTALL_PREFIX:PATH=/home/user/opt/ ../source/

これにより、デフォルトの/ usr / local /の代わりにそのプレフィックスにプログラムがインストールされ、ユーザーは次のようにプログラムを実行できるようになります。

/home/user/opt/bin/program

単純に名前(フルパスなし)を使用してプログラムを実行できるようにするには/home/user/opt/bin、パス環境変数に追加する必要があります。ユーザー.profileを編集し、次の行を追加します。

export PATH=/home/user/opt/bin:$PATH

この方法でインストールされたプログラムは特定のユーザーに限定されますが、それはそれを行う方法です


他のユーザーは、フルパスを指定し、アクセス許可が適切に設定されていれば、このようにインストールされたプログラムを使用できます。そして、デフォルトのumaskがデスクトップのインストールでこれを許可しているようです。
アリスターバクストン

私がコンパイルしていたコードベースにはMakefile設定がありませんでしたが、私はそれに行きprefix = /some/path、自分のホームディレクトリに行を変更し(末尾のスラッシュmake installなし)、sudoなしで実行しました-すべて動作していますので、ありがとうございます。
ビッグリッチ

8

ユーザーは、sudo権限なしでアプリケーションを構築できます。sudo権限が必要なのは、システムディレクトリに何かをインストールするときだけです。

./configuremake常にsudo権限なしで動作します。make installそれがアプリケーションをインストールしますので、通常はsudoの権限を必要とする/usr/localか、/usr(時々/opt)。

ただし、./configure --prefix=~/usr/localインストールがユーザーのホームディレクトリツリー内で実行されるようにインストールパスのプレフィックスを変更する場合(つまり、)、sudo権限は必要ありませんmake install


私はまだあなたの答えが完全にバックアップされていないと思います。なぜ./configuremake仕事常になしsudosudo make installたとえば、実行し続ける人にそれを正当化するにはどうすればよいですか?
ニコスアレクサン

0

txwikingerが言ったことに加えて、をチェックすることもできますfakeroot。これにより、dpkg昇格した特権を必要とせずに.debパッケージをビルドすることができます。もちろん、それらのインストールには通常、sudoアクセスが必要です。

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