Gentoo Linux 2005.0 x86 手冊[25]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

1.d. 當 Portage 在編譯時...

關於 SLOT,虛擬,分支,架構,和 Profile

如同我們前面說的,Portage 相當有威力,並且支援許多其他軟體管理工具缺乏的功能。為了了解這些功能,我們會從各角度解釋 Portage 而不會太深入。

借著 Portage 但依套件的不同版本可以共同存在系統上。而其他發行版通常是以套件的版本來命名(像 freetypefreetype2),Portage 使用一種叫做 SLOT 的技術。ebuild 使用它的版本來宣告特定的 SLOT。有著不同 SLOT 的套件可以共存在同一個系統上。例如說,freetype 有著包含 SLOT="1"SLOT="2" 的 ebuild。

也有些套件提供相同的功能但透過不同方法實做。例如說,metalogdsysklogdsyslog-ng 都是系統紀錄器。依賴 "系統紀錄器" 的軟體不能只相依一種紀錄軟體,像是 metalogd,因為其他的紀錄器也是一個不錯的選擇。Portage 允許 virtuals:每一種系統紀錄器提供 virtual/syslog 讓軟體可以相依 virtual/syslog

Portage 樹中的軟體可以存放在不同的分支中。預設系統只接受 Gentoo 視為穩定的套件。大部份新的軟體剛提交時,先加到測試中的分支去,代表在他標示為穩定前需要更多的測試。雖然你可以在 Portage 樹中看到這個軟體的 ebuild,在他標示為穩定分支前 Portage 不會去做更新。

一些軟體只能在特定的硬體架構上使用。可能是在其他架構上不能工作,需要更多測試,或者是提交這個軟體到 Portage 的發展者不能確認這個套件能不能在不同平台工作。

Gentoo 的安裝包括特定的 profile,包含了在其他資訊之外,系統正常工作所需的套件列表。

阻擋的套件

原始碼 18: Portage 警告阻擋套件 (加上 --pretend)

[blocks B     ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)

原始碼 19: Portage 警告阻擋套件 (沒有 --pretend)

!!! Error: the mail-mta/postfix package conflicts with another package.
!!!        both can't be installed on the same system together.
!!!        Please use 'emerge --pretend' to determine blockers. 

Ebuild 包含特殊的區域告訴 Portage 關於他的相依性。相依性關係有兩種:宣告在 DEPEND 以及執行期相依,宣告在 RDEPEND。當其中一個相依關係中標記一個套件或虛擬 相容,他就成為阻擋套件。

要修正阻擋,你可以選擇不要安裝這個套件,或是先移除衝突的套件。在上面的範例中,你可以選擇不要安裝 postfix 或是先移除 ssmtp

也有可能是還沒安裝的兩個套件互相阻擋。在這種很少見的情況下,你應該先找出為什麼需要安裝這兩個套件。大部份的情況裝一個就足夠了。如果不是的話,請送一個錯誤到 Gentoo 錯誤追蹤系統

封鎖的套件

原始碼 20: Portage 警告封鎖的套件

!!! all ebuilds that could satisfy "bootsplash" have been masked. 

原始碼 21: Portage 警告封鎖的套件 - 理由

!!! possible candidates are:

- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- media-video/ati-gatos-4.3.0 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)

當你想要安裝在你系統上還不能使用的套件時,你會得到封鎖的錯誤。你應該嘗試安裝其他在你系統上可用的軟體,或是等這個軟體可以用時再安裝。這裡總是有封鎖的理由:

  • ~arch keyword 代表這個軟體還沒經過足夠的測試,而不能放到穩定分支。等 幾天或幾個禮拜再試試看。
  • -arch keyword-* keyword 代表這個軟體在你的系統架構下不能工 作。如果你確定這個套件的確可以動作,送出一個 bug 到我們的 bugzilla 網站。
  • missing keyword 代表這個程式還沒在你的系統架構下測試過。要求架構移植 團隊測試或是你幫他們測試,然後回報你的結果到我們的 bugzilla 網站。
  • package.mask 代表這個套件已經被發現毀壞,不穩定或是更糟的情況。而且被 刻意標記成不可使用。
  • profile 代表這個套件被發現不適合你的 profile。安裝這個套件可能毀了你 的系統,或是他就是不相容你用的 profile。

相依性遺失

原始碼 22: Portage 警告相依性遺失

emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".

!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem. 

你輸入要安裝的套件相依在你的系統上不可取得的套件。請檢查 bugzilla 看看這件事被發現了沒,如果沒有的話,請回報他。除非你使用混合的分支這不應該發生,因此這是一個 bug。

模稜兩可的的 Ebuild 名稱

原始碼 23: Portage 警告模稜兩可的的 Ebuild 名稱

!!! The short ebuild name "aterm" is ambiguous.  Please specify
!!! one of the following fully-qualified ebuild names instead:

    dev-libs/aterm
    x11-terms/aterm

你想要安裝的套件他的名稱符合超過一個套件。你要同時提供他的類別名稱。Portage 會告訴你可能符合的讓你選擇。

循環相依

原始碼 24: Portage 警告循環相依

!!! Error: circular dependencies: 

ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2 

兩個(或更多)你想要安裝的套件互相依賴,因此不能被安裝。這通常是 Portage 樹中的 bug。請等一下重新作 sync 然後再試一次。你也可以檢查 bugzilla 看看這件事被發現了沒,如果沒有的話,請回報他。

下載失敗

原始碼 25: Portage 警告下載失敗

!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
(...)
!!! Some fetch errors were encountered.  Please see above for details.

Portage 不能下載指定程式的原始碼而會繼續安裝其他的程式(如果可用的話)。這個錯誤可能因為鏡像站還沒正確同步,或是 ebuild 指向錯誤的位置。原始碼存放的伺服器也可能因為一些理由關閉了。

一小時候在看看這個問題是否還存在。

系統 Profile 保護

原始碼 26: Portage warning about profile-protected package

!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.

本文关键:Gentoo Linux 2005.0 x86 手冊
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top