介紹 Ubuntu 下軟件安裝的幾種方式,及 apt,dpkg 工具的使用。
通常 Linux 上的軟件安裝主要有三種方式:
這幾種安裝方式各有優劣,而大多數軟件包會采用多種方式發布軟件,所以我們常常需要全部掌握這幾種軟件安裝方式,以便適應各種環境。下面將介紹前三種安裝方式,從源碼編譯安裝你將在 Linux 程序設計中學習到。
試想一下,平時我們在使用 Windows 的時候,想要安裝一個軟件,我們需要在網上去下載對應軟件的安裝包,接著安裝的時候就是不斷的去點擊下一步,這些流程想必大家已經經歷的無數回了,但是在 Linux 下,一個命令加回車,等待一下,軟件就安裝好了,這就是方便的在線安裝軟件的方式。在學習這種安裝方式之前有一點需要說明的是,在不同的linux發行版上面在線安裝方式會有一些差異包括使用的命令及它們的包管理工具,因為我們的開發環境是基於ubuntu的,所以這裡我們涉及的在線安裝方式將只適用於ubuntu發行版,或其它基於ubuntu的發行版如國內的ubuntukylin(優麒麟),ubuntu又是基於debian的發行版,它使用的是debian的包管理工具dpkg,所以一些操作也適用與debian。而在其它一些采用其它包管理工具的發行版如RedHat,CentOS,Fedora等將不適用(redhat和centos使用rpm)。
比如我們想安裝一個軟件,名字叫做 w3m
(w3m是一個命令行的簡易網頁浏覽器),那麼輸入如下命令:
$ sudo apt-get install w3m
這樣的操作你應該在前面的章節中看到過很多次了,它就表示將會安裝一個軟件包名為w3m
的軟件
我們來看看命令執行後的效果:
$ w3m www.shiyanlou.com/faq
注意:如果你在安裝一個軟件之後,無法立即使用Tab
鍵補全這可命令,你可以嘗試先執行source ~/.zshrc
,然後你就可以使用補全操作。
APT是Advance Packaging Tool(高級包裝工具)的縮寫,是Debian及其派生發行版的軟件包管理器,APT可以自動下載,配置,安裝二進制或者源代碼格式的軟件包,因此簡化了Unix系統上管理軟件的過程。APT最早被設計成dpkg的前端,用來處理deb格式的軟件包。現在經過APT-RPM組織修改,APT已經可以安裝在支持RPM的系統管理RPM包。這個包管理器包含以
apt-
開頭的的多個工具,如apt-get
apt-cache
apt-cdrom
等,在Debian系列的發行版中使用。
當你在執行安裝操作時,首先apt-get
工具會在本地的一個數據庫中搜索關於 w3m
軟件的相關信息,並根據這些信息在相關的服務器上下載軟件安裝,這裡大家可能會一個疑問:既然是在線安裝軟件,為啥會在本地的數據庫中搜索?要解釋這個問題就得提到幾個名詞了:
我們需要定期從服務器上下載一個軟件包列表,使用 sudo apt-get update
命令來保持本地的軟件包列表是最新的(有時你也需要手動執行這個操作,比如更換了軟件源),而這個表裡會有軟件依賴信息的記錄,對於軟件依賴,我舉個例子:我們安裝 w3m
軟件的時候,而這個軟件需要 libgc1c2
這個軟件包才能正常工作,這個時候 apt-get
在安裝軟件的時候會一並替我們安裝了,以保證 w3m
能正常的工作。
apt-get
使用各用於處理apt
包的公用程序集,我們可以用它來在線安裝、卸載和升級軟件包等,下面列出一些apt-get
包含的常用的一些工具:
install
其後加上軟件包名,用於安裝一個軟件包
update
從軟件源鏡像服務器上下載/更新用於更新本地軟件源的軟件包列表
upgrade
升級本地可更新的全部軟件包,但存在依賴問題時將不會升級,通常會在更新之前執行一次update
dist-upgrade
解決依賴關系並升級(存在一定危險性)
remove
移除已安裝的軟件包,包括與被移除軟件包有依賴關系的軟件包,但不包含軟件包的配置文件
autoremove
移除之前被其他軟件包依賴,但現在不再被使用的軟件包
purge
與remove相同,但會完全移除軟件包,包含其配置文件
clean
移除下載到本地的已經安裝的軟件包,默認保存在/var/cache/apt/archives/
autoclean
移除已安裝的軟件的舊版本軟件包
下面是一些apt-get
常用的參數:
-y
自動回應是否安裝軟件包的選項,在一些自動化安裝腳本中使用這個參數將十分有用
-s
模擬安裝
-q
靜默安裝方式,指定多個q
或者-q=#
,#表示數字,用於設定靜默級別,這在你不想要在安裝軟件包時屏幕輸出過多時很有用
-f
修復損壞的依賴關系
-d
只下載不安裝
--reinstall
重新安裝已經安裝但可能存在問題的軟件包
--install-suggests
同時安裝APT給出的建議安裝的軟件包
關於安裝,如前面演示的一樣你只需要執行apt-get install <軟件包名>
即可,除了這一點,你還應該掌握的是如何重新安裝軟件包。 很多時候我們需要重新安裝一個軟件包,比如你的系統被破壞,或者一些錯誤的配置導致軟件無法正常工作。
你可以使用如下方式重新安裝:
$ sudo apt-get --reinstall install w3m
另一個你需要掌握的是,如何在不知道軟件包完整名的時候進行安裝。通常我們是使用Tab
鍵補全軟件包名,後面會介紹更好的方法來搜索軟件包。有時候你需要同時安裝多個軟件包,你還可以使用正則表達式匹配軟件包名進行批量安裝。
# 更新軟件源
$ sudo apt-get update
# 升級沒有依賴問題的軟件包
$ sudo apt-get upgrade
# 升級並解決依賴關系
$ sudo apt-get dist-upgrade
如果你現在覺得 w3m
這個軟件不合自己的胃口,或者是找到了更好的,你需要卸載它,那麼簡單!同樣是一個命令加回車 sudo apt-get remove w3m
,系統會有一個確認的操作,之後這個軟件便“滾蛋了”。
或者,你可以執行
# 不保留配置文件的移除
$ sudo apt-get purge w3m
# 或者 sudo apt-get --purge remove
# 移除不再需要的被依賴的軟件包
$ sudo apt-get autoremove
當自己剛知道了一個軟件,想下載使用,需要確認軟件倉庫裡面有沒有,就需要用到搜索功能了,命令如下:
sudo apt-cache search softname1 softname2 softname3……
apt-cache
命令則是針對本地數據進行相關操作的工具,search
顧名思義在本地的數據庫中尋找有關 softname1
softname2
…… 相關軟件的信息。現在我們試試搜索一下之前我們安裝的軟件 w3m
,如圖:
結果顯示了4個 w3m
相關的軟件,並且有相關軟件的簡介。
關於在線安裝的的內容我們就介紹這麼多,想了解更多關於APT的內容,你可以參考:
dpkg 是 Debian 軟件包管理器的基礎,它被伊恩·默多克創建於 1993 年。dpkg 與 RPM 十分相似,同樣被用於安裝、卸載和供給和 .deb 軟件包相關的信息。
dpkg 本身是一個底層的工具。上層的工具,像是 APT,被用於從遠程獲取軟件包以及處理復雜的軟件包關系。"dpkg"是"Debian Package"的簡寫。
我們經常可以在網絡上簡單以deb
形式打包的軟件包,就需要使用dpkg
��令來安裝。
dpkg
常用參數介紹:
-i
安裝指定deb包
-R
後面加上目錄名,用於安裝該目錄下的所有deb安裝包
-r
remove,移除某個已安裝的軟件包
-I
顯示deb
包文件的信息
-s
顯示已安裝軟件的信息
-S
搜索已安裝的軟件包
-L
顯示已安裝軟件包的目錄信息
我們先使用apt-get
加上-d
參數只下載不安裝,下載emacs編輯器的deb包,下載完成後,我們可以查看/var/cache/apt/archives/目錄下的內容,如下圖:
然後我們將第一個deb
拷貝到home目錄下,並使用dpkg
安裝
$ cp /var/cache/apt/archives/emacs24_24.3+1-4ubuntu1_amd64.deb ~
# 安裝之前參看deb包的信息
$ sudo dpkg -I emacs24_24.3+1-4ubuntu1_amd64.deb
如你所見,這個包還額外依賴了一些軟件包,這意味著,如果主機目前沒有這些被依賴的軟件包,直接使用dpkg安裝可能會存在一些問題,因為dpkg
並不能為你解決依賴關系。
# 使用dpkg安裝
$ sudo dpkg -i emacs24_24.3+1-4ubuntu1_amd64.deb
跟前面預料的一樣,這裡你可能出現了一些錯誤:
我們將如何解決這個錯誤了,這就要用到apt-get
了,使用它的-f
參數了,修復依賴關系的安裝
$ sudo apt-get -f install
沒有任何錯誤,這樣我們就安裝成功了,然後你可以運行emacs程序
如果你依然在糾結到底linux將軟件安裝到了什麼地方,那麼很幸運你將可以通過dpkg
找到答案
使用dpkg -L
查看deb
包目錄信息
$ sudo dpkg -L emacs
dpkg
還有一些其他的參數,這裡將作為練習題由你自己來學習
二進制包的安裝比較簡單,我們需要做的只是將從網絡上下載的二進制包解壓後放到合適的目錄,然後將包含可執行的主程序文件的目錄添加進PATH
環境變量即可,如果你不知道該放到什麼位置,請重新復習第四節關於 Linux 目錄結構的內容。