|
因为最近这个问题比较集中,我把自己的方法贴出来,如以前有了,那大家做个参考好了!
此文的方法就是自己做一个打了补丁的deb包!
参考链接:
http://www.linuxsir.cn/bbs/showthread.php?t=222366
上帖中第15楼xufan106提到要给freetype-2.1.10打三个补丁,后来我下载了debian的libfreetype6源代码,发现里面自带的patches已经有bold.patch这个补丁了(即030-bytecode-interpreter.diff),所以只要再给debian的libfreetype6打上其余两个补丁就可以了,具体方法如下:
1. 下载debian的libfreetype6源码包,apt-get source libfreetype6,最好先建立一个目录来存放。
2. 下载完后应该能看到freetype-2.1.10目录,里面有一个debian目录个三个bz2压缩包,然后将我上传到附件里的两个patch文件拷贝到目录deiban/patches/下面,里面已经有很多patch,也包括030-bytecode-interpreter.diff。
3. 然后修改debian/rules文件,目的是在制作包时自动打上刚才的两个patch文件,具体添加位置(部分截取,已用红色标明):
- # don't segfault on zero width BDF glyphs (#302269)
- patch -p1 -d $(freetype_u) -i $(patchdir)/300-bdflib-zero-width-glyphs.diff
- # don't segfault on BDF glyphs with encodings above 65536 (#305413)
- patch -p1 -d $(freetype_u) -i $(patchdir)/300-bdflib-large-encodings.diff
- # link graph with -lm
- #patch -p1 -d $(ft2demos_u) -i $(patchdir)/310-ft2demos-2.1.9-graph-link.diff
- [b][color=red]
- # custom patches of linuxsir
- patch -p1 -d $(freetype_u) -i $(patchdir)/freetype-2.1.10-cvsfixes.patch
- #patch -p1 -d $(freetype_u) -i $(patchdir)/freetype-2.1.10-xorgfix.patch
- [/color][/b]
- cd $(freetype_u) && ./configure --prefix=/usr CFLAGS="$(CFLAGS)"
- #cd $(freetype_u) && ./configure --prefix=/usr
- $(MAKE) -C $(freetype_u)
复制代码
4. 接下来回到源码包的根目录,即freetype-2.1.10目录,运行dpkg-buildpackage -d制作deb安装包,注意如果有unmet的包要手动安装上,至于那个xlibs-dev已经没有了,所以这里要加一个-d选项忽略掉。
5. 编译完成之后,做好的包在上一级目录下存放,安装*.deb即可。
6. 为了防止下一次升级时覆盖自己的libfreetype6包,可以将其hold住,直到以后bug修复。方法如下:
(1) 用dpkg --get-selections > sid_deb.status命令导出包的安装状态
(2) 编辑sid_deb.status文件将dpkg --get-selections|grep freetype显示的包状态install都改成hold
(3) 用dpkg --set-selections < sid_deb.status命令让debian读入新的包状态
注意我在第三步里实际上之让一个补丁freetype-2.1.10-cvsfixes.patch起作用 ,而freetype-2.1.10-xorgfix.patch我给注释了,因为解决字体上飘只需要cvsfixes这个patch,那个xorgfix我并不太清楚它的作用(知道的兄弟请说明一下),在不确定情况下我觉的较少的改动还是较为安全的。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|