歡迎您光臨本站 註冊首頁

Ubuntu中 APT 和Dpkg 軟體包管理的用法

←手機掃碼閱讀     火星人 @ 2014-03-26 , reply:0

Ubuntu 是建立在 Debian 基礎上的 Linux 發行版本,保留了 Debian 的優秀特性,比如 Dpkg 和 APT 機制,對於原來的 Debian 用戶來說,可以無障礙的遷移到 Ubuntu,而對於 Ubuntu 新手,熟悉 APT 和 Dpgk 是很重要的一步。

1、下載並安裝所有包裹,同時包括升級操作,如果某個包裹被設置了 hold (停止標誌,就會被擱在一邊,即不會被升級):

Ubuntop:~$ sudo apt-get install

2、卸載指定包裹以及任何倚賴這個包裹的其它包裹:

Ubuntop:~$ sudo apt-get remove [--purge]

—purge 指明這個包裹應該被完全清除(包括配置文件),更多信息請看 dpkg -P。

3、升級來自 Ubuntu/Debian 鏡像的包裹列表,如果你想安裝當天的任何軟體,至少每天運行一次,而且每次修改了 /etc/apt/sources.list 后,必須執行:

Ubuntop:~$ sudo apt-get update

Ubuntop:~$ sudo apt-get upgrade [-u]

Ubuntop:~$ sudo apt-get dist-upgrade [-u]

升級所有已經安裝的包裹為最新可用版本,不會安裝新的或移除老的包裹;如果一個包改變了倚賴關係而需要安裝一個新的包裹,那麼它將不會被升級,而是標誌為 hold。 apt-get update 不會升級被標誌為 hold 的包裹 (這個也就是 hold 的意思)。請看下文如何手動設置包裹為 hold。建議同時使用 '-u』 選項,因為這樣你就能看到哪些包裹將會被升級。

dist-upgrade 和 upgrade 類似,除了 dist-upgrade 會安裝和卸載包裹來滿足倚賴關係,因此具有一定的危險性。

4、根據關鍵字搜索包裹:

Ubuntop:~$ sudo apt-cache search keywords

5、顯示包裹的完整描述:

Ubuntop:~$ sudo apt-cache show package_name

6、顯示包裹細節信息,包括和其它包裹的關係:

Ubuntop:~$ sudo apt-cache showpkg package_name

APT 有幾個圖形前端:dselect,console-apt,aptitude,gnome-apt(其中一些在使用前得先安裝)。其中 dselect 無疑是最強大的,也是最古老,最難駕馭,具體可以參考 Debian 手冊。

7、如果你手動下載了一個 .deb 包,通過以下命令安裝 Debian 包裹文件:

Ubuntop:~$ sudo dpkg -i debfilename

8、列出包裹包含的內容:

Ubuntop:~$ sudo dpkg -c debfilename

9、從 .deb 文件中提取包裹信息:

Ubuntop:~$ sudo dpkg -I debfilename

10、卸載一個已安裝的包裹:

Ubuntop:~$ sudo dpkg -r packagename

11、完全清除一個已安裝的包裹。和 remove 不同的是,remove 只是刪掉數據和可執行文件,purge 另外還刪除所有的配製文件:

Ubuntop:~$ sudo dpkg -P packagename

12、列出包裹安裝的所有文件清單。(同時請看 dpkg -c 來檢查一個 .deb 文件的內容):

Ubuntop:~$ sudo dpkg -L packagename

13、顯示已安裝包裹的信息:

Ubuntop:~$ sudo dpkg -s

14、重新配製一個已經安裝的包裹,如果它使用的是 debconf (debconf 為包裹安裝提供了一個統一的配製界面),你能夠重新配製 debconf 它本身:

Ubuntop:~$ sudo dpkg-reconfigure packagename

15、獲取軟體包裹狀態:

Ubuntop:~$ sudo dpkg --get-selections | grep keyname

16、設置軟體包裹狀態,比如 HOLD 某個包裹不允許升級:

Ubuntop:~$ echo "packagename hold" | sudo dpkg --set-selections

17、從 HOLD 狀態恢復軟體包裹標誌位:

Ubuntop:~$ echo "packagename install" | sudo dpkg --set-selections

18、修正依賴關係損壞的包裹:

Ubuntop:~$ sudo apt-get -f install

更多相關幫助可以參考 Debian 文檔,或者包含中文版的 Debian 參考手冊。



所有基於Debian的發行都使用這個包管理系統。Deb包可以把一個應用的文件包在一起,大體就如同Windows上的安裝文件。這裡要介紹的就是如何使用安裝包處理軟體來達到我們的目的。

用apt-get的第一步就是引入必需的軟體庫,Debian的軟體庫也就是所有Debian軟體包的集合,它們存在互聯網上的一些公共站點上。把它們的地址加入,apt-get就能搜索到我們想要的軟體。/etc/apt/sources.list是存放這些地址列表的配置文件,其格式如下:

deb [web或ftp地址] [發行版名字][main/contrib/non-free]

比如Ubuntu是一個基於Debian的發行,它的Sources.list可以是這樣的:

deb http://in.archive.ubuntu.com/ubuntu breezy main restrcted

你可以自己加上自己的地址。apt-get.org 上面有一些不錯的地址列表。

設好地址之後,就要把本機上的軟體庫跟網上的庫同步(只是軟體描述信息,不包含軟體本身)。這樣,本機上就有了一個可用的軟體的清單,命令如下:

# apt-get update

運行成功之後,你就可以搜到在你的發行版中有哪些軟體了,命令是apt-cache,運行這個命令是在本機是檢索,而不連到網上。如:

# apt-cache search baseutils

這個命令可以列出baseutils這個軟體包的情況,有還是沒有,還有版本等。

看到庫里有這個軟體包后,就可以安裝它:

# apt-get install baseutils

這時我們就可以看到apt-get的威力了。如果baseutils依賴於某個另外的軟體,或者一個運行庫xyz.0.01.so,apt-get會自動下載這個包(或含有這個庫的軟體包)。這叫做自動依賴性處理。通常,如果你只用Debian軟體庫內的軟體,是不會發生找不到包或包版本不對的情況的,除非用的是正在開發的Testing或Unstable版本。

卸載軟體:

# apt-get remove baseutils

如果想看一下庫里有多少軟體:

# apt-cache stats
Total package names : 22502 (900k)
Normal packages: 17632
Pure virtual packages: 281
Single virtual packages: 1048
Mixed virtual packages: 172
Missing: 3369
...

把本機所有軟體升級到最新版:

# apt-get upgrade

最後是最強力的--把整個發行版都升到新版本:

# apt-get dist-upgrade

升級時注意那些影響系統起動的東西,比如升級了內核,升級了grub或lilo等,這之後你應當重新運行grub或是lilo,讓它們指向正確的位置,否則升級之後會工作不正常的。

用apt-get安裝軟體時,它會從網上(在sources.list里指的那個站點)下載所用的軟體包,這個包將存在本機上,目錄是:/var/cache/apt/archives/。時間長了,這裡會變得非常巨大,佔用大量的硬碟空間。要想清理這個目錄,可以運行:

# apt-get clean

還有一個自動清理功能,它只清除那些沒用的或者是不完整的軟體包:

# apt-get autoclean

這樣在重裝某軟體時就依然能使用已經下載好的,而不是再到網上去下載。

dpkg - 底層一些的包管理工具

用上apt(高級包管理工具)之後,一般是不需要處理單個的deb文件的。如果需要,就要用dpkg命令。比如想自己裝gedit:

# dpkg -i gedit-2.12.1.deb

卸載:

# dpkg -r gedit

這裡只寫名字即可。還可以加上--purge(-P)標誌:

# dpkg -P gedit

這會連同gedit的配置文件一起刪除,只用-r的話是不刪除配置文件的。

如果不想安裝一個deb包,但想看一下它裡面有什麼文件:

# dpkg -c gedit-2.12.1.deb

如果想多看點信息:

# dpkg -I gedit-2.12.1.deb

也可以用通配符來列出機器上的軟體:

# dpkg -l gcc*

這會列出所有gcc開頭的軟體包:
Desired=Unknown/Install/Remove/Purge/Hold
Status=Not/Installed/Config-files/Unpacked/Failed-config/.
/ Err?=(none)/Hold/Reinst-required/X=both-problems
/ Name Version Description
+++-===============-==============-========================
ii gcc 4.0.1-3 The GNU C compiler
ii gcc-3.3-base 3.3.6-8ubuntu1 The GNU Compiler Colletio
un gcc-3.5 none (no description available)

其中,第1個 i 表示希望安裝,第2個 i 表示已經安裝,第3個欄位是問題(如果有)(這3個字的含義可以看上面那3行,desired, status, err),後面是名字,版本和描述。un就表示,Unknown, not-installed。

如果想看某包是否已經安裝:

# dpkg -s gedit

如果想看某軟體都有哪些文件,都裝到了什麼地方:

# dpkg -L gedit

如果只想看其中的某些文件,就加上Grep:

# dpkg -L gedit grep png

當然還有aptitude和Aptitude,前者是終端上運行的帶菜單的工具,後者是X窗口上運行的圖形化的程序。

還有,列出某包的詳情:apt-cache show gedit
一些強制的命令:dpkg --force-help

[火星人 ] Ubuntu中 APT 和Dpkg 軟體包管理的用法已經有873次圍觀

http://coctec.com/docs/linux/show-post-180136.html