修改Empathy新消息提示音

2011年5月12日 15:17

话说Empathy这个声音真的是轻啊,简直和没有差不多,@ghosTM55 发过来的Gtalk,我就坐在电脑前写代码居然没听到。。平时也就算了,万一有个重要事情没听到后果就严重了。因此,我决心要修改Empathy的提示音。Empathy的提示音在哪里修改还真的是没找到,Google后得知,Empathy所有声音都是属于sound-theme-freedesktop这个RPM包的,查询即知,声音都在/usr/share/sounds/freedesktop/stereo下,进入后发现全是oga格式的声音,这个格式对我来说是蛮新鲜的。不知道Linux下如何将通用的MP3格式的声音转化为oga格式,Google后知道Linux有个著名的软件叫gnac,可以做声音格式转换,支持m4a,flac,oga,mp3,wav,spx等格式,官方网站 gnac.sourceforge.net/,介绍 www.lupaworld.com/article-210899-1.html(我承认这是在做广告,自由软件,做个广告什么的不非法吧)。下载源码后编译安装(依赖包我已经不记得了,但确实没有什么神奇的,官网的编译说明已经很详细了,反复使用./configure --prefix=/usr命令然后按要求安装依赖包即可,如果遇到了找不到的包就Google),然后即可运行。到这里一切都很简单,然后就发现问题了,格式转换的时候gnac提示需要一个叫做gstreamer element audioconvert的插件,gnac可以自行查询安装这个插件,但是结果失败,也就是说,这个插件可能不存在于Yum中。我Google了一下,猜测这个插件可能在gstreamer-plugins-ugly里,这个包Fedora的官方Yum中没有,我掏出珍藏的RpmFusion包安装:

su -c "rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm"
su -c "rpm -Uvh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm"

但是并没有解决问题,我把Fedora 14升了下级,依旧没有解决。不得以,干脆发邮件了,与开发者直接交流不是开源软件一直宣传的理念么,邮件地址:gnac-list@gnome.org,内容如下,额。本人英语超烂,勿嘲笑

i am a fedora 14 user, i need to convert some mp3 to oga, but gnac needs an additional plugin called gstreamer element audioconvert. gnac tried to search it by itself, but it is failed, and i alse dont know which rpm it need. so please help me, thank you.

一天后,回复

audioconvert is part of the gstreamer-plugins-base package. 

I've seen several people with fedora 14 complaining about audioconvert in relation to totem...but since it's a general dependency issue, I'll redirect you to the thread that supposedly solves the issue. You may just need to reinstall gs-plugins-base.

apologies to the devs for posting a thread about totem, but it seemed like the easiest thing. http://forums.fedoraforum.org/showthread.php?p=1429783

我立即访问了给出的网页,第一帖给出了一个方案
yum install gstreamer-ffmpeg gstreamer-plugins* -x *devel*

下了上百MB的安装文件,但依然没有解决,继续看那张网页,#2中有这样一句话,basically remove the ~/.gstreamer-x.x/registry*.*,于是立即运行了

rm ~/.gstreamer-0.10/registry*.*

然后运行gnac来格式转换,瞬间完成,替换/usr/share/sounds/freedesktop/stereo下的message-new-instant.oga,测试,成功!这样Empathy的提示音就被替换成功。

很高兴上星期天在本校举办的的Ubuntu 11.04 Release Party(详细可见:http://wowubuntu.com/shanghai-natty-party-review.html),我本人也算是组织者之一吧,Release Party前多次协助组织者uifiddle的工作。会中贡献了自己的电脑,不过没派上什么用场,演讲者一个个都自带笔记本电脑,由于台子小,全把电脑压在了我的电脑上,不仅被压,还被学校那该死的投影仪插,插到后来Ubuntu 11.04索性花屏了,重启到Fedora下才解决。

投影仪里这台电脑就是我的哦。

会场照片,知道哪个是我么?

会后收获很大。私吞一个Canonical官方出的Ubuntu的2G U盘,很漂亮,一个U盘集线器,一张Ubuntu 10.10 官方的光盘,N多纪念贴纸贴满整个寝室,蛮疯狂的说。还和SHLUG人一起吃汉堡王,认识了ghosTM55,LTN,雨蒼,Shell Xu等一系列牛人。

雨蒼不愧是台湾人(中华民国台湾地区),言语中都散发着中华民国人民特有的魅力,这种魅力在我们从小生活在中国大陆的人身上是从没有见过的,事实上上次的拥抱HTML5技术大会上就已经见识过另一个台湾人布丁(hlb)的演讲,幽默的话语,自由的气息,图文并茂的Slides,还有些对GFW的讽刺,已经构成了我对中华民国的主要印象。

 

Fedora 14下编译安装chmsee 1.3.0

2011年2月26日 11:38

chm文件全名是Microsoft Compiled HTML Help,看名字也猜得出是微软的格式,Windows操作系统自带它的阅读器,chm普遍用于帮助文件和电子书,但在国内,他的应用范围更广,几乎很多在线文档本地化后都采用这个格式。一般做技术的不可能不接触它,但是一般Linux发行版本不自带chm的阅读器,只能安装软件,chmsee就是我所用过最好的chm阅读器了,他还是一款国产软件,我猜之所以看不到比他更好地国外软件,也许是因为中国人更有需求吧。

项目地址:http://code.google.com/p/chmsee/

但是Fedora 14的chmsee包有点奇怪,只有1.1.0版本,没有最新的1.3.0版本。1.1.0的Bug很厉害,影响了正常使用,最新版本则修复了这些Bug。但是Fedora 14没有chmsee最新版本,我在网上也没有搜索到适合Fedora的RPM包,惟一的OpenSUSE的RPM包使用yum localinstall安装仍有不能解决的依赖关系,这使得我们不得不用源码来编译安装了。

我看到项目网站上解释他没有发布二进制安装文件的原因是“Linux 的发行版太多了,还是只发布源码比较省事”,我不否认这种说法的正确性,但也不能否认源码编译安装对我这种Linux菜鸟而言确实非常困难。主要原因当然是缺乏库文件,而且一旦缺乏,我往往不知道该下载哪个包来解决,如果出现RPM包常见的依赖性地狱,更是让我绝望,所以,除非确实找不到二进制包并且需求这个软件,否则我绝对不会去编译源代码。

我看到他的项目文件讲了依赖如下:

cmake >= 2.6.4
gtk2 >= 2.18
xulrunner >= 1.9
chmlib
libxml2
libgcrypt
intltool
幸运的是,Yum库中这些软件全都有,不幸的是,安装了后连cmake都通不过,还是有大量库文件缺乏。后来猜测他的库文件可能不是放在这些可执行的程序中,而是放在devel包中,因此尝试安装了他们的devel包,结果竟然成功了(后来发现项目文件中说的很清楚:Before compiling, you need to check following libraries or their development packages already installed on your system.可惜我一开始没有注意),只要cmake一通过,就不会再有依赖性问题了,安装非常成功。下面复述下正确的依赖。
 
cmake
gtk2-devel
xulrunner-devel
chmlib-devel
libxml2-devel
libgcrypt-devel
intltool
版本方面不用担心,Yum库中的软件都符合要求。
 
软件截图:
 
 
可以看到中文乱码,这应该是1.3.0的一个Bug,chmsee采用内部默认的机制来识别编码,但有点问题,项目网站中已经有人提出,想必下一个版本即可修复。在此之前,可以手动修改文件编码为GB2312或是UTF-8,chmsee会缓存每一个曾经打开过的文件的编码设置。
chmsee的安装说明总体上还是很清楚的,至少按照他的说明来安装依赖后编译就不再出错,有些Linux软件就不是这样了,感觉依赖库根本没写全。我猜大概要好好学习下Linux下的编程才能清楚究竟该如何编译吧。如果大家有更好的技巧,请一定要告诉我,谢谢。

Yum库配置简单方法

2010年12月04日 07:20

好久没写博客了,正如我之前所说,在考试。大学考试就是一堆理论考来考去,我不是一个善于高谈阔论的人,也不是一个擅长考试的人,考的很糟糕,可以说,学习越深入,我就越不擅长考试了。

最近用上了企鹅输入法fcitx 4.0,很棒的输入法,我自从使用Linux以来还没见过这么漂亮的Linux软件呢,只是他的词库不敢恭维,偶尔还会崩溃,但总比ibus强多了。
 
发现Linux上的Office最好的还是OpenOffice 3.2.1版本,虽然比起自带的OpenOffice 3.2只有0.0.1的提升,但是质量真的好很多,不太会死掉了,美观性也大幅增加。LibreOffice项目我当然是支持的,期待的,只是目前还在beta版本,稳定性和OpenOffice 3.2几乎没有差别,所以还没用。
 
Ubuntu Tweak是个很实用的Gnome配置软件,最近才发现。
 
Ubuntu的Gnome-panel版本太低,稳定性很糟糕,一直想升级,可惜不会。Gnome-panel几乎是Gnome桌面的操作系统中最不稳定的组件之一了,无论是在Ubuntu上,还是在Fedora上,都不稳定,GUI,作为一个系统的门面,这样不稳定真的很不好。
 
我们学校搞开源社区了,很高兴,开源的意义我从今年才开始深入认识,这么快也可以为之作贡献了。我们的首要任务是做个我们社区的门户网站,用PHP,在做这个网站之前,我们先做一个PHP框架,这个框架相当于社区的第一个产品,根据Deltamaster的分配,我的任务是Ajax模块,缓存模块和代码优化。
 
我年初帮助Deltamaster做过项目,但结果是以惨败告终的,非但没有做出贡献,反而还在添乱。事后我反思了很久,主要是急功冒进,对任务的认识不够深刻,对语言的思想掌握不够。后者现在已经没什么问题了,前者还在学习。一个程序员,操之过急地编码根本没有意义,画出几张UML图,统筹兼顾,和上面进一步明确任务和接口比这重要的多。
 
RHCE考试推迟到明年一月了,很好,这样时间充裕多了。
 
还有很多话想说,但是不能说了,本文的主题不得不开始了。
 
Yum库的配置网上很多,但在我看来,基本没说清楚,这就是撰文的目的。
 
配置Yum很简单,第一步,用户必须告诉Yum这个库的存在,因此必须在/etc/yum.repos.d中要么创建一个后缀名为repo的文件,要么在已有的repo文件上增加新Yum库的地址,具体写法完全可参考系统自带的文件的写法,以下是我实验库的文件内容:
 
[testyum]                                                   #yum库名字,必须唯一
name=Fedora Test Yum                           #yum库全名,不多解释
baseurl=file:///home/bachue/Downloads   #必须是一个文件夹的地址,可以是FTP,HTTP,当然也可以象我一样为本机地址
enabled=1                                                 #是否启用该库,为1为启用
metadata_expire=7d                                 #源数据过期时间,不多解释
gpgcheck=0                                              #是否检验gpg的key,我是实验库,不需要检验。

更多语法还是请参考已有的repo文件。

完事后,作为用户其实就没啥事了。而Yum库本身还是需要一定的配置,否则不能正常工作。

为什么要配置呢?不配置Yum怎么知道他的库里有哪些包呢?包的详细信息呢?怎么做分组呢?怎么知道包与包之间的依赖关系呢?正是因为不知道,所以要有个配置文件,其实准确的说是源文件,来告诉别人这个Yum库的若干国情。

Yum库的软件,作为实验我挑选了google-chrome-stable和linuxqq的rpm包,这两个软件都是闭源的,所以一定不会出现在官方的Yum库里。

Yum的配置文件有五个,必须放在Yum库的repodata文件夹下,其中有四个(他们是filelists.xml.gz  other.xml.gz  primary.xml.gz  repomd.xml)可以由一句命令createrepo(可能需要安装同名rpm包)自动生成,但最后一个文件比较难对付,第一,他不可能手写,打开就知道,多国语言,想必不可能有人懂这么多语言。第二,可以有命令来生成,和生成前四个文件的命令还是同一个,但他有个古怪的要求,必须有一个其他库的这个文件作为模板,才可以生成,说真的,玩这么多年电脑从没见过这种要求,如果你的电脑上或光盘里已经有Yum库(DVD版本的安装光盘几乎都有),并且有名字中带comps的那个xml配置文件(可能已经被gzip压缩),就可以用他,如果没有,用find命令全系统搜索,关键字是*comps*xml*,我的fedora就有这样一个文件。如果这样都没有找到,那么只能从其他电脑上找了,网上我Google过,没有发现人家把这个文件挂上来。

假设已经找到(不会找不到吧,DVD里真有),生成配置文件的整个命令如下:createrepo -g [该模板文件地址,注意后缀名是xml] [Yum库地址],在我的电脑上,这条命令是这样的,createrepo -g /var/cache/yum/i386/14/fedora/2d112e279cf18476b72e5b30f60c1aa55e0297e7a05f4d9891879ee83d298e11-comps-f14.xml /home/bachue/Downloads/。这条命令将自动在库文件下创建repodata文件夹,并创建好五个配置文件。这样,配置就算完成了。

如果要去试试这个库能否正常工作,一定不要忘了,Yum是有缓存的,如果不久前刚刚扫描过这个Yum库,就不会再去扫描一遍,但你其实已经改过他的配置,或是有新软件入库了,而Yum却不知道,以至于你的操作看上去就像没有生效,这样可能会让你以为Yum没有正常工作。我就出过这样的糗事。清除缓存的命令是yum clean all,一定不要忘了。

讲解完毕,是否很简单呢?

在没学RHCE以前,感觉deb包很强,毕竟不容易出现依赖性问题,学了RHCE,感觉rpm才是真的好,功能实在太强大了。