LinuxSir.cn,穿越时空的Linuxsir!

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

求助:源文件打补丁后再安装的办法(已解决)

[复制链接]
发表于 2008-11-14 09:38:34 | 显示全部楼层 |阅读模式
大家好,

我想改一下一个源文件里的一小段代码,然后再把改完得到的新文件放回源代码的tar.bz2文件里,再emerge这个包好像最后得到的程序没有任何的改变...

所以想请教大家一下,这个办法是不是行不通的?另外除了自己创建ebuild文件外,还有别的办法能比较容易的解决以上的问题么?

谢谢大家
发表于 2008-11-14 10:30:18 | 显示全部楼层
emerge可以分步进行,先解压缩->打补丁->安装
emerge --help...
回复 支持 反对

使用道具 举报

发表于 2008-11-14 10:46:52 | 显示全部楼层
自己改写一下ebuild,加上一句epatch就行了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-14 20:32:14 | 显示全部楼层
Post by LongerZ;1908327
emerge可以分步进行,先解压缩->打补丁->安装
emerge --help...


确实看了emerge --help --verbose,但没找到关于上述三个步骤的参数,这位朋友能不能说的稍微详细一点,谢谢了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-14 20:38:40 | 显示全部楼层
Post by acevery;1908338
自己改写一下ebuild,加上一句epatch就行了。


的确是很方便的办法,只是我暂时还不大熟悉ebuild的语法,只好用了一楼的土办法,而且还行不通好像...
回复 支持 反对

使用道具 举报

发表于 2008-11-14 20:44:39 | 显示全部楼层
ebuild /path/to/the/ebuild unpack
do something
ebuild /path/to/the/ebuild compile
ebuild /path/to/the/ebuild install
ebuild /path/to/the/ebuild qmerge
ebuild /path/to/the/ebuild clean
回复 支持 反对

使用道具 举报

发表于 2008-11-15 05:42:17 | 显示全部楼层
http://gentoogle.blogspot.com/2007/06/linuxqq.html
你看看这种方法管用不。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-15 06:12:50 | 显示全部楼层
楼上两位讲的是一个办法,应该就是我要找的了

无奈有件奇怪的事情,我unpack之后,在/var/tmp/portage里虽然生成了对应包的目录,里面有distdir/ homedir/ temp/ work/等目录,可这些目录却是空的(temp里有环境变量的文件跟build的log),可work里应该有源文件才对啊,distdir里应该有源文件压缩包的符号连接才对啊...
搞糊涂了
如果说FEATURES里要加个noclean,那那个相应的目录又从哪儿来的,怎么没给删了呢...

我在emerge其他文件的同时看了一下他们在/var/tmp/portage里的相应目录,里面满满的,源文件什么的都齐了,这说明我环境变量也没设到别的目录里去啊。怎么偏偏我自己unpack了,就没东西呢...

请大家再帮我出出主意,谢谢大家

ps:又试了一次
发现ebuild xxx unpack的时候,有一个提示:
  1. Existing ${T}/environment for 'qt-4.4.2' will be sourced. Run 'clean'
复制代码
我想这个大概是原因,只是不知道$T指的是啥,为啥又run clean了(是不是因为我已经安装了以上这个包啊...)

试着emerge -C了这个包,再次emerge,安装在很短时间里完成了,根本没编译,尽管emerge提示了如下信息:
  1. >>> Verifying ebuild manifests
  2. >>> Emerging (1 of 1) x11-libs/qt-4.4.2
  3. * checking ebuild checksums ;-) ...                                                 [ ok ]
  4. * checking auxfile checksums ;-) ...                                                [ ok ]
  5. * checking miscfile checksums ;-) ...                                               [ ok ]
  6. >>> Unpacking source...
  7. >>> Source unpacked.
  8. >>> Compiling source in /var/tmp/portage/x11-libs/qt-4.4.2/work ...
  9. >>> Source compiled.
  10. >>> Test phase [not enabled]: x11-libs/qt-4.4.2
  11. >>> Install qt-4.4.2 into /var/tmp/portage/x11-libs/qt-4.4.2/image/ category x11-libs
  12. >>> Completed installing qt-4.4.2 into /var/tmp/portage/x11-libs/qt-4.4.2/image/
  13. >>> Installing x11-libs/qt-4.4.2
  14. * checking 0 files for package collisions
  15. >>> Recording x11-libs/qt:4 in "world" favorites file...
  16. >>> Auto-cleaning packages...
  17. >>> No outdated packages were found on your system.
  18. * GNU info directory index is up-to-date.
复制代码
这些步骤几乎在几秒钟里完成的,是不是哪儿cache了编译好的文件啊(拷贝都没那么快啊...)
请大家指点一下我,谢谢
回复 支持 反对

使用道具 举报

发表于 2008-11-15 10:29:42 | 显示全部楼层
确实看了emerge --help --verbose,但没找到关于上述三个步骤的参数,这位朋友能不能说的稍微详细一点,谢谢了
不好意思,我只是依稀记得是三步了,没注意是用ebuild命令进行。正确的如
druggo
所说。
回复 支持 反对

使用道具 举报

发表于 2008-11-15 13:04:52 | 显示全部楼层
由于ebuild的Manifest文件里面记录了源文件的大小,对应的RMD160, SHA1, SHA256码,所以当你改变了源代码再打包成.tar.bz2之后,emerge时会判断.tar.bz2包有错,然后将其改名后重新下载。
所以在Manifest文件里面的相关记录改了就可以了。
上面提到的值我是这样得到的:
emerge一下,出错,提示expect RMD160 is xxx, but got yyy.
于是我就将Manifest文件里面的xxx改成yyy, 如此类推,改掉其他几个就可以安装了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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