1.c. 維護軟體
搜尋軟體
你可以使用 emerge 內建的搜尋功能來搜尋軟體。預設上,emerge --search 回覆符合搜尋字串的套件名稱(完全或部分符合)。
例如說,搜尋名稱中有 "pdf" 的所有套件:
原始碼 4: 搜尋以 pdf 命名的套件 |
$ emerge --search pdf
|
如果你也想要搜尋套件描述,你可以使用 --searchdesc (或 -S):
原始碼 5: 搜尋 pdf 相關套件 |
$ emerge --searchdesc pdf
|
當看到輸出內容時,你會發現他給你很多資訊。這些欄位很清楚的命名所以我們不會深入說明他們的意義:
原始碼 6: 'emerge --search' 輸出範例 |
* net-print/cups-pdf
Latest version available: 1.5.2
Latest version installed: [ Not Installed ]
Size of downloaded files: 15 kB
Homepage: http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
Description: Provides a virtual printer for CUPS to produce PDF files.
License: GPL-2
|
安裝軟體
一但你找到你喜歡的軟體,你可以使用 emerge 輕鬆的安裝他:只要加上套件名稱。例如說,安裝 gnumeric:
原始碼 7: 安裝 gnumeric |
# emerge gnumeric
|
因為有很多套件都依賴其他套件,任何安裝特定套件的動作可能會導致安裝數個相依套件。別擔心,Portage 會完美的處理相依關係。如果你想要知道當你安裝某個套件時 Portage 可能 會安裝的軟體,加上 --pretend,例如說:
原始碼 8: Pretend to install gnumeric |
# emerge --pretend gnumeric
|
當你要求 Portage 安裝一個套件時,他會從網路上下載需要的原始碼(如果需要的話)並且預設存在 /usr/portage/distfiles。這之後會解壓縮,編譯,然後安裝套件。如果你想要 Portage 只下載原始碼而不安裝,在 emerge 指令後加入 --fetchonly 選項:
原始碼 9: 下載 gnumeric 的原始碼 |
# emerge --fetchonly gnumeric
|
尋找已安裝套件的文件
許多套件有提供他們自己的文件。有時候,doc USE 設定決定要不要安裝這些文件。你可以使用 emerge -vp <套件名稱> 指令來檢查是否有 doc USE 設定。
原始碼 10: 檢查 doc USE 設定是否存在 |
(alsa-lib 當然只是一個範例而已) # emerge -vp alsa-lib [ebuild N ] media-libs/alsa-lib-1.0.9_rc3 +doc -jack 674 kB |
你可以在 /etc/make.conf 檔案中全域啟動或關閉 doc USE 設定,或是在 /etc/portage/package.use 檔案中設定個別套件。USE 設定 這一章包含這些的詳細說明。
在套件安裝完以後,他的文件一般都在 /usr/share/doc 下以套件名稱為名的子目錄下。你也可以用 app-portage/gentoolkit 套件 中的 equery 工具列出所有已安裝的檔案。
原始碼 11: 確認套件文件的位置 |
# ls -l /usr/share/doc/alsa-lib-1.0.9_rc3 total 28 -rw-r--r-- 1 root root 669 May 17 21:54 ChangeLog.gz -rw-r--r-- 1 root root 9373 May 17 21:54 COPYING.gz drwxr-xr-x 2 root root 8560 May 17 21:54 html -rw-r--r-- 1 root root 196 May 17 21:54 TODO.gz (或者是,使用 equery 來找你有興趣的檔案:) # equery files alsa-lib | less media-libs/alsa-lib-1.0.9_rc3 * Contents of media-libs/alsa-lib-1.0.9_rc3: /usr /usr/bin /usr/bin/alsalisp (下略) |
移除軟體
當你想從系統上移除軟體,使用 emerge --unmerge。這會告訴 Portage 從你的系統中移除所有這個套件安裝的檔案,除了該套件在安裝後你修改過的設定檔。留下這些設定檔讓你可以繼續使用這個套件,如果你重新安裝他的話。
然而,一個 嚴重警告 是:Portage 並 不會 檢查別的套件是否依賴你要移除的套件。然而他會在你想要移除某些套件時警告你,因為移除後會搞雜系統。
原始碼 12: 從系統上移除 gnumeric |
# emerge --unmerge gnumeric
|
當你從系統上移除套件後,再安裝這個套件時自動安裝的相依套件會被留下來。要讓 Portage 知道相依套件也可以移除,使用 emerge 的 --depclean 功能。我們會在之後討論他。
更新系統
為了讓你的系統保持在最佳狀態(更不用說安裝最新的安全性更新),你需要定期更新系統。因為 Portage 只檢查在 Portage 樹中的 ebuilds,首先你需要更新 Portage 樹。當你更新好了以後,你可以使用 emerge --update world 更新你的系統:
原始碼 13: 更新你的系統 |
# emerge --update world
|
Portage 會搜尋你安裝過的程式較新的版本。然而,他只會搜尋你要求安裝的軟體 - 而沒有相依套件。如果你相要更新系統上每一個套件,加上 --deep 參數:
原始碼 14: 更新全系統 |
# emerge --update --deep world
|
因為你沒有刻意安裝的套件(因為其他套件相依而安裝)也會有安全更新,建議你偶爾執行這個指令。
如果你最近改變過任何 USE 旗標,你可能會想要加入 --newuse。Portage 會檢查這個改變是否需要安裝新的套件會是重新編譯已安裝的套件:
原始碼 15: 執行完整更新 |
# emerge --update --deep --newuse world
|
存根套件
一些在 Portage 樹中的套件實際上並沒有任何內容,而是用在安裝一系列的套件。例如說,kde 套件會設定相依許多 KDE 相關套件來在你的系統上安裝一個完整的 KDE 環境。
如果你想要移除像這樣的套件,執行 emerge --unmerge 並不會有太大幫助,因為他的相依套件還是留在系統上。
Portage 有能力移除孤立相依套件,但是因為套件的相依性是動態的,你首先需要更新整個系統,包括你改變 USE 旗標造成的改變。完成之後你可以執行 emerge --depclean 移除孤立相依套件。做完以後,你需要重新編譯動態連結到已移除軟體,但現在不再需要連結的套件。
這些事情可以用底下的指令處理:
原始碼 16: 移除孤立相依套件 |
# emerge --update --deep --newuse world # emerge --depclean # revdep-rebuild |
revdep-rebuild 是由 gentoolkit 套件提供的,不要忘記先安裝他:
原始碼 17: 安裝 gentoolkit 套件 |
# emerge gentoolkit
|