最近在使用Puppet快速部署Openstack,看到一些沒見過的工具,例如aptitude,在Ubuntu上有強大的apt-get爲何還要用這個呢。本文轉自:http://hi.baidu.com/52safe/blog/item/c17891ff02201653d6887d96.html
起初GNU/Linux系統中只有.tar.gz。用戶 必須本身編譯他們想使用的每個程序。在Debian出現之後,人們認爲有必要在系統 中添加一種機 制用來管理 安裝在計算機上的軟件包。人們將這套系統稱爲dpkg。至此着名的‘package’首次在GNU/Linux上出現。不久之後紅帽子也開始着 手創建本身的包管理系統 ‘rpm’。
GNU/Linux的創造者們很快又陷入了新的窘境。他們但願經過一種快捷、實用並且高效的方式來安裝軟件包。這些軟件包能夠自動處理相互之間 的依賴關係,而且在升級過程當中維護他們的配置文件 。Debian又一次充當了開路先鋒的角色。她獨創了APT(Advanced Packaging Tool)。這一工具後來被Conectiva 移植到紅帽子系統中用於對rpm包的管理。在其餘一些發行版中咱們也能看到她的身影。
「同時,apt是一個很完整和先進的軟件包管理程序,使用它可讓你,又簡單,又準確的找到你要的的軟件包, 而且安裝或卸載都很簡潔。 它還可讓你的全部軟件都更新到最新狀態,並且也能夠用來對ubuntu 進行升級。」
「apt是須要用命令 來操做的軟件,不過如今也出現了不少有圖形的軟件,好比Synaptic, Kynaptic 和 Adept。」
命令
下面將要介紹的全部命令都須要sudo!使用時請將「packagename」和「string」替換成您想要安裝或者查找的程序。
* apt-get update——在修改/etc/apt/sources.list或者/etc/apt/preferences之後運行該命令。此外您須要按期運行這一命令以確保您的軟件包列表是最新的。
* apt-get install packagename——安裝一個新軟件包(參見下文的aptitude )* apt-get remove packagename——卸載一個已安裝的軟件包(保留配置文件)* apt-get –purge remove packagename——卸載一個已安裝的軟件包(刪除配置文件)* 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文件,所以若是您爲磁盤空間不足而感到焦頭爛額,這個辦法也許值得一試。典型應用我是個賽車發燒友,想裝個賽車類遊戲玩玩。有哪些賽車類遊戲可供選擇呢?apt-cache search racing game出來了一大堆結果。看看有沒有更多關於torcs這個遊戲的信息。apt-cache show torcs看上去不錯。這個遊戲是否是已經安裝了?最新版本是多少?它屬於哪一類軟件,universe仍是main?apt-cache policy torcs好吧,如今我要來安裝它!apt-get install torcs在控制檯下我應該調用什麼命令來運行這個遊戲呢?在這個例子中,直接用torcs就好了,但並非每次都這麼簡單。咱們可一經過查找哪些文件被安 裝到了 「/usr/bin」文件夾下來肯定二進制文件名。對於遊戲軟件,這些二進制文件將被安裝到「/usr/games」下面。對於系統管理工具相應的文件夾是「/usr/sbin」。dpkg -L torcs|grep /usr/games/這個命令的前面一部分顯示軟件包「torcs」安裝的全部文件(您本身試試看)。經過命令的第二部分,咱們告訴系統只顯示前一部分的輸出結果中含有「/usr/games」的那些行。這個遊戲很酷哦。說不定還有其餘賽道可玩的?apt-cache search torcs個人磁盤空間不夠用了。我得把apt的緩存空間清空才行。apt-get clean哦不,老媽叫我把機器上的全部遊戲都刪掉。可是我想把配置文件保留下來,這樣待會我只要重裝一下就能夠繼續玩了。apt-get remove torcs若是我想連配置文件一塊刪除:apt-get remove –purge torcs額外的軟件包deborphan和debfoster工具能夠找出已經安裝在系統上的不會被用到的軟件包。提升命令行方式下的工做效率您能夠經過定義別名(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-getaptitude 解決得更好的地方: install, remove, reinstall(apt-get無此功能), show(apt-get無此功能), search(apt-get無此功能), hold(apt-get無此功能), unhold(apt-get無此功能), apt-get 解決得更好的地方: source(aptitude無此功能), build-dep (低版本的aptitude沒有build-dep功能)apt-get 跟 aptitude 沒什麼區別的地方:update, upgrade (apt-get upgrade=aptitude safe-upgrade, apt-get dist-upgrade=aptitude full-upgrgade)