2011/12/20

在Ubuntu下安裝套件(apt-get and dpkg)

最近在Ubuntu下安裝套件,就把相關的指令一併記錄,爾後可查詢。

正常安裝


在Ubuntu下安裝套件,最簡單的方式就是使用apt-get指令。在這個例子中,subversion是指套件本身的名字。
jose@ubuntu:~/test$ sudo apt-get install subversion

如果想要更新既有套件至最新版,就可以使用以下的命令,這個命令也同時會更新 /etc/apt/source.list 這個檔案。
jose@ubuntu:~/test$ sudo apt-get update

尋找套件


如果有某些套件你用前述的方式,都無法找到也無法更新時,我會去Ubuntu Packages SearchLINUX PACKAGES SEARCH網站,以關鍵字去搜尋,就可以找到相關的套件了。

不過,你得注意這些套件的Linux版本(是Ubuntu、Debian、Fedora、CentOS、openSUSE)還有它們的版本編號,就可以下載Ubuntu的軟體包(.deb檔)了。

安裝.deb檔


最簡單的方式是直接雙擊該.deb檔,Ubuntu會叫出「套件安裝程式」去打開這個.deb檔,同時會顯示最新的狀態。

當然,如果你對Command Line Interface 很熟悉,你當然也可以用CLI的方式安裝,例如:
jose@ubuntu:~/test$ sudo dpkg -i libltdl-dev_2.2.6b-2ubuntu1_i386.deb
[sudo] password for jose:
選取了原先未被選取的套件 libltdl-dev。
(正在讀取資料庫 ... 系統目前共安裝了 136260 個檔案和目錄。)
正在解開 libltdl-dev (從 libltdl-dev_2.2.6b-2ubuntu1_i386.deb)...
正在設定 libltdl-dev (2.2.6b-2ubuntu1) ...


既然可以安裝,自然也可以移除,在CLI下移除套件的方式也很簡單,例如:
jose@ubuntu:~/test$ sudo dpkg -r libltdl-dev
(正在讀取資料庫 ... 系統目前共安裝了 136329 個檔案和目錄。)
正在移除 libltdl-dev ...


請記得,在移除時,必須使用套件本身的名字,而不是直接使用完整的檔案名稱。

dpkg命令


其他的dpkg命令,可以用dpkg -h來查詢。

jose@ubuntu:~/test$ dpkg -h
用法:dpkg [<選項> ...] <命令>

指令:
-i|--install <.deb 檔> ... | -R|--recursive <目錄> ...
--unpack <.deb 檔> ... | -R|--recursive <目錄> ...
-A|--record-avail <.deb 檔> ... | -R|--recursive <目錄> ...
--configure <套件> ... | -a|--pending
--triggers-only <套件> ... | -a|--pending
-r|--remove <套件> ... | -a|--pending
-P|--purge <套件> ... | -a|--pending
--get-selections [<表達式> ...] 取得選擇列表至 stdout。
--set-selections 從 stdin 取得套件選擇列表。
--clear-selections 取消選擇所有的非基本套件。
--update-avail <套件檔> 取代現有套件的資訊。
--merge-avail <套件檔> 以檔案內的 info 資訊進行合併。
--clear-avail 清除現有的資訊。
--forget-old-unavail 清除已移除且無法再安裝的套件。
-s|--status <套件> ... 顯示套件的詳細狀態。
-p|--print-avail <套件> ... 顯示可用版本的詳細資訊。
-L|--listfiles <套件> ... 列出 `屬於' 該套件的所有檔案。
-l|--list [<表達式> ...] 簡述套件狀態。
-S|--search <表達式> ... 查詢某些檔案是屬於哪些套件。
-C|--audit 檢查已損毀的套件。
--print-architecture 顯示 dpkg 硬體平台。
--compare-versions <a> <op> <b> 比較版本 - 請參閱下文。
--force-help 顯示強制選項的說明。
-Dh|--debug=help 顯示偵錯模式的說明。

-h|--help 顯示這個說明訊息。
--version 顯示版本資訊。
--license|--licence 顯示著作版權條文。

使用 dpkg -b|--build|-c|--contents|-e|--control|-I|--info|-f|--field|
-x|--extract|-X|--vextract|--fsys-tarfile 於套件檔上(鍵入 dpkg-deb --help)。

內部使用:dpkg --assert-support-predepends | --predep-package |
--assert-working-epoch | --assert-long-filenames | --assert-multi-conrep。

選項:
--admindir=<目錄> 使用 <目錄> 取代 /var/lib/dpkg。
--root=<目錄> 安裝在另一個不同的 root 目錄。
--instdir=<目錄> 在不變更 admin dir 的情況上變更安裝路徑。
-O|--selected-only 略過未被選擇為要進行安裝/升級的套件。
-E|--skip-same-version 略過和已安裝套件相同的版本。
-G|--refuse-downgrade 略過比已安裝套件更舊的版本。
-B|--auto-deconfigure 即使會損毀其它套件也要進行安裝。
--[no-]triggers 略過或強制進行伴隨而來的觸發程式。
--no-debsig 不試著去驗証套件簽章。
--no-act|--dry-run|--simulate
只顯示將要進行的動作 - 不實際進行。
-D|--debug=<八進制數字> 啟用除錯機機(請參閱 Dhelp 或 --debug=help)。
--status-fd <n> 傳送狀態的變更情況至檔案重導 <n>。
--log=<檔名> 記錄狀態的變更及動作至 <檔名>。
--ignore-depends=<套件>,...
忽略 <套件> 的相依關係。
--force-... 無視問題的發生(請參閱 --force-help)。
--no-force-...|--refuse-...
當發生問題時中止。
--abort-after <n> 在發生 <n> 個錯誤後中止。

--compare-versions 的比較運算子:
lt le eq ne ge gt (將無版本視為比任何版本都舊);
lt-nl le-nl ge-nl gt-nl (將無版本視為比任何版本都新);
< << <= = >= >> > (僅為了能相容於 control 檔的語法)

使用 `dselect' 或 `aptitude' 等介面親和的套件管理程式。

沒有留言:

張貼留言