必要なソフトウェアのみの場合は、の代わりにホームディレクトリを使用します/usr/local。
所有者を変更したり、/usr/local必要ないときにrootとしてコマンドを実行したりする代わりに、ビルドを設定して、の代わりにホームディレクトリにインストールする必要があります/usr/local。これは、アドレスの所有権を変更すると、すべての潜在的な問題/usr/localの方法を含め、binおよびsbinサブディレクトリをしているrootのパスを。
他のユーザーにソフトウェアの実行を許可する必要がある場合は、アクセスを許可できます。実際には、デフォルトでホームディレクトリに許可された読み取りおよび実行アクセス権があるため、それらはおそらく既に可能です。(それが望ましくない場合は、chmodプライベートにしたいファイルやディレクトリを使用して、場合によってはを変更するだけで、非常に簡単に変更できますumask。)
ソフトウェアがホームディレクトリにインストールされている場合、入っていたはずのバイナリ/usr/local/binが代わりに入れられます。インストールするソフトウェアに必要なサブディレクトリに対応する、ホームディレクトリの他のサブディレクトリを取得します。これは通常、ソースコードからソフトウェアをインストールするときに自動的に発生します。/home/username/bin/usr/local
ビルドの構成
ソースコードからビルドするほとんどのソフトウェアには、実行するステップがあります。
./configure
そのconfigureように実行できるスクリプトが付属する大部分のソフトウェアでは、/usr/local最終的に実行sudo make installしてインストールするときに、内部でインストール用のビルドを構成するようにデフォルト設定されています。その理由は、実行と暗黙的に同等だからです:
./configure --prefix=/usr/local
ホームディレクトリにインストールするビルドを設定するには、代わりにこれを使用します:
./configure --prefix="$HOME"
実際には、Ubuntuでは、ホームディレクトリパスにスペース、その他の空白、またはなどのシェルによって特別に処理されるその他の文字が含まれていない*ため、ユーザーアカウントを非常に奇妙に設定しない限り、次のように入力できます。
./configure --prefix=$HOME
(しかし、スクリプトを書くための習慣を身に付けることはお勧めしません。また、macOSなどの他のOSでは、ユーザーのホームディレクトリへのパスにスペースが含まれることはあまりありません。)
または、ホームディレクトリの完全なパスを入力することもできます。
./configure --prefix=/home/username
(usernameもちろん、実際のユーザー名に置き換えてください。何らかの理由でホームディレクトリが存在しない/home場合は、それに応じて調整する必要があります。)
ビルドのインストール
あなたが実行した後make、あなたが実行しているに慣れすることができるsudo make installが、あなたがあなた自身のホームディレクトリにインストールするとき、あなたはあなたができるので、ルートとしてそれを実行する必要はありません-とすべきである --omit sudo。ただ走れ:
make install
同様に、uninstallターゲットをサポートするソフトウェアの場合:
make uninstall
これはまさにあなたが求めていたものです...ただホームディレクトリではなく、/usr/localです。
プログラムを実行する
おそらく、binホームディレクトリのサブディレクトリは次のいずれかです。
- すでにあなた
$PATH、または
- あなたになります
$PATHあなただけ後ろにログアウトした場合。
その理由は、.profileログイン時に実行されるコマンドを含むホームディレクトリのファイルには、ほとんどのバージョンのUbuntuで作成されたユーザーアカウント(OSのインストール時に作成された初期管理者アカウントを含む)のデフォルトでこれが含まれているためです:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
そのコードは(ログインしているため)ログインすると実行され、その時点で存在する場合にのみ.profile個人binディレクトリを配置します$PATH 。そのため、ログアウトして再度ログインする必要があります。
Ubuntu 14.04のような古いリリースと、Ubuntu 17.10のような新しいリリースが付属しています。ただし、この記事の執筆時点でおそらく最も人気のあるリリースであるUbuntu 16.04には、代わりにこれがあります:
# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
これにより、binサブディレクトリだけでなくホームディレクトリのサブディレクトリもに追加さ.local/binれます$PATH。これらのディレクトリが実際に存在するかどうかはチェックされません。したがって、16.04を使用する場合、またはユーザーアカウントが作成されたときに16.04であったシステムからアップグレードした場合bin、ホームディレクトリのサブディレクトリは既ににあります$PATH。
あなたの.profileファイルをからコピーされ/etc/skel、ユーザーアカウントが作成されたときにディレクトリ。ユーザーアカウントが古いUbuntuリリースで作成された場合、そのバージョンが取得.profileされ、ユーザーアカウントの場合、より新しいリリースにアップグレードしても変更されませんでした。
一度binあなたのホームディレクトリのサブディレクトリは、あなたの中にある$PATH、あなたがUbuntuのパッケージマネージャあるいはインストールされた内部によってインストールされたプログラムで行うことができます同じように、単に自分の名前を入力して、その実行可能ファイルがインストールされているプログラムを実行することができます/usr/local。
.localオプション
.profile上記の16.04など、一部のUbuntuリリースで作成されたユーザーアカウントのデフォルトファイルは$HOME/bin、パスだけでなくにも追加することに気づいたかもしれません$HOME/.local/bin。あなた.profileがそれを追加しないが、あなたがそれを望むなら、あなたは単にそれを編集することができます。
けれども、多くの場合、ストアの設定とキャッシュされたデータを使用し、あなたも内部のソフトウェアをインストールすることができ.local、あなたのホームディレクトリのサブディレクトリ。ユーザビリティとセキュリティの観点からは、--prefix="$HOME/.local"に似ているので、あなたはそうすることで抑制されないと感じるべき--prefix="$HOME"です。
で始まるファイルとディレクトリ.は、デフォルトではグラフィカルファイルブラウザ(非表示と再表示にCtrl+ Hを使用)またはlsコマンド(-Aまたは-aフラグを渡して表示)に表示されないことに注意してください。これはあなたが望むものではないかもしれませんし、あなたが望むものそのものかもしれません。これは個人の好みの問題です。
ただし、ホームディレクトリでソフトウェアをビルドおよびインストールする自動化されたソースベースのパッケージマネージャーが使用されていることを確認しました$HOME/.local。これがどれほど一般的であるかは実際にはわかりませんが、さらに調査してこの回答を更新したいと$HOME思いますが、手動でコンパイルするものに使用することを好むかもしれません。そうすれば、物事がどこから来たのかが明確になります。また、衝突が発生した場合、ソフトウェアは依然として許容可能に共存する可能性があります。
また、一部のソフトウェアをに意図的にインストールし$HOME/.local、他のソフトウェアをにインストールすることもでき$HOMEます。それはあなた次第です。どちらbinのディレクトリあなたの最初に表示される$PATH環境変数は、コマンドが両方で同じ名前が存在するコマンドという場合には、から実行することです。
クレジットに行くZannaとVideonauthのための誤りを指摘して、以前のバージョンのUbuntuのリリースがでているデフォルトのコードを持っているかに関して、この答えの.profile、および修正するために私を助けて(も参照してここに)。