LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2774|回复: 5

懒人用gentoo,学写自己的ebuild

[复制链接]
发表于 2005-9-13 11:55:17 | 显示全部楼层 |阅读模式
发现论坛上这方面的文章比较少,灌水一篇,高手看了不要取笑我.

最近学习使用tex,需要用gbkfont和gbk2uni,找了很久才找到,又装了半天,gbk2uni还没有预编译的linux的版本,还要自己重新编译. 终于在公司的机器上算是搞好了.想起自己在gentoo里装什么都emerge的日子,真是觉得特别的不爽,为什么中国人自己做的东西,总是很难让人用的很爽呢(扯远啦,别拍我). 想到在家里的机器上又要重新搞一遍,头皮有点发麻.

于是查了相关的资料,发现其实在gentoo中扩充自己的ebuild是非常简单的,以前竟然不知道(孤陋寡闻,我拍),写在这里与诸君共享.

我在这里要写的是两个ebuild,一个是gbkfonts-bin,因为我只有gbkfonts的二进制文件,一个gbk2uni. 其实它们两个是不相干的,你可以单独尝试其中的任意一个,只是gbk2uni是用源代码编译的目标文件,gbkfonts直接是bin文件,差别不大.

一个ebuild是一个普通的脚本文件,脚本虽然很复杂, 写一个简单的ebuild确并不复杂,只是ebuild的文件名,文件存放的路径都有一些规定.  ebuild的名字由四部分组成, 第一部分是套件的名称,比如gbkfonts-bin,这个名字其实是你自己可以随便取的,第二部分是版本号,也是随便取,比如1.0,第三部分是可选的 _alpha, _beta, _pre等,表明这个版本的状态,第四部分也是可有可无的Gentoo修订标记,比如r3,r4等.

所以我的gbkfonts-bin的ebuild文件名为:gbkfonts-bin-1.0.ebuild, gbk2uni的ebuild的文件名叫:gbk2uni-1.0.ebuild.

gbkfonts-bin-1.0.ebuild的内容如下:

  1. DESCRIPTION="A tool used to convert TTF font to the teTex format"
  2. SRC_URI="http://abcdefg.kmip.net/share/${P}.tar.gz"
  3. KEYWORDS="~x86"
  4. RESTRICT="nomirror"
  5. LICENSE="GPL-2"
  6. SLOT="0"

  7. S=${WORKDIR}/gbkfonts-bin

  8. src_install(){
  9.         dobin go
  10.         dobin appendconf
  11.         dobin gbkfonts
  12.         dobin gbkfont-inst
  13. }
复制代码


其中的${P}是预定义变量,运行的时候被翻译成Package名加版本号(gbkfonts-bin-1.0)下同.
dobin是预定义函数.

gbk2uni-1.0.ebuild的内容如下:

  1. DESCRIPTION="gbk2uni is a tool which make good CHI-INDEX in texpdf "
  2. SRC_URI="http://abcdefg.kmip.net/share/${P}.tar.gz"
  3. RESTRICT="nomirror"
  4. LICENSE="GPL-2"
  5. SLOT="0"
  6. KEYWORDS="~x86"

  7. src_install()
  8. {
  9.         dobin gbk2uni
  10. }
复制代码


然后编辑/etc/make.conf,增加下面的一行:

  1. PORTDIR_OVERLAY=/usr/local/portage
复制代码

告诉emerge可以去/usr/local/portage里找package.

然后将gbkfonts-bin-1.0.ebuild放在/usr/local/portage/dev-tex/gbkfonts-bin/里(如果没有那个目录就新建那个目录),同样的,gbk2uni-1.0.ebuild放在/usr/local/portage/dev-tex/gbk2uni/目录里.

前面说过,ebuild文件的存放路径是有要求的,就是ebuild一定要放在package名字的那个目录里,所以gbkfonts-bin-1.0.ebuild一定要放在gbkfonts-bin目录里,而gbkfonts-bin要位于某一个已知的class的目录里,你可以选择dev-tex,也可以选择不想关的app-i18n,或者别的什么,但是一定要是当前的/usr/portage里已知的分类. 所以这个路径是必须的,不能是任意的.

如果你正在跟着一步一步的做,STOP,下面的步骤你没有办法跟着做了,因为我在上面的ebuild里面写的服务器的路径是随便写的,实际上并没有那样的文件,如果你要跟着做,可以先从附件中拆离gbkfonts-bin-1.0.tar.gz和gbk2uni-1.0.tar.gz这两个文件,将其放在usr/portage/distfiles/文件夹里,然后再继续.

OK,然后我们进入/usr/local/portage/dev-tex/gbkfonts-bin/目录中,执行下面的命令:

  1. ebuild gbkfonts-bin-1.0.ebuild digest
复制代码


进入/usr/local/portage/dev-tex/gbk2uni/目录里,执行:

  1. ebuild gbk2uni-1.0.ebuild digest
复制代码


现在,可以测试自己的成果了,运行 emerge -p gbkfonts-bin,检查输出的结果,运行emerge  gbkfonts-bin,检查输出结果.

运行 emerge -p gbk2uni,检查输出的结果,运行emerge  gbk2uni,检查输出结果.

如果你的ebuild里面的文件放在可以公开的公共服务器上,那么就赶紧共享你的ebuild文件吧,你辛苦了半天,可以省去无数人无数个半天的时间.

ebuild文件里面的语句含义都比较明显,我在这里就不罗嗦了,有兴趣的朋友可以参考gentoo的ebuild开发人员指南:http://www.gentoo.org/doc/zh_tw/gentoo-howto.xml

又附: Sorry,说我上传的附件太大(300多K不算大吧),不过总算gbk2uni的附件满足要求,另外一个大家自己去网上找相关的文件自己拼装吧.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2005-9-13 12:59:56 | 显示全部楼层
支持原创哦, 加油~
回复 支持 反对

使用道具 举报

发表于 2005-9-13 17:51:21 | 显示全部楼层
不错啊 支持一下
回复 支持 反对

使用道具 举报

发表于 2005-9-13 20:58:35 | 显示全部楼层
我看得好像很过隐噢!不错,精干。
回复 支持 反对

使用道具 举报

发表于 2005-9-14 02:26:29 | 显示全部楼层
这个好……收藏ed……
回复 支持 反对

使用道具 举报

发表于 2005-9-14 07:10:21 | 显示全部楼层
建议加精。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表