关于DEB打包的一些失败记录,想让deb安装完成之后显示一些信息 - yanjieee - 博客园
关于DEB打包的一些失败记录,想让deb安装完成之后显示一些信息
今天搞了一下QT的应用程序在ubuntu下的安装程序,也就是用DEB打包工具打包以下。
客户要求要在安装完成之后,显示一个提示信息,让用户看到。
我首先想到的方法就是DEBIAN/control文件中有没有什么字段是用来在deb package installer安装完成之后显示信息的。
可是查了一下官方文档,很失望,没有这个字段。
后来只好从DEBIAN/postint这个脚本入手,这个脚本是在installer完成安装之后执行的脚本。
所以,我一开始的想法,是用QT做一个简单的弹框程序,然后用脚本去调用它,谁知道简单的一个对话框程序,编完发现居然达到了8M之大。
由于对QT的研究不是很深入,不敢贸然去删除一些静态库。所以pass了该方案。
接下去我就想到,使用脚本去执行shell命令,估计有哪一条命令是可以弹框的,果不其然,一查之下,还真有,那就是——zenity。
我使用zenity --info --text="hello world"就可以弹出一个简单的对话框,这下可把我高兴的。
直接开始打包,过程很顺利,结果也不错。
可是!!!拿到11.04下面一测就悲剧了。直接报错说connot open display神马的。
查了一下,网上的说法是当有不同的用户要执行图形界面的时候,本用户就会报错。解决方法是先运行命令"xhost +"来开启多用户共享的图形界面。
于是我在zenity之前调用了"xhost +",在11.04下面一跑,得了,这次不报zenity的错,而是报xhost的错误了,提示也是一些cannot display之类的,记得不是很清楚了。
网上提到该解决办法比较繁琐,要去更改系统配置之类的。所以,该方案pass too。
仔细回想一下,以我的理解,应该是当前用户运行deb之后,会提示输入超级用户的密码,这个时候,应该就是转到超级用户的身份来执行installer了,所以导致了zenity的多用户出错。后面的话,按理说超级用户跑xhost应该有足够的权限,怎么就失败了?具体我也没深究了。 反正是放弃了。
后来想想,即使用了8M的那个弹框估计也会出现和zenity类似的问题。真是纠结啊。
最后实在没辙了,只好在 DEBIAN/control 的Description字段里面写一些提示信息了,反正这些字从开始安装到结束都会显示着,^_^。
记得第二行开头要空格,不然打包的时候就出错咯。