LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: tionja

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

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


谢谢iwanttobethat的提示,只是到目前为止,我根本没法到达这一步,emerge程序也不检查这个值(详细的可以看第八楼里贴的输出)。

现在主要的问题有两个:
1. ebuild xxx unpack之后,源文件都放哪儿了(/var/tmp/portage/xxx/生成了相关目录,不过多半是空的)
2. emerge为啥很快就完成了,也没有任何提示呢...
回复 支持 反对

使用道具 举报

发表于 2008-11-15 19:40:13 | 显示全部楼层
Post by tionja;1908953
谢谢iwanttobethat的提示,只是到目前为止,我根本没法到达这一步,emerge程序也不检查这个值(详细的可以看第八楼里贴的输出)。

现在主要的问题有两个:
1. ebuild xxx unpack之后,源文件都放哪儿了(/var/tmp/portage/xxx/生成了相关目录,不过多半是空的)
2. emerge为啥很快就完成了,也没有任何提示呢...

八楼提到:
>>> Emerging (1 of 1) x11-libs/qt-4.4.2
* checking ebuild checksums ;-) ...                                                 [ ok ]
* checking auxfile checksums ;-) ...                                                [ ok ]
* checking miscfile checksums ;-) ...                                               [ ok ]
>>> Unpacking source...
>>> Source unpacked.
>>> Compiling source in /var/tmp/portage/x11-libs/qt-4.4.2/work ...
>>> Source compiled.

所以emerge解压以后应该在"/var/tmp/portage/x11-libs/qt-4.4.2/work"目录里面。

我说的方法是不用涉及到emerge的过程的,我是先自己手动解压了源码,然后改代码,最后再将改动的代码重新打包成*.tar.bz2格式。
因为这样改动了之后,这个*.tar.bz2的包已经不是ebuild里面指定的包了(size, sha1等被改变了),所以要改Manifest文件的相应记录以欺骗emerge, 改变以后对emerge来说,我的新*.tar.bz2包就是合法的了,于是就可以顺利安装了。
回复 支持 反对

使用道具 举报

发表于 2008-11-15 20:32:45 | 显示全部楼层
Post by druggo;1908620
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


看来我的解决方法很业余,上面的方法的才是正解,至于楼主在8楼的尝试为什么不行,是因为你选的包不对,  楼主用的包是x11-libs/qt-4.4.2,但是 x11-libs/qt-4.4.2只是一个虚拟的包,它是没有代码的,它只是依赖于一大堆包,主要的是x11-libs/qt-core-4.4.2,所以unpack之后当然是找不到代码的。

运行emerge -pv qt 得到以下输出:
These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N    ] x11-libs/qt-core-4.4.2  USE="qt3support ssl -debug -doc -glib -pch" 102,858 kB
[ebuild  N    ] x11-libs/qt-sql-4.4.2  USE="qt3support sqlite -debug -firebird -mysql -odbc -pch -postgres" 0 kB
[ebuild  N    ] x11-libs/qt-dbus-4.4.2  USE="-debug -pch" 0 kB
[ebuild  N    ] x11-libs/qt-script-4.4.2  USE="-debug -pch" 0 kB
[ebuild  N    ] x11-libs/qt-xmlpatterns-4.4.2  USE="-debug -pch" 0 kB
[ebuild  N    ] x11-libs/qt-test-4.4.2  USE="-debug -pch" 0 kB
[ebuild  N    ] x11-libs/qt-gui-4.4.2  USE="accessibility cups dbus qt3support -debug -glib -mng -nas -nis -pch -tiff -xinerama" INPUT_DEVICES="-wacom" 0 kB
[ebuild  N    ] x11-libs/qt-qt3support-4.4.2  USE="accessibility -debug -pch" 0 kB
[ebuild  N    ] x11-libs/qt-webkit-4.4.2  USE="-debug -pch" 0 kB
[ebuild  N    ] x11-libs/qt-opengl-4.4.2  USE="qt3support -debug -pch" 0 kB
[ebuild  N    ] x11-libs/qt-svg-4.4.2  USE="-debug -pch" 0 kB
[ebuild  N    ] x11-libs/qt-assistant-4.4.2  USE="webkit -debug -pch" 0 kB
[ebuild  N    ] x11-libs/qt-4.4.2  USE="dbus opengl -qt3support" 0 kB

Total: 13 packages (13 new), Size of downloads: 102,858 kB


可以看到,很多包都是0 kB的,只有 x11-libs/qt-core-4.4.2  是102,858 kB。也就是说只有这个包才是真正的包,解压这个包才可能看到代码。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-16 01:56:45 | 显示全部楼层
再此感谢iwanttobethat以及楼上的几位朋友,我遇到的问题已经完全得到了解决。

只是这里再补充一下iwanttobethat在13贴里的内容:
可以看到,很多包都是0 kB的,只有 x11-libs/qt-core-4.4.2 是102,858 kB。也就是说只有这个包才是真正的包,解压这个包才可能看到代码。
在这里需要补充的是,qt-4.4.2的确是个空包,其它的那些qt-*却都不是(尽管大小都是0),如果只unpack qt-core的话,得到的仅仅只是头文件。也就是说,如果想修改某个cpp文件(在此例中)需要unpack一个相应的包(头文件也会随之一并解压缩的)。

再次感谢大家
回复 支持 反对

使用道具 举报

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

本版积分规则

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