Emerge


From wiki.gentoo.org.tw


目錄 [顯示隱藏]

​1 名稱(NAME)​

​2 綱要(SYNOPSIS)​

​3 敘述(DESCRIPTION)​

​4 EBUILDS, TBZ2S, CLASSES AND DEPENDENCIES​

​5 動作(ACTION)​

​6 選項(OPTIONS)​

​7 環境選項(ENVIRONMENT OPTIONS)​

​8 輸出(OUTPUT)​

​9 備註(NOTES)​

​10 被封鎖的套件(MASKED PACKAGES)​

​11 錯誤回報(REPORTING BUGS)​

​12 參見(SEE ALSO)​

​13 檔案(FILES)​

​14 作者(AUTHORS)​

​15 CVS HEADER​

[​​編輯​​]

名稱(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&quot,而 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 包含建立過程中的預設變數。不要編輯此檔。 [​​編輯​​]