天天看點

apt-get軟體包管理 (轉)

apt-get軟體包管理 2009/09/27 14:51

軟體包安裝

  • 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      

多餘的軟體包

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’”。

 為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:[email protected]:proxyport