Gentoo portage-2.2 preserve-libs

July 31st, 2008

當Gentoo Linux在做upgrade的時候,常常一個lib的升級會讓原本可以work的程式壞掉。
比方說:
某程式需要libaac-0.1,當libaac-0.2升級的時候,他會把libaac-0.1砍掉,換成libaac-0.2。這時候如果有程式去depend到libaac-0.1的時候,會顯示share lib not found。
FreeBSD的作法是讓他去depend某一個程式的版本號。比方說編的時候是depend到libaac-0.1,那libaac-0.1就不會被砍掉。不過這樣的作法有點肥,而且有時候不是depend到版本號的時候還是會噴掉。不清楚FreeBSD怎麼檢查和避免這樣的狀況。

Gentoo Linux之前的作法是跑revdep-rebiuld,去檢查所有lib的相依性。如果發現有程式需要的share lib不見了,他會把該程式rebuild。不過這樣的作法前提就是會先壞掉,再修復。

新的portage作法是他會自己detect libs被其他程式使用,然後把該套件砍掉之後,被使用的libs會被保存下來。並提醒你要rebuild,在下完emerge @preserved-rebuild之後,會把程式link到新的lib,並把舊的砍掉。而且中間過程不會有噴掉的時候。

這真的是….太聰明了。

  • Uncategorized
  • Comments(0)

Trackback URI | Comments RSS

Leave a Reply