debian包的结构和解包打包-从打包ubuntu12.10 linuxqq说起
作为2B青年,果断在mac下装了linux。今天想装QQ,发现报错了。
daohoo@daohoo-mbp:~/Downloads$ sudo dpkg -i linuxqq_v1.0.2-beta1_i386.deb [sudo] password for daohoo: dpkg: error processing linuxqq_v1.0.2-beta1_i386.deb (--install): parsing file '/var/lib/dpkg/tmp.ci/control' near line 7 package 'linuxqq': error in Version string 'v1.0.2-beta1': version number does not start with digit Errors were encountered while processing: linuxqq_v1.0.2-beta1_i386.deb
根据错误信息显示,不能安装的原因是新版的ubuntu要求版本号为数字开头,SB的腾讯却用v开头。因此,我猜想,只要重新打包即可(之前我通过重新打包的方法,也改过android QQ的尾巴)。过程如下:
1.ar解包:
daohoo@daohoo-mbp:~/Downloads/linuxqq$ ar vx linuxqq_1.0.2_i386.deb x - debian-binary x - control.tar.gz x - data.tar.gz
2.tar解包control信息:
daohoo@daohoo-mbp:~/Downloads/linuxqq$ tar -zxvf control.tar.gz ./ ./conffiles ./control
3.修改control文件:
sed -i "s/v1.0/1.0/g" control
4.重新tar打包control.tar.gz
tar -zcvf control.tar.gz ./conffiles ./control
5.ar重新打包debian包:
ar rcs linuxqq.deb debian-binary control.tar.gz data.tar.gz
6.安装:
sudo dpkg -i linuxqq.deb
BTW:介绍一下关于debian包的结构:
1.解包后得到三个文件:
daohoo@daohoo-mbp:~/Downloads/linuxqq$ ls -l total 4920 -rw-r--r-- 1 daohoo daohoo 442 Jan 9 20:50 control.tar.gz -rw-r--r-- 1 daohoo daohoo 5027432 Jan 9 20:50 data.tar.gz -rw-r--r-- 1 daohoo daohoo 4 Jan 9 20:50 debian-binary
其中:
1.debian-binary:
daohoo@daohoo-mbp:~/Downloads/linuxqq$ cat debian-binary 2.0
这个文件包含所使用软件包格式的版本号
2.control.tar.gz:
daohoo@daohoo-mbp:~/Downloads/linuxqq$ tar -zxvf control.tar.gz ./ ./conffiles ./control
daohoo@daohoo-mbp:~/Downloads/linuxqq$ cat control Package: linuxqq Priority: extra Section: Internet Installed-Size: 6264 Maintainer: Tencent Inc. Architecture: i386 Version: v1.0.2-beta1 Depends: gtk2.0-binver-2.10.0, libc6, libcairo2, libglib2.0-0, libgtk2.0-0, libpango1.0-0 Description: QQ - The most popular free instant messaging program in China. * Chat with more than 590,000,000 people all over the world. * Free to download or distribute absolutely.
包含了软件包管理工具所需信息的tarball文件。里面的control文件有版本号以及依赖关系
3.data.tar.gz:
daohoo@daohoo-mbp:~/Downloads/linuxqq$ tar -zxvf data.tar.gz ./ ./usr/ ./usr/bin/ ./usr/bin/qq ./usr/share/ ./usr/share/tencent/ ./usr/share/tencent/qq/ ./usr/share/tencent/qq/qq.png ./usr/share/tencent/qq/qq ./usr/share/tencent/qq/res.db ./usr/share/applications/ ./usr/share/applications/qq.desktop ./usr/share/doc/ ./usr/share/doc/linuxqq/ ./usr/share/doc/linuxqq/qq
这个才是最后真正的安装文件,指明了安装的路径。
最后,上传下打好包在ubuntu12.10可用的linux QQ debian包(出于安全考虑,对debian进行了重新打包)。
近期评论