Gentoo下portage包的管理

這篇主要是講如何使用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


1.安裝一個軟體
代碼: 選擇全部
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







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章