Linux下非root用戶如何安裝軟件


Linux下非root用戶如何安裝軟件

 

 從windows轉移到Linux的用戶最開始總會有各種不適,因為這種不適最終放棄linux的不在少數。對於這類人只能說可惜,還沒有領略到linux的美好就過早放棄了。還有就是用着Linux還不錯,但是因為熟悉了在個人電腦上使用,有着各種權限。突然發現工作的時候只能使用普通賬戶,許多sudo命令都不能再使用,然后各種不適應和各種糾結。本文主要面向對象是第二類人群,簡要的介紹在沒有root權限的情形下良好的使用Linux來工作。

 


 

windows毫無疑問是PC操作系統的王者,許多人都非常熟悉。當然隨着高富帥和土豪的普及,Mac OS的份額正在加重。無論是windows還是Mac OS,用戶接觸的都是圖形界面(GUI)。轉向Linux之后,大部分會優先使用帶有圖形界面的系統作為過渡。比如我最開始使用的就是Ubuntu,折騰熟悉了之后才慢慢轉向RHEL和CentOS。有許多優秀的Linux桌面圖形發行版,如Ubuntu,fedora,opensuse等,圖形界面華美,提供了類似的桌面體驗,可以給windows用戶很好的過渡。這些Linux系統一般都是開源且可免費使用,如果需要支持服務可能要付費。

這類圖形界面操作系統一般安裝在個人電腦上,用戶都能輕易拿到所有權限(切換到root用戶即可)。這誠然是讓用戶從GUI(Graphical User Interface)轉向CLI(Command Line Interface)的一個很好的開始,但是如果僅限於這種形式將會在后續的非root用戶的日常使用上帶來很大的困惑。windows上安裝軟件那是相當的傻瓜,點擊鼠標一直next就OK。稍微高級一點的用戶可能會看看中間出現的選項,然后做一些自定義。小白用戶一般不會看,一路next下去,在這個過程中安裝了其他軟件也不知道。當有人(一般是女生)告訴你開機電腦就失去響應,你過去一看電腦上瑞星,360,金山毒霸,騰訊安全管家等各種軟件都安裝了,對於這種情形你應該能過給予理解。對於這種情形,我只能默默的在安全模式下把這些軟件刪了,然后表示系統太久沒清理,多喝點熱水重啟一下就好了。

嗯,現在回到Linux安裝軟件上來。Linux剛入門的用戶能夠使用命令行安裝軟件是一個很大的進步。但是由於使用的是易用的Linux桌面發行版,並且有着所有的權限,所以一般人安裝軟件提示權限不夠的時候二話不說立馬切換到root模式,然后一切問題就OK了。想當年我在Ubuntu下那也是毫不猶豫直接sudo過去,權限什么都是浮雲了。

另外就是安裝形式問題,Ubuntu,opensuse,debian這類的系統提供了軟件倉庫,里面有直接編譯好的軟件包可用。要安裝g++?沒問題!sudo apt-get install g++,兩分鍾見效,效果杠杠的。依賴問題自動幫你解決了,至於版本估計就不再考慮范圍之內,能用才是王道!話說當年我也這樣使用Linux好多年。這么看來,Linux安裝軟件也不是那么難的嘛,安裝完之后直接敲命令就可以運行了。

但是不是所有的軟件都是能在軟件倉庫里找到的。難免有些軟件是別人寫的,給出的是源代碼。這種情形下需要下載下來,解壓(對很多人也是一個難題,不能點右鍵直接解壓!)之后,按照里面說make && make install就可以了。如果碰到權限問題,咱有root權限咱怕誰啊?如果稍微高級一點的,可能還需要在make之前執行./configure,這個也還是很簡單嗎,一切都沒問題的。雖然暫時不知道這幾句代表了什么,但是只要程序沒有錯誤,依賴的軟件或者包都有,事情進展還是很順利的。

首先需要解釋一下程序是怎樣運行的。在Linux下,用戶在終端下輸入一個命令,比如ls,這個命令是怎樣被執行的呢?大致流程為:在當前用戶的path路徑文件夾下查找名為ls的可執行文件名,如果找到,則執行ls文件;如果找不到,則提示未安裝或者找不到。這里很重要的就是path路徑的內容,如果沒有指定路徑,則會在path路徑里尋找。可以echo $PATH看看里面的內容。在以冒號分割的文件夾下,你會發現你平時執行的程序都在。所以要執行一個程序,首先要保證這個文件存在,然后:1.如果告訴了程序的路徑,系統會到指定目錄下尋找該程序並執行,如 ./helloworld 就是執行當前目錄下的helloworld程序;2.如果沒有指明路徑,則需要保證需要執行的程序在path變量里面的任意一個目錄下。在windows上也是同樣的,不過windows一般是以鼠標點擊方式,因而關注的人很少。在任意一個快捷方式上點右鍵,屬性里面有個“目標”,指明的就是該程序的位置(一般給出的都是絕對位置)。

接着要說明的是如果不是root用戶,會擁有哪些權限。對任意一個目錄,可以使用ls -l查看對其的權限。會看到(d|-)rwxrwxrwx這樣的權限說明,其中d代表這是一個目錄,-則表示是文件,rwx分別對應讀寫和執行。一般的目錄都有r和x權限,正常情況下非root用戶只對 主目錄和/tmp創建的目錄有寫的權限。當然/tmp指明了其屬性,里面都應該只能放臨時性的東西,重要的東西都不應該放里面,說不定什么時候就被清走了,或者系統一重啟就清除了。綜上所述:用戶可以執行很多目錄下的程序,但是其工作目錄(一般程序都有輸出)應該只限於用戶的家目錄。

再回過頭來看為什么安裝軟件一般都需要root權限。軟件默認的安裝路徑是 /usr/bin,普通用戶對這個目錄是沒有寫權限的。安裝的時候需要將文件copy到該目錄下,所以會提示無權限而操作失敗。如果不使用root權限,只能而且應該將軟件安裝在自己的目錄下。為了方便,可以將執行程序所在目錄加入到path環境變量里。如果不更新path變量,則運行程序的時候需要指明路徑。

 


 

下面簡要說一下Linux下非root用戶安裝軟件的一般流程:

 

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

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

3. 切換到解壓后的目錄,運行 ./configure。其選項可以通過 ./configure –help來獲取,非root用戶下最重要的應該是定義安裝目錄,即應該定義 ./configure –prefix=/path/to/bin, 對於一些依賴庫,可能還需要使用 ./configure  –prefix=xxx –with-xx-dir=xxx這種形式。

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這類文件下面以便登陸的時候自動調用。

示例可參考: http://www.tlanyan.me/install-apache2-php-mysql-with-none-root/

 

本文內容遵從CC版權協議, 可以隨意轉載, 文章原始出處和作者信息及版權聲明網址:

http://www.tlanyan.me/work-with-linux-without-root-permission


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM