从编译打包SCIM-PYTHON学习打包DEB
本文转自G地瞭望台,原作者是GenoKolar
1,首先需要安装必要的编译打包所需的包:
代码: 全选
$ sudo apt-get install dpkg-dev file gcc g++ libc6-dev make patch autoconf automake dh-make debhelper devscripts fakeroot gnupg xutils lintian pbuilder build-essential
2,然后当然是下载源码。比如现在我们下载获得的是:scim-python-0.1.13rc1.tar.gz。
新建一个目录,命名为build,
代码: 全选
$ mkdir ~/build
代码: 全选
$ tar zxf scim-python_0.1.13rc1.tar.gz
3,那么现在scim里面就会有scim-python-0.1.13rc1.tar.gz这个文件和scim-python-0.1.13rc1这个文件夹了接下来打开需要查看相关文档,找出编译scim-python所依赖的包,并安装上。这里scim需要到的包有:
代码: 全选
$ sudo apt-get install g++ libgtk2.0-dev python-gtk2-dev scim-dev
代码: 全选
$ cd ~/build/scim-python_0.1.13rc1
$ dh_make -e somebody@server.com -f ../scim-python-0.1.13rc1.tar.gz
按个人情况我们可以修改部分文件(具体参看手册)。其中只有一个文件是必须要修改的,就是源码目录下的/debian/control文件。
代码: 全选
Source: scim-python //源
Section: gnome //新立得里的软件组
Priority: extra //软件优先级
Maintainer: somebody <somebody@server.com> //维护者
Build-Depends: debhelper (>= 8.0.0), cmake //编译时依赖关系
Standards-Version: 3.9.3 //标准版本号
Homepage: http://www.scim-python.org //软件包主页
#Vcs-Git: git://git.debian.org/collab-maint/openfetion-standalone.git //这两行需要在打包之前删除,详见后面注释
#Vcs-Browser: http://git.debian.org/?p=collab-maint/openfetion-standalone.git;a=summary
Version: 0.1.13rc1 //软件版本号,后手工添加的
Package: scim-python //软件包名
Architecture: i386 //架构,肯定不能是any,是i386或amd64,如果是全架构的,debian是all,redhat是noarch,ubuntu不详。
Depends: libgtk2.0-0 (>= 1.29.3), libc6 (>= 2.3.6-6~) //此软件运行时的依赖关系
Description: scim-python 0.1.13rc1 scim-python input //短说明
this is a niubility software, make and package by a niubility person. //长说明,长说明可分行写,每行前面留一空格
比如这里我们修改下control最后部分,添加上介绍。 Description: scim-python 0.1.13rc1 scim-python input 当然,一般的打包基本不需要修改其他文件,如果你需要更多的打包控制,参看手册吧。注:这里的control文件基本是成品,大家可以生成空文件后进行对比。
最后完成打包:
代码: 全选
$ dpkg-buildpackage -rfakeroot -b -uc
如果发现有问题,可以适当修改文件,然后快速打包
代码: 全选
$ fakeroot debian/rules binary
二、已有二进制文件,直接打包
本文转自oklinux.com,原作者不详,不过依然感谢原作者作出的贡献。
有些软件提供已编译的版本,但是只给出了压缩包,为的是方便不同的发行版。我们也可以将这些二进制软件打成deb包,方便自己的安装。比如mozilla提供的新版本的firefox。
1, 建立一个文件夹,设定为系统的根文件夹:
代码: 全选
$ mkdir ~/build
$ cd ~/build
2,建立安装文件夹:
代码: 全选
$ mkdir opt
$ mkdir -p usr/share/applications
$ mkdir DEBIAN
代码: 全选
tar jxf firefox-lastest.tar.bz2 -C ~/build/opt/
4,进入DEBIAN文件夹,我们自己做个control文件。这里没看错,如果是自己打包二进制文件,不通过编译,你需要建立一个DEBIAN文件夹,而不是dh_make的debian文件夹。
代码: 全选
$ nano ~/build/DEBIAN/control
代码: 全选
Package: firefox
Version: 27 //软件版本号,这个除非有足够理由尽量不乱写,新利得通过判断这个号码确定是否要升级软件
Section: gnome
Priority: extra
Maintainer: somebody <somebody@server.com>
Homepage: http://www.firefox.com
Architecture: i386
Depends:
Installed_Size: 35MB //这是一个手工打包的必备字段,软件安装后的大小,没有会打包失败。
Description: a big web browser
this is a niubility software, make and package by a niubility person.
代码: 全选
$ cp /usr/share/applications/pidgin.desktop /home/carlos/build/usr/share/applications/firefox.desktop
这里要注意的是,desktop文件中的:
代码: 全选
Exec=/opt/firefox/firefox
注意:注意你要打包文件的归属和权限。所有文件、文件夹应该归属root用户。可执行文件一定要有可执行属性。
代码: 全选
cd ~/build
chown root:root * -R
代码: 全选
$ cd /home/carlos/build //要在包的模拟根文件夹下
$ dpkg -b . ../firefox_27.0-1_i386.deb
8,其他命令
将control文件从包里解压出来,放到当前文件夹的DEBIAN子文件夹
代码: 全选
dpkg -e firefox_27.0-1_i386.deb
代码: 全选
dpkg -x firefox_27.0-1_i386.deb ~/build
关于本帖的进一步内容补充
http://forum.ubuntu.org.cn/viewtopic.php?f=56&t=489108