ソフトウェアをソース(サードパーティのGitHubリポジトリなど)から自分のマシンにインストールしたい。通常、/ usr/local/binと/ usr/local/srcは、ディストリビューション固有ではないソフトウェア用ですよね?
/ usr/localの所有権を取得するのは危険なようです。私の権限で実行すると、/ usr/local/binの実行可能ファイルまたは/ usr/local/srcのソースに悪意のある変更が加えられる可能性があります。
しかし、root(Sudo
)としてビルドしてインストールするという代替手段は、私には意味がありません。 GitHubはルートとしてgit
を実行しないように警告します。 ローカルリポジトリからソースを他の場所にコピーした場合でも、make
とmake install
を実行する必要があります。 Sudo
として、インストールしているソフトウェアがマシンの残りの部分を乗っ取る可能性があることを意味します。
すべてを/ homeに入れることもできますが、それは警官のようです-これは/ usr/localがforであるということではありませんか?
/usr/local
の所有権を取得しないでください。 Sudo
を使用してinstallソフトウェア。ただし、独自のアカウントを使用してbuildにしてください。
git clone … # or tar -x or …
cd …
./configure
make
Sudo make install
/usr/local
の所有権を取得してみませんか?あなたはそれを釘付けにしました。これにより、アカウントで実行されているすべてのプログラムがそこに書き込むことができます。悪意のあるプログラムに対して、とにかく負けました。ローカルアカウントへの感染は大きなステップであり、rootにエスカレーションすることは難しくありません(たとえば、次にSudo
を実行するときにピギーバックすることによって)。ただし、不適切に構成されたプログラムに対しては、システム全体のディレクトリに書き込み可能なビットを含めない方がよいでしょう。
/usr/local
とホームディレクトリのどちらを選択するかについては、ホームディレクトリはアカウントにのみ必要なもの用であり、/usr/local
はシステム全体にインストールされるもの用です。
このソリューションには2つのアプローチがあります。
/usr/local/{src,bin}
は、システム管理者によってインストールされたカスタムビルドソフトウェア用です。つまり、root
です。この場合、Sudo
またはsu -
は常に使用する必要があるため、この質問は根拠がありません。/opt
。この場合も、システム管理者が行います。どちらの場合も、これらの場所にインストールされているソフトウェアはディストリビューションによってアップストリームでサポートされていないため、潜在的に危険なアクションをオーバーライドするにはroot権限が必要です。また、/usr/local/src
は、ソースがコンパイルされる場所ではありません。ソースが保存される場所です。これらの2つの項目を覚えておくことで、 CentOS 7での素晴らしいウィンドウマネージャーの使用 のようなことが起こりません。
すでにインストールされているソフトウェアの更新のみを目的としている場合は、ディストリビューションにテストソフトウェアを追加するための推奨される方法で更新する必要があります。主な方法のいくつか:
ほとんどのビルドシステムは--prefix=$path
を尊重しますが、通常は/usr/local
がデフォルトです。
したがって、通常はビルド+テスト+インストールです。ビルド+テストステップは、書き込み権限がある場所であればどこでも実行できます+インストールステップは通常...
Sudo make install(--prefix
にインストール)
ビルド環境をセットアップする1つの方法は、work + atticサブディレクトリを持つビルドディレクトリを作成することです。
私のビルド環境は...
/smartbuild/work
-パッケージがビルドされる場所(tarballまたはgit/svn/etcから)/smartbuild/attic
-tarballがキャッシュされる場所(再構築でtarballのダウンロードをスキップ)