必要なソフトウェアのみの場合は、の代わりにホームディレクトリを使用します/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
、および修正するために私を助けて(も参照してここに)。