gentoo ebuild FUQ :-)
发表于:2007-07-04来源:作者:点击数:
标签:
这个FUQ=Gentoo Frequently Unanswered Questions(FUQ) 主要是受到这个页面的启发 http://gentoo.zhware.net/fuq.html 这里说得很杂,我只结合自己的使用说说portage系统的一些技巧。 0. 定位ebuild 基础知识,比如 emerge -s gcal * app-misc/gcal Latest v
这个FUQ=Gentoo Frequently Unanswered Questions(FUQ)
主要是受到这个页面的启发
http://gentoo.zhware.net/fuq.html
这里说得很杂,我只结合自己的使用说说portage系统的一些技巧。
0. 定位ebuild
基础知识,比如
$emerge -s gcal
* app-misc/gcal
Latest version available: 3.01
Latest version installed: [ Not Installed ]
Size of downloaded files: 2,315 kB
Homepage: http://www.gnu.org/software/gcal/gcal.html
Description: The GNU Calendar - a replacement for cal
那么gcal这个软件的ebuild就在/usr/portage/app-misc/gcal/下面
在这个目录下,一般能看到很多ebuild文件,分别对应不同版本号
1. 怎么继续前次的ebuild操作?
比如,emerge到一半,发现一个错误,你google/去论坛搜了一圈,找出了解决办法,难道非要从头开始么? 解决办法其实很多了,说几个最常用的
a. 使用clearcase/" target="_blank" >ccache
每个人都应该把它打开
emerge ccache之后,在/etc/make.conf里面
找到FEATURES设置,加上
FEATURES="ccache"
以及CCACHE_SIZE="2G"
默认好像是2G,我觉得如果硬盘空间足够,多多益善。
下次emerge的时候,你会发现编译的速度快了很多。这样间接起到了中断继续的效果。个人推荐这个方法,最简单。
b.继续make
emerge也就是一个用源码编译/安装的过程,而gnu make系统也保证了它实际上是可以"断点续传"的。而gentoo的portage系统在每次开始新的emerge的时候,会自己删掉以前的临时目录,重新生成,造成中断的emerge过程不可恢复。
你只要进入到临时目录,一般是
/var/tmp/portage/ebuild名称/work/ebuild名称/
下继续make,然后make install就行
不用怀疑,这样已经装好了。。但是,这样安装的软件包不会被记载在portage的world file里面。。所以,更优雅的办法是
0. 找到ebuild文件,比如abc-1.0.1.ebuild
1. ebuild abc-1.0.1.ebuild compile
2. ebuild abc-1.0.1.ebuild install
3. ebuild abc-1.0.1.ebuild qmerge
2. 作自己的ebuildebuild文件只是按照一定规律写的shell script而已,一般来说,它们是非常简单的(只限于100行以内条理清晰的  javascript:window.open(this.src);" style="CURSOR: pointer" onload="return imgzoom(this,550)"> xfree的ebuild就是个很好的例外 ) 可以看看gentoo的ebuild guide, http://www.gentoo.org/doc/en/gentoo-howto.xml 大概而言,只要知道 $A/$P等几个变量的含义就可以了。 从头写ebuild还是有点麻烦的,对于一个普通用户来说也没必要,但是 对于大多数软件的版本升级,你只要复制+改名+做digest就可以了 比如stardict最近出了2.2.1,但是ebuild只到2.2.0
|
|