將應用程式安裝到 /usr/local

將應用程式安裝到 /usr/local

一些自動安裝的應用程式(例如 Netbean、JDK)經常安裝到/usr/local我的普通用戶(而不是 root)運行它。

但另一個應用程序,只需提取tar.gz文件並運行它。在普通使用者下,我無法使用指令從一個目錄cp複製到另一個目錄,我必須使用 root 使用者(指令)。Download/usr/localsu

但因為我是用root使用者複製的,所以這個目錄屬於root,所以無法在一般使用者下運作。這讓我很頭痛。我如何在普通用戶下運行它,就像我上面列出的其他應用程式一樣。或者,還有其他安裝方法嗎?

答案1

/usr/local及其子目錄(binlibshare等)應該(並且可能是)擁有 root 並設定為 755,以便任何人都可以在那裡執行內容。

如果您解壓縮某些內容並將其複製進去,那麼它可能是單一二進位檔案的權限,也應該是 755 以允許一般使用。

請記住如何$PATH運作。在這方面,您的 JDK 範例可能會令人困惑,但是您將在一個普通的 tarball中./configure放入make install可執行文件/usr/local/bin,將庫放入/usr/local/lib,並將文件等其他內容放入 中/usr/local/share。這些是適當的路徑,您需要遵循相同的模式。換句話說,僅僅將內容放在/usr/localbin/ 的任何位置(例如套件的單一目錄)或子目錄中是行不通的。

答案2

您可能會遇到兩個潛在問題。

第一個問題-目錄的執行權限

您複製到 /usr/local 的目錄之一的權限可能沒有正確設定。目錄上的權限需要使得 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>這些目錄執行命令。

第二個問題-檔案的執行權限

.tar.gz 檔案中的檔案的權限可能尚未設置,因此存檔中的應用程式或腳本在解包時可能會遺失這些權限。只需chmod +x <script>解決具有此特定問題的文件即可解決此問題。

### 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

相關內容