apt-get軟件包管理

軟件包安裝

  • apt-get install 軟件包名稱 - 安裝一個新軟件包 (參見下面的 Aptitude)。
  • aptitude - Ncurses (譯註:一種 API,在命令行模式下做出類似GUI的界面)製作的已安裝和可安裝的軟件包查看器。 Aptitude 也可以像 apt-get 一樣在命令行下使用,不過它只包含 apt-get 一部分的指令,例如常用的 install 和 remove 之類。不過因爲 Aptitude 能比 apt-get 顯示更多信息,因此在安裝和卸載軟件的時候要更好用一些。

auto-apt 命令

auto-apt run 命令 - 這條命令可以自動安裝包含缺失文件的軟件包。如果這裏的“命令”在運行的時候訪問了一個系統中沒有的文件,那麼 auto-apt 會用 apt-get 來安裝包含缺失文件的的軟件包。這項功能需要有 APT 以及 sudo 來工作。比如說你在編譯一個軟件,但是彈出一個錯誤說你缺少某個文件,那麼 auto-apt 就會詢問你是否要安裝包含這個缺少的文件的軟件包。同樣它也會暫停相應的編譯進程,並且在安裝完畢之後恢復它。例如可以這樣用:

     # auto-apt run ./configure

這樣如果缺少文件,auto-apt 就會自動使用 apt-get 來安裝它。如果 X 服務器正在運行,也會有相應的圖形界面。 auto-apt 有一個數據庫,需要必要的更新以適應不斷的變化。更新的命令爲 auto-apt updatedb 以及 auto-apt update-local

 軟件包維護

  • apt-get update - 在你更改了/etc/apt/sources.list 或 /etc/apt/preferences 後,需要運行這個命令以令改動生效。同時也要定期運行該命令,以確保你的源列表是最新的。該命令等價於新立得軟件包管理器中的“刷新”,或者是 Windows和OS X 下的 Adept 軟件包管理器的 “check for updates”。
  • apt-get upgrade - 更新所有已安裝的軟件包。類似一條命令完成了新立得軟件包管理器中的“標記所有軟件包以便升級”並且“應用”。
  • apt-get dist-upgrade - 更新整個系統到最新的發行版。等價於在新立得軟件包管理器中“標記所有更新”,並在首選項裏選擇“智能升級” — 這是告訴APT更新到最新包,甚至會刪除其他包(注:不建議使用這種方式更新到新的發行版)。
  • apt-get -f install — 等同於新立得軟件包管理器中的“編輯->修正(依賴關係)損毀的軟件包”再點擊“應用。如果提示“unmet dependencies”的時候,可執行這行命令。
  • apt-get autoclean - 如果你的硬盤空間不大的話,可以定期運行這個程序,將已經刪除了的軟件包的.deb安裝文件從硬盤中刪除掉。如果你仍然需要硬盤空間的話,可以試試apt-get clean,這會把你已安裝的軟件包的安裝包也刪除掉,當然多數情況下這些包沒什麼用了,因此這是個爲硬盤騰地方的好辦法。
  • apt-get clean 類似上面的命令,但它刪除包緩存中的所有包。這是個很好的做法,因爲多數情況下這些包沒有用了。但如果你是撥號上網的話,就得重新考慮了。
  • 包緩存的路徑爲/var/cache/apt/archives,因此,du -sh /var/cache/apt/archives將告訴你包緩存所佔用的硬盤空間。
  • dpkg-reconfigure foo - 重新配置“foo”包。這條命令很有用。當一次配置很多包的時候, 要回答很多問題,但有的問題事先並不知道。例如,dpkg-reconfigure fontconfig-config,在Ubuntu系統中顯示字體配置嚮導。每次我安裝完一個 Ubuntu 系統,我都會運行這行命令,因爲我希望位圖字體在我的所有應用程序上都有效。
  • echo “foo hold” | dpkg –set-selections - 設置包“foo”爲hold,不更新這個包,保持當前的版本,當前的狀態,當前的一切。類似新立得軟件包管理器中的“軟件包->鎖定版本”。
  • 注: apt-get dist-upgrade 會覆蓋上面的設置,但會事先提示。 另外,你必須使用 sudo。輸入命令echo “foo hold” | sudo dpkg –set-selections而不是sudo echo “foo hold” | dpkg –set-selections
  • echo “foo install — 刪除“hold”“locked package”狀態設置。命令行爲echo “foo install” | sudo dpkg –set-selections

軟件包刪除

  • apt-get remove 軟件包名稱 - 刪除已安裝的軟件包(保留配置文件)
  • apt-get –purge remove 軟件包名稱 - 刪除已安裝包(不保留配置文件)
  • 特別技巧:如果你想在刪除‘foo’包同時安裝‘bar’: apt-get –purge remove foo bar+
  • apt-get autoremove - 刪除爲了滿足其他軟件包的依賴而安裝的,但現在不再需要的軟件包。

軟件包搜索

  • apt-cache search foo - 搜索和”foo”匹配的包。
  • apt-cache show foo - 顯示”foo”包的相關信息,例如描述、版本、大小、依賴以及衝突。
  • dpkg –print-avail 軟件包名稱 - 與上面類似。
  • dpkg -l *foo* - 查找包含有”foo”字樣的包。與apt-cache show foo類似,但是還會顯示每個包是安裝了還是沒安裝。
  • dpkg -l package-name-pattern - 列出名爲package-name-pattern的軟件包。除非你知道軟件包的正確全稱,否則可以使用“*package-name-pattern*”.
  • dpkg -L foo - 顯示名爲“foo”的包都安裝了哪些文件以及它們的路徑,很有用的命令。
  • dlocate foo - 在已安裝的包中搜索“foo”的文件。對於回答“這個文件來源於哪個包”這個問題,是非常實用的。dlocate是一個軟件包,必須安裝它才能使用本命令。
  • dpkg -S foo - 和上面的命令一樣,但相比更慢一些。他只能在Debian或Ubuntu系統下運行。另外,不需要安裝dlocate包。
  • apt-file search foo - 類似dlocate和dpkg -S,但搜索所有有效軟件包包,不單單只是你係統上的已安裝的軟件包。– 它所回答的問題是“哪些軟件包提供這些文件”。你必須安裝有apt-file軟件包,並且確保apt-file數據庫是最新的。
  • dpkg -c foo.deb - “foo.deb”包含有哪些文件?注:foo.deb是含路徑的文件名。– 這個是針對你自己下載的.deb包。
  • apt-cache dumpavail - 顯示所有可用軟件包,以及它們各自的詳細信息(會產生很多輸出)。
  • apt-cache show 軟件包名稱 - 顯示軟件包記錄,類似dpkg –print-avail 軟件包名稱
  • apt-cache pkgnames - 快速列出已安裝的軟件包名稱。
  • 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-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

多餘的軟件包

deborphandebfoster工具可以找出已經安裝在系統上孤立、無用的軟件包。

 提高命令行方式下的工作效率

您可以通過定義別名(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’”。

 爲apt-get設置http代理

可以通過三種方法爲apt-get設置http代理

方法一

這是一種臨時的手段,如果您僅僅是暫時需要通過http代理使用apt-get,您可以使用這種方式。

在使用apt-get之前,在終端中輸入以下命令(根據您的實際情況替換yourproxyaddress和proxyport)。

export http_proxy=http://yourproxyaddress:proxyport

方法二

這種方法要用到/etc/apt/文件夾下的apt.conf文件。如果您希望apt-get(而不是其他應用程序)一直使用http代理,您可以使用這種方式。

注意: 某些情況下,系統安裝過程中沒有建立apt配置文件。下面的操作將視情況修改現有的配置文件或者新建配置文件。

gksudo gedit /etc/apt/apt.conf

在您的apt.conf文件中加入下面這行(根據你的實際情況替換yourproxyaddress和proxyport)。

Acquire::http::Proxy "http://yourproxyaddress:proxyport";

保存apt.conf文件。

方法三

這種方法會在您的主目錄下的.bashrc文件中添加兩行。如果您希望apt-get和其他應用程序如wget等都使用http代理,您可以使用這種方式。

gedit ~/.bashrc

在您的.bashrc文件末尾添加如下內容(根據你的實際情況替換yourproxyaddress和proxyport)。

http_proxy=http://yourproxyaddress:proxyport
export http_proxy

保存文件。關閉當前終端,然後打開另一個終端。

使用apt-get update或者任何您想用的網絡工具測試代理。我使用firestarter查看活動的網絡連接。

如果您爲了糾正錯誤而再次修改了配置文件,記得關閉終端並重新打開,否自新的設置不會生效。

代理服務器的登錄

如果代理服務器需要登錄,那麼可以在指定代理服務器地址的時候,用如下格式(根據情況把username,password, yourproxyaddress和proxyport替換爲相應內容):

http_proxy=http://username:password@yourproxyaddress:proxyport
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章