分类: LINUX
2008-08-16 22:07:55
有關Gentoo portage的心得
1.當您告訴 Portage 要安裝一個套件,當然需要下載原始碼(或是已編譯套件)。他將會先檢查 /usr/portage/distfiles (原始碼)是否有已存在的檔案 或是 /usr/portage/packages/All (已編譯的套件)可用。如果沒有,它將會下載所有的相關檔案然後放入相關目錄。
2.
Code Listing 30: 假裝更新整個系統
# emerge --pretend --update world
(為了方便閱讀,移除了一些部份)
[ebuild U ] net-misc/wget-1.9-r1 [1.9]
[ebuild UD] media-video/dvdauthor-0.5.0 [0.5.3]
[ebuild U ] net-analyzer/ethereal-0.9.16 [0.9.14]
在 "ebuild" 的旁邊您將會看到一個字母(或是一組字母)這將給您關於這個套件的資訊:
* B(阻擋,blocks)這個套件將阻擋您繼續套件的安裝
* N(新的,new)這個套件是新的,並且是第一次安裝
* R(更換,replace)這個套件不是新的,但是需要重新安裝
* F(下載,fetch)這個套件需要您手動下載原始碼(使用執照相關問題)
* U(更新,update)這個套件已經存在您的系統上但需要更新
* UD(降低版本,downgrade)這個套件已經在您的系統上存在了但是需要降低版本
* U-(slot 警告)這個套件已經安裝到您的系統上,但是不能和其他版本共存, 所以將會將您的套件升級然後移除舊的版本。
3.
Gentoo 將他的套件放在兩個可能的地方叫做 ARCH 和 ~ARCH。這個將依照您所用的架構而改變換句話說 x86 架構的系統將會使用 x86 和 ~x86, ppc 架構的使用者將會友 ppc 和 ~ppc 等以此類推。
~ARCH 代表著這部份的套件正在測試中,還沒接受過許多測試,所以不能放到 ARCH。ARCH 的套件的問題通常比較少。
您的系統將會使用 ARCH 為預設。如果您想要嘗試並且不擔心損毀的套件,知道如何到 bugs.gentoo.org 那您可以選擇使用 ~ARCH 的套件。要將您的系統 "移到" 一個 ~ARCH 的系統,將 /etc/make.conf 裡面的 ACCEPT_KEYWORDS 變數更改為 ~ARCH(再一次的:x86 系統:~x86,等以此類推。)。
4.鎖住的套件(Masked)
當您想要安裝一個套件,您或許會看到以下訊息:
Code Listing 33: 關於封鎖註的套件訊息
Calculating dependencies
!!! all ebuilds that could satisfy
一個套件會被封鎖註有兩個原因:
1. 您如果正在使用 ARCH,而這個套件是 ~ARCH
2. 這個套件是被刻意鎖住的
如果是第一個原因,而您 非常 想要安裝它,您可以把他加到 /etc/portage/package.keywords 檔案中暫時的接受 ~ARCH 套件:
Code Listing 34: 暫時性的接受 ~ARCH 套件
(如果 /etc/portage 目錄不存在的話建立他)
# mkdir /etc/portage
# echo "app-office/gnumeric ~x86" >> /etc/portage/package.keywords
# emerge gnumeric
一個套件會被刻意鎖住將會被放在 /usr/portage/profiles/protage.mask。如果您查看這個檔案,您將會看到這個套件會被刻意鎖住的原因(常常是加入為註 解)。如果您不管其他原因要安裝這個套件(有可能會造成系統極度不穩),您將需要建立一個 /etc/portage/package.unmask 檔案然後按照 /usr/portage/profiles/portage.mask 的格式放入您想要安裝的套件。
Code Listing 35: 解除刻意鎖住的程式
(如果 /etc/portage 目錄不存在的話建立他)
# mkdir /etc/portage
# echo "=app-office/gnumeric-1.2.12" >> /etc/portage/package.unmask
請 不要 更改 /usr/portage/profiles/package.mask 檔案,這個檔案會在下次更新 Portage tree 時被復原。如果您需要封鎖一個套件,建立 /etc/portage/package.mask 然後按照以上類似的格式填入。
5.為了刻意鎖住一個套件,建立 /etc/portage/package.mask 然後把套件列在裡面(使用如同上面提到的格式)。
Code Listing 36: 刻意鎖住一個套件
(如果 /etc/portage 目錄不存在的話建立他)
# mkdir /etc/portage
# echo ">app-office/gnumeric-1.2.10" >> /etc/portage/package.mask
原文地址