Netbean、JDK などの自動的にインストールされるアプリケーションは、多くの場合、/usr/local
通常のユーザー (root ではない) でインストールされ、実行されます。
しかし、別のアプリケーションでは、ファイルを抽出して実行するだけです。通常のユーザーでは、ディレクトリからディレクトリにコピーするコマンドをtar.gz
使用できないため、ルートユーザー (コマンド) を使用する必要があります。cp
Download
/usr/local
su
しかし、ルート ユーザーでコピーしたため、このディレクトリはルートに属しているため、通常のユーザーでは実行できません。頭が痛いです。上にリストした他のアプリケーションと同様に、通常のユーザーで実行するにはどうすればよいですか。または、別のインストール方法がありますか?
答え1
/usr/local
およびそのサブディレクトリ ( bin
、、など) は、誰でもそこで実行できるように、ルートとして所有され、755lib
にshare
設定されている必要があります (おそらくそうなっています)。
何かを解凍してコピーした場合、個々のバイナリの権限が問題になる可能性があり、一般的な使用を許可するには 755 にする必要があります。
がどのように機能するかを覚えておいてください$PATH
。JDK の例はこの点でわかりにくいかもしれませんが、./configure
& を使用する通常の tarball では、make install
実行可能ファイルは に/usr/local/bin
、ライブラリは に/usr/local/lib
、ドキュメントなどのさまざまなものは のどこかに/usr/local/share
配置します。これらは適切なパスであり、同じパターンに従う必要があります。つまり、 の任意の場所/usr/local
(パッケージの個別のディレクトリなど) または bin/ のサブディレクトリに何かを置くだけでは機能しません。
答え2
問題になる可能性のある潜在的な問題が 2 つあります。
最初の問題 - ディレクトリの実行権限
/usr/local にコピーしたディレクトリの 1 つに、権限が正しく設定されていない可能性があります。ディレクトリの権限は、root 以外のユーザーがこれらのディレクトリからプログラム/スクリプトを実行できるようにする必要があります。
おそらく、ディレクトリの権限を設定して、「他の」ユーザーがこのディレクトリからアプリケーションを実行できるようにする必要があります。
例えば
# don't have permissions on directory
root$ cd /usr/local
$ ls -ld somedir
drwxr-x--- 2 root root 4096 Apr 25 13:27 somedir
# have permissions on the script
root$ ls -l somedir/testscript.bash
-rwxr-xr-x 1 root root 23 Apr 25 13:27 somedir/testscript.bash
このシナリオでは、他のユーザーがスクリプトの読み取りと実行の両方の実行権限を持っている場合でも、スクリプトがあるディレクトリの読み取りと実行の権限がないため、実行は許可されません。
ディレクトリの権限を変更すると、次のアクセスが可能になります。
user$ ls -ld somedir/
drwxr-xr-x 2 root root 4096 Apr 25 13:27 somedir/
user$ somedir/testscript.bash
hi
この問題全体は、スクリプトがあるすべてのディレクトリを見つけて、これらのディレクトリに対してコマンドを実行し、tar.gz ファイルから解凍されるディレクトリの権限を変更することで解決できますchmod +rx <dir>
。
2番目の問題 - ファイルの実行権限
.tar.gz ファイルのファイルの権限が事前に設定されていない可能性があるため、アーカイブ内のアプリケーションまたはスクリプトはこれらの権限がない状態で解凍chmod +x <script>
されます。この特定の問題があるファイルでは、Simply でこの問題を解決します。
### For example
user$ ls -ld somedir
drwxr-xr-x 2 root root 4096 Apr 25 13:27 somedir/
user$ ls -l somedir/testscript.bash
-rw-r--r-- 1 root root 23 Apr 25 13:27 somedir/testscript.bash
user$ somedir/testscript.bash
bash: somedir/testscript.bash: Permission denied