Apt使用參考:Apt不止是Apt-get

 命令 作用
apt-cache search package 搜索包
apt-cache show package 獲取包的相關信息,如說明、大小、版本等
sudo apt-get install package 安裝包
sudo apt-get install package - - reinstall 重新安裝包
sudo apt-get -f install "-f = --fix-missing"當是修復安裝吧...
sudo apt-get remove package 刪除包
sudo apt-get remove package - - purge 刪除包,包括刪除配置文件等
sudo apt-get update 更新源
sudo apt-get upgrade 更新已安裝的包
sudo apt-get dist-upgrade 升級系統
sudo apt-get dselect-upgrade 使用 dselect 升級
apt-cache depends package 瞭解使用依賴
apt-cache rdepends package 查看該包被哪些包依賴吧...
sudo apt-get build-dep package 安裝相關的編譯環境
apt-get source package 下載該包的源代碼
sudo apt-get clean && sudo apt-get autoclean 清理下載文件的存檔,只清理無用的包
sudo apt-get check 檢查是否有損壞的依賴

ubuntu(debian)下使用 apt-get 或 synaptic(新立得) 安裝軟件是件很輕鬆的事情. 除了簡單的安裝軟件, apt工具集還有許多特別情況下的用法.

原文地址:http://hi.baidu.com/agoods/blog/item/1933f0f207a9f716b17ec54a.html



任何時候請記住 man 手冊是良師.

1. 使用 aptitude 代替 apt-get .
aptitude 雖然沒有 apt-get 的"超級牛力", 但功能卻比 apt-get 更強大
首先, 像 apt-get 一樣, 可以安裝軟件
代碼:
aptitude install pack-foo

aptitude 解決依賴關係比 apt-get 更智能. 有時用 apt-get 安裝軟件時會出現 "XXX 需要 XXXX, 但 XXX 已安裝" 這類的錯誤. 這通常是因爲某些軟件包過新造成的. 此時使用 aptitude, aptitude 會發現問題並給出幾個解決方案, 我們只需接受符合心意的方案就可以了.

aptitude 的另外一個優點是會自動記錄那些包是"自動安裝"(即因依賴關係而安裝的), 如果依賴"自動安裝"包的包都沒被安裝, 該"自動安裝"包(此時已無用)就會自動刪除.
使用這兩個命令可以控制包的"自動安裝"屬性
代碼:
aptitude markauto pack-foo #標記成"自動安裝"
aptitude unmarkauto pack-foo #標記成"手動安裝"

刪除軟件時使用 markauto 代替 remove, 就可以避免誤刪重要的包了.
當然, 新版的新立得和 apt-get 也有相似功能, 但貌似不與 aptitude 使用同一個數據庫, 所以建議只使用 aptitude 管理軟件包.

aptitude 還提供了更靈活的控制軟件包版本的方式
代碼:
hold - 將軟件包置於保持狀態
unhold - 取消對一個軟件包的保持命令
forbid-version - 禁止 aptitude 升級到某一特定版本的軟件包。

以前幾周的 libcairo 事件作例子:
代碼:
sudo aptitude install libcairo2=1.4.10-1ubuntu4 # 強制降級
sudo aptitude forbid-version libcairo2=1.4.10-1ubuntu4.1 # 封掉出錯的版本
sudo aptitude markauto libcairo2 #恢復auto屬性

參看 man 手冊裏對 install 操作的描述, 有更多控制方法.

aptitude reinstall 重新安裝軟件包, 相當於 apt-get --reinstall install
aptitude purge 徹底刪除軟件包, 相當於 apt-get --purge remove
一個小技巧
代碼:
aptitude purge `dpkg -l|grep '^rc'|awk '{print $2}'`


aptitude 還集合了多個 apt 工具的功能
代碼:
search - 按名稱 和/或 表達式搜索軟件包
show - 顯示一個軟件包的詳細信息
download - 下載軟件包的 .deb 文件

search 操作有點特別
代碼:
aptitude search "foo bar" # 關鍵詞 foo 和 bar 都要出現
aptitude search foo bar # 相當於"或"


不過 aptitude 有個小缺點, 默認會將"推薦"的包當成"依賴"的包處理. 這樣設置一下就可以解決問題
在自己和root的家目錄下的 .aptitude/config 文件加一句
代碼:
aptitude::Recommends-Important "false";


更詳細的用法參看 man aptitude.
另外:
1.aptitude 的交互模式貌似很混亂, 不如用新立得.
2.慎用 aptitude install -f .

2. 獲得軟件包的下載地址
很簡單

使用新立得:
1.選中要安裝的包
2.文件 -> 生成包下載腳本

使用 apt-get
代碼:
apt-get --print-uris install pack-foo


3. 安裝齊編譯需要的包
首先確定你添加了 deb-src 源, 就像這種
代碼:
deb-src http://ubuntu.cn99.com/ubuntu/ gutsy main restricted universe multiverse

並已經 apt-get update
然後就可以
代碼:
apt-get build-dep pack-foo

把編譯 pack-foo 需要的包安裝好

PS: 更強悍的方法是用 apt-build, 不過這樣就把 ubuntu 搞的太像 gentoo 了. 有興趣的朋友可以自己看 apt-build 的 man.

4. 找某個文件在哪個包裏
如果是安裝了的包, 可以用 dpkg -S, 但此法對未安裝的包就無效了.
此時可使用 apt-file
代碼:
$ apt-file help
apt-file version 2.0.8.2
(c) 2002 Sebastien J. Gross <[email protected]>


apt-file [options] action [pattern]

Configuration options:
--sources-list -s <file> sources.list location
--cache -c <dir> Cache directory
--architecture -a <arch> Use specific architecture
--cdrom-mount -d <cdrom> Use specific cdrom mountpoint
--package-only -l Only display packages name
--fixed-string -F Do not expand pattern
--ignore-case -i Ignore case distinctions
--regexp -x pattern is a regular expression
--verbose -v run in verbose mode
--dummy -y run in dummy mode (no action)
--help -h Show this help.
--version -V Show version number

Action:
update Fetch Contents files from apt-sources.
search|find <pattern> Search files in packages
list|show <pattern> List files in packages
purge Remove cache files

此工具在尋找編譯時缺的文件時很有用, 用前記得先 apt-file update

PS: auto-apt 有相同功能, 而且可以檢測進程需要哪些缺少的文件, 自動提示用戶選擇安裝相應的包。

發佈了32 篇原創文章 · 獲贊 3 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章