這篇主要是講如何使用Gentoo的portage system
先講什麼是system什麼是world
一般來講,你把stage3 tar開的東西就是system。
後來裝的軟體全部都是world。
想看world裡面有什麼可以去看/var/lib/portage/world
ode Listing 2.6: Running emerge --info
# emerge --info
Code Listing 2.7: Rebuilding your entire system
# emerge --update --deep --newuse world
Code Listing 2.8: Removing obsoleted packages
# emerge -p --depclean
Code Listing 2.9: Running revdep-rebuild
# revdep-rebuild
emerge mutt
2.裝之前先看一下他會裝哪些東西
emerge mutt -pv
[ebuild N ] app-misc/mime-types-7 7 kB
[ebuild N ] net-mail/mailbase-1 USE=”pam” 0 kB
[ebuild N ] mail-client/mutt-1.5.16 USE=”gdbm nls -gnutls”
或許這裡沒有顏色,但是實際是會有顏色的。
暗綠:不會被depend到world裡面。(mailbase,mime-type)
亮綠:他會被depend到world裡面。(mutt)
USE flag的顏色
紅色:enable
藍色:前面會帶一個”-”,表示disable。
綠色:enable但是還沒有邊進去的use flag
黃色:上一個版本沒有,這一個版本新加入的 use flag
括號:在你的平台上禁用的use flag
3.如果你注意到上面有USE=”xxx”,是的,你可以修改他。
你可以直接改/etc/make.conf,來改變整個世界。
USE=”xxx”
或者是對單一個ebuild作修改
/etc/portage/package.use
mail-client/mutt gnutls
4.刪除一個軟體
emerge -C mutt
5.把mutt depend到的mailbase和mime-type砍掉。
emerge --depclean
6.depclean之前最好先看一下,避免誤砍。
emerge --depclean -pv
7.升級軟體
emerge -uDN mutt
D和N可以不加
D表示去檢查他相依的ebuild,N表示如果USE flag有更動也要更新。
8.升級整個世界
emerge -uDN world
建議升完世界可以把多餘的東西砍掉。
用emerge --depclean
9.只升級系統
emerge -uDN system
相對於FreeBSD的的make {install,build} world
注意,gentoo 的world包含system
10.尋找一個ebuild
emerge -s mutt
類似FreeBSD的make search name=mutt
但是這個會有點慢,你可以用index過的指令
比方說qsearch mutt or eix mutt
11.看看ebuild的相依性
你可以打開檔案直接看
或者用
qdepends mutt
12.尋找系統裡面有安裝的ebuild
qlist -I gcc
13.檢查有沒有libaray遺失
sudo revdep-rebuild
這個指令會檢查系統內執行檔所連結到的lib是不是存在
如果不存在他會幫你修復
14.打包binary pkg
qpkg wine
他會把wine打包起來,讓你可以直接用emerge -k wine去重裝。
這個檔案必須放在/usr/portage/packages下面。
注意,如果pkg使用的flag不同,他會重編,不會用你給他的pkg。
你用emerge wine -pv你會看到entry開頭寫binary,否則他會寫ebuild。
15.正常的更新程序
建議是下面這樣子
emerge -uDN world
emerge --depclean
env-update
revdep-rebuild
16.更新portage tree
emerge --sync
後面加-q,他才不會那麼吵。
用vmware裝的話,frame buffer I/O很慢,一定要加-q。
17.檢查系統設定檔
etc-update
這個功能類似FreeBSD的mergemaster
18.重編整個world
emerge -e world
常常是因為你換CFLAG,想要騷包一下重編。
其十大部份情況不需要,如果要,請下這指令。
19.如果上面指令編到一半失敗了
你把失敗原因解決之後,總不能在emerge -e world一次。
因為這指令會重新build全部。
所以你只要
emerge --resume
他就會重上次失敗的地方開始。
20.使用binary pkg
編的時候加一個-b,比方說emerge -b wine
編好就會有一個pkg可以用,甚至可以給別人用。
也可以在/etc/make.conf加 FEATURES=”buildpkg”
這樣預設就是會編binary pkg出來。
目前linux0在做這樣的事情。
而其他台透過NFS去裝他的binary就好了。
而且其他台裝pkg的方法是
emerge -k wine
21.安裝被keywords mark起來的ebuild
把ebuild名稱加到/etc/portage/package.keywords就可以了。
被keywords mark起來表示”testing”
所以你可以在/etc/make.conf加ACCEPT_KEYWORDS=”~amd64″
這樣就可以把整個世界變成testing。
22.安裝被系統mask起來的ebuld
把ebuild名稱加到/etc/portage/package.unmask
這個步驟通常有危險,因為會被系統unmask表示他真的有問題。
23.重裝軟體
如果你已經裝過該軟體,你只是想把他重編一次。
但是他原來不在world裡面,你如果下emerge librtorrent
這個lib就會被加到world裡面,不再是因為rtorrent而depend到的。
這時後下
emerge -1 librtorrent
這樣他會重編,而不會加到world。
24.裝特定版本的軟體
有一個軟體如果你不要最新版,你可以指定版本。
emerge =www-servers/apache-2.2.8
很多軟體都可以以不同slot存在。
25.如果你不想裝最新版,還有一個方法。
在/etc/portage/package.mask裡面寫
>=www-servers/apache-2.2.8