Emerge
From wiki.gentoo.org.tw
目錄 [隱藏] |
名稱(NAME)
emerge - Portage 系統的命令列介面
綱要(SYNOPSIS)
- emerge
- [options] [action] [ebuild | tbz2file | class | dependency] ...
- emerge
- [options] [action] ebuildfile
- emerge
- sync | rsync
- emerge
- --help -h [system | config | sync]
- emerge
- --version
敘述(DESCRIPTION)
emerge 是 Portage 系統的命令列介面,主要用於安裝套件,而且 emerge 可自動處理相依性。 emerge 能更新 portage tree,建立新的與更新原有套件。 emerge 能處理原始碼與執行檔,建立散佈所用的套件。
EBUILDS, TBZ2S, CLASSES AND DEPENDENCIES
emerge 安裝套件時,可指定套件以下列方式安裝: ebuild、 tbz2file、class 或 dependency。
- ebuild
- ebuild 檔名需為最小的,合格的 Portage 套件名稱:不含版本或類別名稱,如 portage 或 python。可附加類別與版本號碼,如 sys-apps/portage 或 =python-2.2.1-r2。 emerge 會忽略結尾斜線(trailing slash) ,因此會作檔名補齊。 ebuild 也可為確切的檔名,如 /usr/portage/app-admin/python/python-2.2.1-r2.ebuild。
- tbz2file
- tbz2file 需為合格的 .tbz2 。以 ebuild <package>-<version>.ebuild package 或 emerge --buildpkg [category/]<package> 或 quickpkg /var/db/pkg/<category>/<package> 建立。
- class
- Package class類別是一群套件的速記。支援兩種類別:system 與 world。system 為系統正常運作所需的套件集。 world 包含所有 system 的套件,及其他列示於 /var/cache/edb/world的套件。 [詳見底下的 FILES] 注意這些命令通常連接著 --update。
- dependency
- dependency 相依套件。如 >=dev-lang/python-2.2.1-r2 符合 Python 等於或高於 2.2.1-r2 的新版本。 同理, <dev-lang/python-2.0 符合 Python 2.0 之前的新版本。 注意在許多 shell 中你需要跳脫字元例如 '<' and '='; 使用單或雙引號於相依套件名稱以避開跳脫問題.
動作(ACTION)
- 未指定
- 如果未指定動作, 預設動作是整合特定套件, 滿足相依性。 參數可以是 ebuilds、 tbz2s、 classes或 dependencies。 注意當安裝 tbz2 時需使用 --usepkg 選項。 加入 world 元件, 以便更新。
- clean (-c)
- 移除 system 套件將不會影響系統功能。 參數可以是 ebuilds、 classes、 或 dependencies。 如 emerge clean binutils 會清除舊版 binutils; emerge clean net-www/mozilla-0.9.9-r2 清除特定版本的 Mozilla。 這經常是安全的, 注意 clean 不會移除 unslotted 套件。
- depclean
- 決定安裝的套件沒有不明的存在原因。 emerge 產生欲安裝的套件清單,藉由檢查 system 套件清單與 world 檔。 比較已安裝的清單; 列出相異處不需要的套件與建議不合併的。 警告: 移除一些套件會造成相連結的套件失效與檔案遺失, 重新合併可解決此問題。 注意 USE flags 會大幅度影響 depclean 輸出。
- help (-h)
- 顯示 emerge 的協助資訊, 加入上述的參數可得到該主題詳盡的說明。內部 emerge 說明文件較 man page 常更新; 若 man page 幫不上忙可查看。
- info
- 針對發展員提供的除錯資訊。 交付問題報告時請包含這份資訊, 詳述的輸出可加入 --verbose。
- inject (-i)
- inject 會在套件加入存根,使 Portage 認為已安裝。可靈活使用於少數硬體的 XFree86 版本執行檔或自己的套件, 必須 指定分類與套件特殊版本以便注入。例如 emerge inject sys-kernel/gentoo-sources-2.4.19。
- prune (-P)
- 警告: 這個動作會移除重要的套件! 移除所有套件,除了新版的。若套件有多個 SLOT,會在每個 SLOT 留下最新版。不檢查相依性,可能會一併移除系統檔案。 用 clean 代替,除非很清楚過程。 參數可以是 ebuilds、 classes或 dependencies。 -- 見上述 clean 。
- regen
- 使 portage 檢查與更新 portage 樹中的 ebuild 相依快取。快取用於加速搜尋與建立相依樹,此指令不適用於 rsync 用戶 ,當 rsync 用伺服端快取來更新。若不知道 'rsync 用戶' 與其他用戶的不同,就是 Rsync 用戶可執行 emerge sync 來重新產生快取。
- search (-s)
- 在 Portage 數中搜尋符合該字串的套件。可以是正規表示式。 如 emerge search "^kde" 搜尋為首的 "kde"; emerge search "gcc$" 搜尋套件結尾是 "gcc"; emerge search "office" 搜尋任何套件包含字串 "office" 如果想一併搜尋套件敘述,使用 --searchdesc。
- sync
- 以 rsync.gentoo.org 的映射站台同步更新 portage 目錄樹。 注意之前所作變更會消除。 除了特殊情況用 rsync 來更新。 見 make.conf(5)中 PORTDIR_OVERLAY 避免刪除。
- unmerge (-C)
- 警告: 這個動作會移除重要套件! 移除所有符合的套件,不檢查相依性,所以可能移除系統所需檔案。 參數為 ebuilds、classes或 dependencies -- 見上述 clean .
選項(OPTIONS)
- --ask (-a)
- 在合併前,顯示哪個 ebuilds 與 tbz2s 將被安裝,與 --pretend 同樣的格式; 詢問是否繼續合併或離開。執行重複命令,用 --ask 會比--pretend更有效率,不需 --pretend,相依性只會計算一次。
- --buildpkg (-b)
- 建立執行檔,適用於多系統 (建立一次, 到處可 emerge tbz2s)。套件建立於 ${PKGDIR}/All directory。另一種已合併套件用 quickpkg 產生。
- --buildpkgonly (-B)
- 建立執行檔 packages 而不合併,需要先合併於系統。
- --changelog (-l)
- 與 --pretend 並用,顯示所有將更新套件的變更紀錄。
- --columns
- 與 --pretend 並用,新舊版本訊息顯示在一列以供剪貼。
- --debug (-d)
- 告訴 emerge 執行 emerge 內建除錯。在此模式中 bash 環境將以 -x 執行以產生除錯資訊。 --debug 適於搜尋 bash 語法錯誤。
- --deep (-D)
- 與 --update 並用,強迫 emerge 考慮整個套件相依樹,不只立即檢查套件相依性。如函式庫更新的快取不直接列在套件相依性中。
- --emptytree (-e)
- 虛擬地調整已安裝的套件樹為僅包含 glibc; 適合與 --pretend 並用. 這允許發展員取得套件相依樹的完整綜覽,也允許以全新的函式庫重建套件相依樹。
- --fetchonly (-f)
- 不建立套件, 只擷取所有套件檔 (主套件與所有相依套件)。
- --noconfmem
- 使 portage 忽略合併紀錄指示的組態檔,取代已合併的 CONFIG_PROTECT 目錄。 Portage 將合併這些檔案一次,避免用戶處理同組態多次。
- --nodeps (-O)
- 組合特定套件而非任意相依套件,注意當相依性不足時可能會失敗。
- --noreplace (-n)
- 略過命令列中已安裝的套件。若無此選項,任何命令列中的套件 ebuilds 或 deps *將會* 使 Portage 重新合併套件,即使已安裝。注意 Portage 預設不重新合併相依套件。
- --nospinner
- 停用連線過程的 spinner。當連線裝置為 TTY 時 spinner 會啟用,此選項可取消。
- --oneshot
- 一般合併,但不加入新套件到 world profile 作更新。
- --onlydeps (-o)
- 只合併 (或假合併) 指定套件的相依,不含指定套件本身。
- --pretend (-p)
- 取代真實的合併,簡單的顯示 *將要* 安裝的,若不使用 --pretend。 安裝不熟悉的套件前,強烈建議使用 --pretend。輸出訊息 N = new 新增、 U = upgrading 升級、 R = replacing 取代、 F = fetch restricted 限制擷取、 B = blocked by an already installed package 被已安裝的套件阻斷。
- --quiet (-q)
- 結果可能改變,但一般輸出會減少或出現在 portage 顯示區。
- --resume
- 繼續前次合併操作。注意此操作只會在錯誤時終止,若 portage 沒有程序可作,portage 將離開並產生成功訊息。
- --searchdesc (-S)
- 搜尋名稱與敘述皆符合關鍵字串的套件。注意 敘述也適用於正規表示。
- --skipfirst
- 此選項僅能與 --resume 同時使用。 將移除接續作業中的第一個套件,以使接續完全,合併可能接著無法更正與不合理的錯誤。這選項應被用在當省略該套件也不影響相依性時才使用。
- --tree(-t)
- 他會告訴你每個要安裝的套件為誰而戰、為何而戰!(感謝 Hydonsingore提醒 來源:http://forums.gentoo.org.tw/viewtopic.php?t=43664)
- --update (-u)
- 更新套件到最近的版本。注意 --update 功能尚未完全, 尚無法自動更新 world 中的相依套件,除非相依套件在 world 檔中。
- --upgradeonly (-U)
- 更新套件,但不更新會導致版本號碼降低的套件。 SLOT 為基本考量。
- --usepkg (-k)
- 要 emerge 使用預編的套件 (來自 $PKGDIR) ,若有可免去編譯。也可從光碟(CD2)安裝: export PKGDIR=/mnt/cdrom(/packages) ,配合 -p 可預覽。
- --usepkgonly (-K)
- 如 --usepkg,只使用 PKGDIR 而不下載。
- --verbose (-v)
- 告訴 emerge 以詳述模式執行。目前此選項可使 emerge 印出 GNU 錯誤訊息,並顯示假執行所用的 USE flags。
- --version (-V)
- 顯示 emerge 版本。不能與其他選項共用,名稱與格式為規範。
環境選項(ENVIRONMENT OPTIONS)
- ROOT = [path]
- 指定 ROOT 檔案系統,用以合併套件或 ebuilds,預設是 /。
輸出(OUTPUT)
當使用 emerge 與 pretend/verbose 選項時,第一次的輸出會有點難以閱讀。 本段用以解釋縮寫資訊代表的意義:
- [blocks B ] app-text/dos2unix (from pkg app-text/hd2u-0.8.0)
- Dos2unix 封鎖 hd2u 的合併。兩個套件互用彼此的檔案稱為阻斷, 可能會毀損系統。無論如何,因為提供相同功能,套件不必同時合併。
- [ebuild N ] app-games/qstat-25c
- Qstat 是新套件,作第一次合併。
- [ebuild R ] sys-apps/sed-4.0.5
- Sed 4.0.5 已經合併,但若你執行命令列,portage 將重合併特定套件 (例子中的 sed)。
- [ebuild F ] media-video/realplayer-8-r6
- realplayer 套件需要手動下載原始碼,若合併時找不到某些檔,portage 將停住,提示如何下載所需檔案。
- [ebuild U ] net-fs/samba-2.2.8_pre1 [2.2.7a]
- Samba 2.2.7a 已經合併可更新到版本 2.2.8_pre1。
- [ebuild UD] media-libs/libgd-1.8.4 [2.0.11]
- Libgd 2.0.11 已經合併,若執行命令,portage 將下載到版本 1.8.4。
這可能是新版的套件被封鎖,因為毀損或會造成系統危險而尚未修正。
另一個可能原因是若合併該套件需要一個舊版的套件。(此例中 libgd 2.x 不相容於 libgd 1.x,這意味 libgd 1.x 編譯成的套件不相容於 2.x,合併前須先下載 libgd )。 - [ebuild U-] x11-base/xfree-4.3.0 [4.2.99.902]
- SLOT information about Xfree 缺乏 SLOT 資訊。 當先前合併的版本被注入 (見 inject) 或過期很久 (尚未有 SLOT )。 可隨意更新 Xfree 。
- [ebuild U ] net-analyzer/nmap-3.15_beta2 [3.15_beta1] -gtk -gnome
- 合併 nmap 時,USE 狀態變數 為 -gtk 與 -gonme。 nmap 可使用 USE 變數 gtk 與 gnome,但目前設定為停用,所以 nmap 合併時不支援。
*備註: USE 只在使用 --pretend 與 --verbose 時會顯示。
備註(NOTES)
建議總是在套件安裝或升級前嘗試使用 --pretend。這會讓你看到將有何影響,且顯示需修正的封鎖套件。對於 system 與 world 類別都是。若 portage 樹特別活躍,可升級多個套件。
使用典型的 --update, 忽略那些已安裝的套件, 而升級其他的。
當套件未安裝相依套件將不會加入 world 檔,如果想在 world 中被更新,需明確的列在 emerge 參數中。
USE 環境變數可於命令列指定取代設定檔,但不會儲存。 USE="-x -gnome" emerge mc 可合併 mc 而避免安裝不要的相依套件。
若 emerge --update system 或 emerge --update world有錯誤訊息,可能是 ebuild 使用了新功能是目前 emerge 版本沒有的,可用 emerge --update portage 更新 portage。
被封鎖的套件(MASKED PACKAGES)
備註:使用發展中套件時請注意,濫用封鎖套件會耗盡發展時間,請確認你能處理可能接踵而來的問題。
portage 中的封鎖遮罩提供三個主要功能: 允許套件被用於機器上的週期、在套件將失敗時停止使用、遮罩已存在而毀損的套件或可能造成安全風險的套件。 遮罩可用兩種方式完成: package.mask 與 KEYWORDS,以下列出如何解除封鎖, 也注意若合併 ebuild,會忽略各種形式的封鎖且 emerge 將合併套件。
- package.mask
- package.mask 主要阻斷會造成問題的套件或已知異於系統者。存在於 ${PORTDIR}/profiles,套件可藉由加入 (#) 以解除封鎖。
- KEYWORDS
- KEYWORDS 用於測試中的套件。每個套件都有特定架構的 keywords 使 portage 知道哪個系統相容此套件。套件已被編譯,但未證明穩定者,架構名稱前加入 (~)。
emerge 檢查 ACCEPT_KEYWORDS 環境變數, 允許或不許合併中的套件合併被 KEYWORDS 封鎖的套件. 通知 emerge 應建立這些'測試'版本可以設定 ACCEPT_KEYWORDS 到 "~arch",而 arch 屬於: x86 ppc sparc mips alpha arm hppa。
警告: 不要 設定此變數到所用架構外的值。
錯誤回報(REPORTING BUGS)
請透過下列網站回報錯誤:
http://bugs.gentoo.org/
請加入emerge info 產生的輸出.
參見(SEE ALSO)
emerge --help, make.conf
有許多協助程式在 /usr/lib/portage/bin。
app-admin/gentoolkit 套件包含有用的指令稿如 qpkg (套件查詢工具)。
檔案(FILES)
- /var/cache/edb/world
- 包含使用者自訂套件清單。可以安全地編輯這個檔案,加入 world 類別中的套件更新並考慮移除不要的。
- /etc/make.conf
- 包含建立所用的變數,取代make.globals中的。 應該編輯這個檔而非下列檔案。
- /etc/dispatch-conf.conf
- 包含設定用以處理自動更新/備份套件組態。
- /etc/make.profile/make.defaults
- 包含 profile-specific 變數供以建立行程。 不要編輯此檔。
- /etc/make.profile/use.defaults
- 包含套件清單。若已安裝,個別使用 use flag 。不要編輯此檔。
- /usr/portage/profiles/use.desc
- 包含主清單 USE flags 與功能敘述。 不要編輯此檔。
- /etc/make.profile/virtuals
- 包含預設套件清單用以解析虛擬相依性。不要編輯此檔。
- /var/cache/edb/virtuals
- 包含套件清單用以解析虛擬相依套件,虛擬配對若失敗可以重排對應的虛擬項目。 第一個虛擬套件清單是用以符合虛擬的項目.
- /etc/make.profile/package
- 包含BASE系統的套件清單。system 與 world 類別查閱此檔。 不要編輯此檔。
- /etc/make.globals
- 包含建立過程中的預設變數。不要編輯此檔。
作者(AUTHORS)
Daniel Robbins <drobbins@gentoo.org (mailto:drobbins@gentoo.org)>
Geert Bevin <gbevin@gentoo.org (mailto:gbevin@gentoo.org)>
Achim Gottinger <achim@gentoo.org (mailto:achim@gentoo.org)>
Nicholas Jones <carpaski@gentoo.org (mailto:carpaski@gentoo.org)>
Phil Bordelon <sunflare@gentoo.org (mailto:sunflare@gentoo.org)>
Mike Frysinger <vapier@gentoo.org (mailto:vapier@gentoo.org)>
CVS HEADER
$Id: emerge.1,v 1.48 2004/02/09 16:38:36 vapier Exp $
- Translator Note(譯註):
譯自 http://gentoo-wiki.com/MAN_emerge
Web介面的工具 http://remerge.sourceforge.net
- - - - - - - - - - - - - - - - - - - -
lusng(at)hotmail.com