2007年1月18日 星期四

Hi, Portage

[lang_zh]
一直很想玩玩 Gentoo 的 Portage,所以期末考爆炸期間,就把 windows 砍掉試灌 Gentoo,等到一切 ok,再把 Debian 灌成 windows,反正還有一大堆 Debian 可以玩。

結果前天吧,把 ACCEPT_KEYWORDS 改成 ~x86(本來是 x86),結果今天早上 update system 時 expat 更新到 2.0,而且他沒留 1.0 的 library,然後 expat 又是一大堆人要用到的東西,結果整個系統就炸了 Orz

還有一點很倒楣,一開始我裝了我目前最喜歡的 wm: e17,在 portage tree 裡面是 x11-wm/e。裝好之後一切都很棒,除了 CVS HEAD 多少有雷 ... XD 然後呢,今天早上 rsync portage tree 之後,x11-wm/e 就不見了! 一開始還懷疑是我的問題,結果到幾個 mirror 站看都是一樣,而且其他像 x11-libs/ecore, x11-libs/evas 等大概有十個吧,也不見了好幾個(不確定是不是全不見,因為我全沒檢查)。

所以既然系統這麼髒,就重灌吧。第一次灌(好像也不是第一次了..),就當成是 tune USE 參數吧,所以就重裝了。正在 make world 時就來寫一寫東西吧,先講從 Debian 換過來遇到的第一個問題。

在 Gentoo 裡面,因為 dependancy 是「動態」的(例如改了某個 USE flag),所以他很難做到像 Debian 那樣,直接移除所有相依的 package,換句話說,那些 package 很有可能就這樣炸掉了。

所以如果系統上有這些可能會炸掉的 package,看是要重編或是直接移除。但是那些是可能炸掉的 pacakge 就要間接得知了。Gentoo Portage 介紹裡面是建議這麼做:


# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild


Package compile 時用的 USE flag 可能跟目前的不一樣,所以第一行就是用最新的 USE 把改過的那些重編,原因是 USE 改變可能導致 dependancy 的異動。

接下來的 depclean 是把那些不應該存在的 package 拿掉(根據 manpage,應該只是把被用到的 package 跟用到它的全列出來,然後看看實際上裝的有那一些不在這個列表裡面)。

最後剩下的可能還是有問題,例如我遇到的 expat 的例子,USE 沒變(就算變了還是有可能出問題),但是 expat 升級導致用他的人也要重編。這時候就得跑 revdep-rebuild,這其實是還滿噁心的一個步驟。參考 gentoolkit,首先,他會去 scan 所有 ebuild,看看那些 library, elf 執行檔是不是用了不存在的 library,如果是的話,就得把這個 package 更新到比較新的版本(或只是重編)。

很累人地做了這三個步驟,package 間的 dependancy 應該就修好了吧,好累,不想驗證 XD

現在正在編 gcc,不知道編到 stage 幾了...
[/lang_zh]
[lang_en]
I'm too lazy to translate this long post. Sorry about that.
[/lang_en]

2 則留言:

fairfax dui lawyer 提到...

This is really vital and helpful details that I and other readers found to be extremely helpful. Appreciate you for constantly offering readers with insightful and helpful content; your blog is going great, congrats! In between posts, you can check out this

Williamdonald 提到...

Focus on offering unique and engaging content that appeals to this demographic, such as contemporary films, immersive performances, or interactive events that blend theatre with modern technology.
NBA Betting Online