Linux Ubuntu中軟體管理apt & dpkg知識整理
一、 Ubuntu中軟體安裝方法
1)APT方式
(1)普通安裝:apt-get install softname1 softname2 …;
(2)修復安裝:apt-get -f install softname1 softname2… ;(-f Atemp to correct broken dependencies)
(3)重新安裝:apt-get –reinstall install softname1 softname2…;
2)Dpkg方式
(1)普通安裝:dpkg -i package_name.deb
3)原始碼安裝(.tar、tar.gz、tar.bz2、tar.Z)
首先解壓縮原始碼壓縮包然後通過tar命令來完成
a.解xx.tar.gz:tar zxf xx.tar.gz b.解xx.tar.Z:tar zxf xx.tar.Z c.解xx.tgz:tar zxf xx.tgz d.解xx.bz2:bunzip2 xx.bz2 e.解xx.tar:tar xf xx.tar
然後進入到解壓出的目錄中,建議先讀一下README之類的說明檔案,因為此時不同原始碼包或者預編譯包可能存在差異,然後建議使用ls -F –color或者ls -F命令(實際上我的只需要 l 命令即可)檢視一下可執行檔案,可執行檔案會以*號的尾部標誌。
一般依次執行
./configure make sudo make install
即可完成安裝。
二、Ubuntu中軟體包的解除安裝方法
1、APT方式
(1)移除式解除安裝:apt-get remove softname1 softname2 …;(移除軟體包,當包尾部有+時,意為安裝)
(2)清除式解除安裝 :apt-get –purge remove softname1 softname2…;(同時清除配置) 或 apt-get purge sofname1 softname2...;
2、Dpkg方式
(1)移除式解除安裝:dpkg -r pkg1 pkg2 …;
(2)清除式解除安裝:dpkg -P pkg1 pkg2…;
二、總結APT、DPKG
1、apt總結
apt-get 下載後,軟體所在路徑是什麼??
/var/cache/apt/archives
apt-get install安裝目錄是包的維護者確定的,不是使用者
命令收集:
apt-cache search # ------(package 搜尋包)
apt-cache show #------(package 獲取包的相關資訊,如說明、大小、版本等)
apt-get install # ------(package 安裝包)
apt-get install # -----(package --reinstall 重新安裝包)
apt-get -f install # -----(強制安裝, "-f = --fix-missing"當是修復安裝吧...)
apt-get remove #-----(package 刪除包)
apt-get remove --purge # ------(package 刪除包,包括刪除配置檔案等)
apt-get autoremove --purge # ----(package 刪除包及其依賴的軟體包+配置檔案等(只對6.10有效,強烈推薦))
apt-get update #------更新源
apt-get upgrade #------更新已安裝的包
apt-get dist-upgrade # ---------升級系統
apt-get dselect-upgrade #------使用 dselect 升級
apt-cache depends #-------(package 瞭解使用依賴)
apt-cache rdepends # ------(package 瞭解某個具體的依賴,當是檢視該包被哪些包依賴吧...)
apt-get build-dep # ------(package 安裝相關的編譯環境)
apt-get source #------(package 下載該包的原始碼)
apt-get clean && apt-get autoclean # --------清理下載檔案的存檔 && 只清理過時的包
apt-get check #-------檢查是否有損壞的依賴
apt-file search filename -----查詢filename屬於哪個軟體包
apt-file list packagename -----列出軟體包的內容
apt-file update --更新apt-file的資料庫
命令解析:
apt-get install
#下載軟體包,以及所有依賴的包,同時進行包的安裝或升級。如果某個包被設定了 hold (停止標誌,就會被擱在一邊(即不會被升級)
apt-get remove [--purge]
#移除以及任何依賴這個包的其它包。--purge 指明這個包應該被完全清除 (purged) ,更多資訊請看 dpkg -P。
apt-get update
#升級來自 Debian 映象的包列表,如果你想安裝當天的任何軟體,至少每天執行一次,而且每次修改了
/etc/apt/sources.list 後,必須執行。
apt-get upgrade [-u]
# 升級所有已經安裝的包為最新可用版本。不會安裝新的或移除老的包。
如果一個包改變了依賴關係而需要安裝一個新的包,那麼它將不會被升級,而是標誌為 hold。
apt-get update 不會升級被標誌為 hold 的包 (這個也就是 hold 的意思)。
# 請看下文如何手動設定包為 hold。我建議同時使用 '-u' 選項,因為這樣你就能看到哪些包將會被升級。
apt-get dist-upgrade [-u]
#和 apt-get upgrade 類似,除了 dist-upgrade 會安裝和移除包來滿足依賴關係。因此具有一定的危險性。
apt-cache search
#在軟體包名稱和描述中,搜尋包含xxx的軟體包。
apt-cache show
#顯示某個軟體包的完整的描述。
apt-cache showpkg
#顯示軟體包更多細節,以及和其它包的關係
2、dpkg總結
命令收集:
dpkg --info "軟體包名" --列出軟體包解包後的包名稱.
dpkg -l --列出當前系統中所有的包.可以和引數less一起使用在分屏檢視. (類似於rpm -qa)
dpkg -l |grep -i "軟體包名" --檢視系統中與"軟體包名"相關聯的包.
dpkg -s 查詢已安裝的包的詳細資訊.
dpkg -L 查詢系統中已安裝的軟體包所安裝的位置. (類似於rpm -ql)
dpkg -S 查詢系統中某個檔案屬於哪個軟體包. (類似於rpm -qf)
dpkg -I 查詢deb包的詳細資訊,在一個軟體包下載到本地之後看看用不用安裝(看一下唄).
dpkg -i 手動安裝軟體包(這個命令並不能解決軟體包之前的依賴性問題),如果在安裝某一個軟體包的時候遇到了軟體依賴的問題,可以用apt-get -f install在解決信賴性這個問題.
dpkg -r 解除安裝軟體包.不是完全的解除安裝,它的配置檔案還存在.
dpkg -P 全部解除安裝(但是還是不能解決軟體包的依賴性的問題)
dpkg -reconfigure 重新配置
命令解析:
dpkg -i
#安裝一個 Debian 包檔案,如你手動下載的檔案。
dpkg -c
#列出的內容。
dpkg -I
#從中提取包資訊。
dpkg -r
#移除一個已安裝的包。
dpkg -P
#完全清除一個已安裝的包。和 remove 不同的是,remove 只是刪掉資料和可執行檔案,purge 另外還刪除所有的配製檔案。
dpkg -L
#列出 安裝的所有檔案清單。同時請看 dpkg -c 來檢查一個 .deb 檔案的內容。
dpkg -s
#顯示已安裝包的資訊。同時請看 apt-cache 顯示 Debian 存檔中的包資訊,以及 dpkg -I 來顯示從一個 .deb 檔案中提取的包資訊。
dpkg-reconfigure
#重新配製一個已經安裝的包,如果它使用的是 debconf (debconf 為包安裝提供了一個統一的配製介面)。你能夠重新配製debconf 它本身,如你想改變它的前端或提問的優先權。
#例如,重新配製 debconf,使用一個 dialog 前端,簡單執行:
dpkg-reconfigure --frontend=dialog debconf #(如果你安裝時選錯了,這裡可以改回來喲:)
echo " hold" | dpkg --set-selections
#設定 的狀態為 hold (命令列方式)
dpkg --get-selections ""
#獲取的 的當前狀態 (命令列方式)
/var/lib/dpkg/info目錄中儲存了各個軟體包的資訊及管理檔案.每個檔案的作用如下:
以 “.conffiles” 結尾的檔案記錄軟體包的配置列表.
以 “.list” 結尾的檔案記錄了軟體包的檔案列表,使用者可在檔案當中找到軟體包檔案的具體安裝位置.
以 “.md5sums” 結尾的檔案記錄了md5資訊,用來進行包的驗證的.
以 “.config” 結尾的檔案是軟體包的安裝配置角本.
以 “.postinst” 角本是完成Debian包解開之後的配置工作,通常用來執行所安裝軟體包相關的命令和服務的重新啟動.
以 “.preinst” 角本在Debain解包之前執行,主要作用是是停止作用於即將升級的軟體包服務直到軟體包安裝或和升級完成.
以 “.prerm” 指令碼負責停止與軟體包關聯的daemon服務,在刪除軟體包關聯檔案之前執行.
以 “.postrm” 指令碼負責修改軟體包連結或檔案關聯,或刪除由它建立的檔案.