歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux 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這些文件夾中的文件,如果您要查找的是某個特定的執行文件的話,這樣做是有幫助的)。

多余的軟件包

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:password@yourproxyaddress:proxyport

Copyright © Linux教程網 All Rights Reserved