最近在使用Puppet快速部署Openstack,看到一些沒見過的工具,例如aptitude,在Ubuntu上有強大的apt-get爲何還要用這個呢。本文轉自:http://hi.baidu.com/52safe/blog/item/c17891ff02201653d6887d96.htmlhtml
起初GNU/Linux系統中只有.tar.gz。用戶 必須本身編譯他們想使用的每個程序。在Debian出現之後,人們認爲有必要在系統 中添加一種機 制用來管理 安裝在計算機上的軟件包。人們將這套系統稱爲dpkg。至此着名的‘package’首次在GNU/Linux上出現。不久之後紅帽子也開始着 手創建本身的包管理系統 ‘rpm’。ubuntu
GNU/Linux的創造者們很快又陷入了新的窘境。他們但願經過一種快捷、實用並且高效的方式來安裝軟件包。這些軟件包能夠自動處理相互之間 的依賴關係,而且在升級過程當中維護他們的配置文件 。Debian又一次充當了開路先鋒的角色。她獨創了APT(Advanced Packaging Tool)。這一工具後來被Conectiva 移植到紅帽子系統中用於對rpm包的管理。在其餘一些發行版中咱們也能看到她的身影。
「同時,apt是一個很完整和先進的軟件包管理程序,使用它可讓你,又簡單,又準確的找到你要的的軟件包, 而且安裝或卸載都很簡潔。 它還可讓你的全部軟件都更新到最新狀態,並且也能夠用來對ubuntu 進行升級。」緩存
「apt是須要用命令 來操做的軟件,不過如今也出現了不少有圖形的軟件,好比Synaptic, Kynaptic 和 Adept。」bash
命令工具
下面將要介紹的全部命令都須要sudo!使用時請將「packagename」和「string」替換成您想要安裝或者查找的程序。post
* apt-get update——在修改/etc/apt/sources.list或者/etc/apt/preferences之後運行該命令。此外您須要按期運行這一命令以確保您的軟件包列表是最新的。ui
* apt-get install packagename——安裝一個新軟件包(參見下文的aptitude )url
* apt-get remove packagename——卸載一個已安裝的軟件包(保留配置文件)命令行
* apt-get –purge remove packagename——卸載一個已安裝的軟件包(刪除配置文件)3d
* dpkg –force-all –purge packagename 有些軟件很難卸載,並且還阻止了別的軟件的應用 ,就能夠用這個,不過有點冒險。
* apt-get autoclean apt會把已裝或已卸的軟件都備份在硬盤上,因此若是須要空間 的話,可讓這個命令來刪除你已經刪掉的軟件
* apt-get clean 這個命令會把安裝的軟件的備份也刪除,不過這樣不會影響軟件的使用的。
* apt-get upgrade——更新全部已安裝的軟件包
* apt-get dist-upgrade——將系統升級到新版本
* apt-cache search string——在軟件包列表中搜索字符串
* dpkg -l package-name-pattern——列出全部與模式相匹配的軟件包。若是您不知道軟件包的全名,您可使用「*package-name-pattern*」。
* aptitude——詳細查看已安裝或可用的軟件包。與apt-get相似,aptitude能夠經過命令行方式調用,但僅限於某些命令——最多見的有安裝和卸載命令。因爲aptitude比apt-get瞭解更多信息,能夠說它更適合用來進行安裝和卸載。
* apt-cache showpkg pkgs——顯示軟件包信息。
* apt-cache dumpavail——打印可用軟件包列表。
* apt-cache show pkgs——顯示軟件包記錄,相似於dpkg –print-avail。
* apt-cache pkgnames——打印軟件包列表中全部軟件包的名稱。
* dpkg -S file——這個文件屬於哪一個已安裝軟件包。
* dpkg -L package——列出軟件包中的全部文件。
* apt-file search filename——查找包含特定文件的軟件包(不必定是已安裝的),這些文件的文件名中含有指定的字符串。apt-file是一個獨立的軟件包。您必須先使用apt-get install來安裝它,然後運行apt-file update。若是apt-file search filename輸出的內容太多,您能夠嘗試使用apt-file search filename | grep -w filename(只顯示指定字符串做爲完整的單詞出如今其中的那些文件名)或者相似方法,例如:apt-file search filename | grep /bin/(只顯示位於諸如/bin或/usr/bin這些文件夾中的文件,若是您要查找的是某個特定的執行文件的話,這樣作是有幫助的)。
* apt-get autoclean——按期運行這個命令來清除那些已經卸載的軟件包的.deb文件。經過這種方式,您能夠釋放大量的磁盤空間。若是您的需求十分迫切,可使用apt-get clean以釋放更多空間。這個命令會將已安裝軟件包裹的.deb文件一併刪除。大多數狀況下您不會再用到這些.debs文件,所以若是您爲磁盤空間不足而感到焦頭爛額,這個辦法也許值得一試。
典型應用
您能夠經過定義別名(alias)來提升這些命令的輸入速度。例如,您能夠在您的*~/.bashrc*文件中添加下列內容
alias acs=’apt-cache search’
alias agu=’sudo apt-get update’
alias agg=’sudo apt-get upgrade’
alias agd=’sudo apt-get dist-upgrade’
alias agi=’sudo apt-get install’
alias agr=’sudo apt-get remove’
或者使用前面介紹的aptitude命令,如「alias agi=’sudo aptitude install’」。
———————————————————————————————-
aptitude 與 apt-get 同樣,是 Debian 及其衍生系統中功能極其強大的包管理工具。與 apt-get 不一樣的是,aptitude 在處理依賴問題上更佳一些。舉例來講,aptitude 在刪除一個包時,會同時刪除自己所依賴的包。這樣,系統中不會殘留無用的包,整個系統更爲乾淨。如下是筆者總結的一些經常使用 aptitude 命令,僅供參考。
命令 做用
aptitude update 更新可用的包列表
aptitude upgrade 升級可用的包
aptitude dist-upgrade 將系統升級到新的發行版
aptitude install pkgname 安裝包
aptitude remove pkgname 刪除包
aptitude purge pkgname 刪除包及其配置文件
aptitude search string 搜索包
aptitude show pkgname 顯示包的詳細信息
aptitude clean 刪除下載的包文件
aptitude autoclean 僅刪除過時的包文件
固然,你也能夠在文本界面模式中使用 aptitude。
有的問題 apt-get 解決不了,必須使用 aptitude 解決,有的問題,用 aptitude 解決不了,必須使用 apt-get