linux安裝軟體到自己目錄其他使用者沒法訪問的問題

2021-09-28 12:26:32 字數 1724 閱讀 7174

這個問題之前也遇到過,但是一直都沒有深究。今天又遇到了。我先講講故事的來龍去脈。

來龍去脈

我要用自己的伺服器建立django專案,發現python執行sqlite3有問題。而我的另乙個夥伴已經安裝了python3在他自己的目錄下,他去他的目錄下一看,他的可以執行。而我的不能執行。我用which 檢視了一下python3, python3.6 發現我們兩個人對應的目錄並不一樣。 他的python3指到了他自己的目錄下,而我的指到了/usr/local/bin/python下, 就不是乙個python. 先說一下,

這種情況下,如果我要使用他目錄下的python, 除了切換root或者他的使用者,我沒有別的方法可以解決。

我嘗試把我目錄的python3的路徑指到他的目錄下,發現我沒有許可權,如果使用root強行指過去,還是沒有許可權。因為我沒有進入他的使用者目錄的許可權。他是強制配了環境變數,把python的路徑指到了自己的目錄下, 所以問題來了,應該怎麼安裝軟體才能讓大家使用呢?

需要注意的是/usr/local/bin/* /bin/* 這些目錄是所有使用者都可以訪問的。

那麼,當我們編譯安裝軟體的時候,就需要保證軟體是安裝在所有使用者都可以讀取的目錄下。不一定是/usr/local/下,但是這個目錄一定是其他使用者也可以訪問的。因為/usr/local/bin/python 和/bin/python 這些只是軟鏈結而已。指向的地方如果不能進入,沒有許可權。那就只能某個人或者root才能使用。這就不太好了。當然這裡可能要加環境變數,比如/etc/bashrc裡面加上

export path=/usr/local/bin:$path
然後source /etc/bashrc 即可。

最正確的非root使用者原始碼安裝軟體的步驟

1. 獲取源**,一般是wget方式,ubuntu可以使用apt-get source來獲取源**。

2. 解壓源**,一般使用tar -zxvf ***.tar.gz即可

3. 切換到解壓後的目錄,執行 ./configure。其選項可以通過 ./configure –help來獲取,非root使用者下最重要的應該是定義安裝目錄,即應該定義 ./configure –prefix=/path/to/bin, 對於一些依賴庫,可能還需要使用 ./configure –prefix=*** –with-xx-dir=***這種形式。(注意,./configure --prefix=/path/to/bin是必須得指定的,它決定了安裝的位置,安裝不好就會出現上面的問題)

4. 接著是編譯源**和安裝軟體: make && make install。這兩條命令可以分開來用,因為編譯的時候可以指定引數 -j來並行編譯,這樣能夠加快編譯進度。。

5. 更新path路徑。使用export path=/path/to/bin:$path,這句話在shell視窗執行只在本次會話中有效,可以將其寫到.bashrc或者.bash_profile裡面使其對當前使用者有效。

6.如果安裝的是動態鏈結庫,則需要更新動態鏈結庫路徑: export ld_library_path=/path/to/library:$ld_library_path,同樣是export命令,最好將其寫在.bashrc這類檔案下面以便登陸的時候自動呼叫。

./configure --prefix=/path/to/bin 這裡的–prefix=/path/to/bin是必須得指定的,除非你解壓到了乙個其他使用者都可以訪問的目錄。

最終結果

我重新進行了python的安裝,安裝之後大家就都可以訪問了^_^

linux安裝軟體到指定目錄

1 軟體安裝解除安裝,分幾種情況 a rpm包,這種軟體包就像windows的exe安裝檔案一樣,各種檔案已經編譯好,並打了包,哪個檔案該放到哪個資料夾,都指定好了,安裝非常方便,在圖形介面裡你只需要雙擊就能自動安裝。如果指定linux安裝軟體時所需要安裝到的目錄 為軟體包指定安裝目錄 要加 rel...

Linux 軟體安裝目錄

linux 的軟體安裝目錄是也是有講究的,為了方便自己已經,這裡記錄下常用的幾個目錄及作用 usr 系統級的目錄,可以理解為c windows usr lib 理解為c windows system32 usr local 使用者級的程式目錄,可以理解為c progrem files 使用者自己編譯...

linux 檢視軟體安裝目錄

如果我們在linux 系統上安裝了某個軟體,我們可以通過如下的三種方式來確定。一 which 命令 shell 的which 命令可以找出相關命令是否已經在搜尋路徑中。如 root localhost which gcc usr bin gcc 二 whereis 命令 whereis 命令搜尋更大...