emerge和ebuild是Gentoo的包管理核心,其中emerge是ebuild的更高层次的应用。
多数情况下,一般是不需要自己打patch,可是有时候,当前版本系统确实有bug,或者想在本地版本中,给软件增加一些小功能,在这样的情况下,是不得不自己来处理一下了。在Gentoo中,这称之为:[url=http://www.gentoo-wiki.info/Local_Portage_Overlay]Local Portage Overlay [/url]
[list=1]
[*]在/etc/make.conf增加[quote]PORTDIR_OVERLAY="/usr/local/portage"[/quote]
[*]在/usr/local/portage创建跟原来软件相同的分类和名字,比如[quote]mkdir -p /usr/local/portage/x11-drivers/nvidia-drivers[/quote]
[*]获取ebuild文件,比如从/usr/portage中获取
[*]修改ebuild文件,参考[url=http://devmanual.gentoo.org/ebuild-writing/index.html]Ebuild Writing[/url]
[*]执行digest[quote]ebuild nvidia-drivers-100.14.11.ebuild digest[/quote]
[*]emerge nvidia-drivers,或者指定特定版本:emerge =nvidia-drivers-100.14.11
[/list]
以上是自己定制emerge的基本步骤。我碰到的其他问题,在此也简单罗列一下:
[list]
[*]关于自动打patch的问题,比如打算在src_prepare过程中执行epatch,那么需要EAPI=2
[*]关于patch文件的生成,可以用diff -u oldfile newfile来生成,很方便
[*][2010-7-18 updated]被关键字屏蔽(masked)的处理,在/etc/portage/package.keywords增加相应的package就好了,比如[quote]echo "dev-db/mongodb" >>/etc/portage/package.keywords[/quote]
[/list]
多数情况下,一般是不需要自己打patch,可是有时候,当前版本系统确实有bug,或者想在本地版本中,给软件增加一些小功能,在这样的情况下,是不得不自己来处理一下了。在Gentoo中,这称之为:[url=http://www.gentoo-wiki.info/Local_Portage_Overlay]Local Portage Overlay [/url]
[list=1]
[*]在/etc/make.conf增加[quote]PORTDIR_OVERLAY="/usr/local/portage"[/quote]
[*]在/usr/local/portage创建跟原来软件相同的分类和名字,比如[quote]mkdir -p /usr/local/portage/x11-drivers/nvidia-drivers[/quote]
[*]获取ebuild文件,比如从/usr/portage中获取
[*]修改ebuild文件,参考[url=http://devmanual.gentoo.org/ebuild-writing/index.html]Ebuild Writing[/url]
[*]执行digest[quote]ebuild nvidia-drivers-100.14.11.ebuild digest[/quote]
[*]emerge nvidia-drivers,或者指定特定版本:emerge =nvidia-drivers-100.14.11
[/list]
以上是自己定制emerge的基本步骤。我碰到的其他问题,在此也简单罗列一下:
[list]
[*]关于自动打patch的问题,比如打算在src_prepare过程中执行epatch,那么需要EAPI=2
[*]关于patch文件的生成,可以用diff -u oldfile newfile来生成,很方便
[*][2010-7-18 updated]被关键字屏蔽(masked)的处理,在/etc/portage/package.keywords增加相应的package就好了,比如[quote]echo "dev-db/mongodb" >>/etc/portage/package.keywords[/quote]
[/list]