[教程]简单的Linux标准编译和打包

编译打包和其他
回复
头像
carlos444_444
帖子: 448
注册时间: 2005-06-06 21:35
系统: Debian
来自: 四海为家
联系:

[教程]简单的Linux标准编译和打包

#1

帖子 carlos444_444 » 2014-01-06 12:01

一、源代码编译成二进制软件并打包

从编译打包SCIM-PYTHON学习打包DEB
本文转自G地瞭望台,原作者是GenoKolar :em03

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
将源码包放到目录中,解压源码包(如果源码包的命名不规范,需要先将源码包命名规范化,具体内容参看Debian新维护人员手册,以下简称手册)到当前目录。

代码: 全选

$ tar zxf scim-python_0.1.13rc1.tar.gz
注:关于命名规范化:软件名_版本号.tar.gz,或软件名_版本号.tar.bz2。比如scim-python_0.1.13.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
4,打开终端,进入scim-python_0.1.13rc1这个文件夹 首次Debian化:

代码: 全选

$ cd ~/build/scim-python_0.1.13rc1
$ dh_make -e somebody@server.com -f ../scim-python-0.1.13rc1.tar.gz 
somebody@server.com为你的邮箱名,这个命令会在scim-python-0.1.13rc1这个文件夹下新建一个debian文件夹,并建立一些打包需要的文件。

按个人情况我们可以修改部分文件(具体参看手册)。其中只有一个文件是必须要修改的,就是源码目录下的/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.                        //长说明,长说明可分行写,每行前面留一空格
注释:Vcs-git行和Vcs-Browser行是指定上游源码包的git地址,作为初学打包者,很可能找不到正确的地址。请打包之前将两行删除,否则会打包失败。

比如这里我们修改下control最后部分,添加上介绍。 Description: scim-python 0.1.13rc1 scim-python input 当然,一般的打包基本不需要修改其他文件,如果你需要更多的打包控制,参看手册吧。注:这里的control文件基本是成品,大家可以生成空文件后进行对比。

最后完成打包:

代码: 全选

$ dpkg-buildpackage -rfakeroot -b -uc
这会在scim目录下生成一个你使用平台的deb包。

如果发现有问题,可以适当修改文件,然后快速打包

代码: 全选

$ fakeroot debian/rules binary
--------------------------------------------------------------------------------------------------------------------------------------------------------------

二、已有二进制文件,直接打包
本文转自oklinux.com,原作者不详,不过依然感谢原作者作出的贡献。
有些软件提供已编译的版本,但是只给出了压缩包,为的是方便不同的发行版。我们也可以将这些二进制软件打成deb包,方便自己的安装。比如mozilla提供的新版本的firefox。
1, 建立一个文件夹,设定为系统的根文件夹:

代码: 全选

$ mkdir ~/build
$ cd ~/build
那么,这里的~/build(以我为例,绝对路径为:/home/carlos/build)就是你软件安装的模拟根文件夹了。接下来,你要确定你的软件需要安装到系统哪个目录中。
2,建立安装文件夹:

代码: 全选

$ mkdir opt
$ mkdir -p usr/share/applications
$ mkdir DEBIAN
3,将firefox-lastest.tar.bz2解压缩到opt

代码: 全选

tar jxf firefox-lastest.tar.bz2 -C ~/build/opt/
会生成一个/home/carlos/build/opt/firefox/文件夹,里面是firefox软件的内容。
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.                        
5,如果你还想给你的软件加一个快捷方式,简洁的方法是拷贝一个已经存在的desktop文件,再慢慢修改:

代码: 全选

$ cp /usr/share/applications/pidgin.desktop /home/carlos/build/usr/share/applications/firefox.desktop
这样,就将它拷贝到了你的打包文件夹的“/usr/share/applications/“文件夹,然后照猫画虎地改一下吧。
这里要注意的是,desktop文件中的:

代码: 全选

Exec=/opt/firefox/firefox
因为当你的软件包安装到系统后,你的firefox可执行文件应该在此文件夹下。

注意:注意你要打包文件的归属和权限。所有文件、文件夹应该归属root用户。可执行文件一定要有可执行属性。

代码: 全选

cd ~/build
chown root:root * -R
6,打包

代码: 全选

$ cd /home/carlos/build                    //要在包的模拟根文件夹下
$ dpkg -b . ../firefox_27.0-1_i386.deb
7,全部完成,在/home/carlos文件夹下,就有了一个你自制的火狐deb包。
8,其他命令
将control文件从包里解压出来,放到当前文件夹的DEBIAN子文件夹

代码: 全选

dpkg -e firefox_27.0-1_i386.deb
将包里的安装文件解压出来,并放到指定文件夹(非指定不可,否则不允许解压)

代码: 全选

dpkg -x firefox_27.0-1_i386.deb ~/build
:em01 希望大家喜欢!

关于本帖的进一步内容补充
http://forum.ubuntu.org.cn/viewtopic.php?f=56&t=489108
上次由 carlos444_444 在 2019-01-13 21:48,总共编辑 10 次。
头像
peteryeh64
论坛版主
帖子: 9379
注册时间: 2008-12-20 15:43
系统: 家kubuntu20.04
来自: 心靈深處

Re: [教程]简单的Linux标准编译和打包

#2

帖子 peteryeh64 » 2014-01-06 13:42

... :em11 ...感謝分享...
[论坛版主行为规定]+[PITIVI簡易教程]+[ubuntu裝迅雷]
[releases.ubuntu.com]+[cdimage.ubuntu.com]+[old-releases.ubuntu.com]
[學ubuntu必須拜讀懶蝸牛"笨兔兔的故事"=viewtopic.php?f=112&t=162040][Linux明日的希望在中國]
头像
lainme
论坛版主
帖子: 7805
注册时间: 2008-09-13 19:17
系统: Arch Linux (x86_64)
联系:

Re: [教程]简单的Linux标准编译和打包

#3

帖子 lainme » 2014-01-06 14:04

desktop文件那个可以加到打包里去的。
头像
carlos444_444
帖子: 448
注册时间: 2005-06-06 21:35
系统: Debian
来自: 四海为家
联系:

Re: [教程]简单的Linux标准编译和打包

#4

帖子 carlos444_444 » 2014-01-06 14:33

lainme 写了:desktop文件那个可以加到打包里去的。
是的,这样安装了软件包,就有快捷方式了。我哪里叙述的有问题吗?
头像
lainme
论坛版主
帖子: 7805
注册时间: 2008-09-13 19:17
系统: Arch Linux (x86_64)
联系:

Re: [教程]简单的Linux标准编译和打包

#5

帖子 lainme » 2014-01-06 14:35

carlos444_444 写了:
lainme 写了:desktop文件那个可以加到打包里去的。
是的,这样安装了软件包,就有快捷方式了。我哪里叙述的有问题吗?
哦。看错了。
头像
月下叹逍遥
论坛版主
帖子: 33994
注册时间: 2010-10-07 14:23
系统: Archdows10
来自: 某系某星某洲某国某省某市
联系:

Re: [教程]简单的Linux标准编译和打包

#6

帖子 月下叹逍遥 » 2014-01-06 14:37

checkinstall :em04
浮生七十今三十,从此凄惶未可知
头像
carlos444_444
帖子: 448
注册时间: 2005-06-06 21:35
系统: Debian
来自: 四海为家
联系:

Re: [教程]简单的Linux标准编译和打包

#7

帖子 carlos444_444 » 2014-01-06 14:45

月下叹逍遥 写了:checkinstall :em04
checkinstall也挺好,我最先学的就是checkinstall,后来才会的用dpkg。有些用标准方法打包不成功的,还得用checkinstall
前尘逐梦
帖子: 27
注册时间: 2012-08-15 12:28

Re: [教程]简单的Linux标准编译和打包

#8

帖子 前尘逐梦 » 2014-01-08 0:13

这样的话,就可以用anjuta来建立Python应用程序,后面修改起来也很方便。一直用的是Quickly,设计出的ui文件和项目高度相关,没法用glade打开,要进行重复利用几乎没有可能。
头像
ak2008
帖子: 262
注册时间: 2009-03-06 10:52
系统: ubuntu-12.04

Re: [教程]简单的Linux标准编译和打包

#9

帖子 ak2008 » 2014-02-28 23:23

mark
头像
youzhiyili
帖子: 2422
注册时间: 2012-03-22 20:42
系统: ubuntu22.04

Re: [教程]简单的Linux标准编译和打包

#10

帖子 youzhiyili » 2014-03-01 5:40

ak2008 写了:mark
+1
@自由建客 @qy117121 @枫叶饭团 @cikekid @YeLee @jtshs256 @eexpress @ljj_jjl2008 @zhw2101024 @TeliuTe @月下叹逍遥 @leeaman @懒蜗牛Gentoo @灰色小狼 @photor @adagio @JiangHui @phoenixlzx @oneleaf
头像
iorikyox
帖子: 92
注册时间: 2010-04-02 16:16

Re: [教程]简单的Linux标准编译和打包

#11

帖子 iorikyox » 2014-10-21 19:44

非专业人员,顺路看一眼。

昨天遇到一个问题,顺利解决了,希望以后能继续进步。
头像
dwl301
帖子: 1130
注册时间: 2007-04-14 11:17

Re: [教程]简单的Linux标准编译和打包

#12

帖子 dwl301 » 2014-10-23 15:53

pbuilder is king ....
Gigabyte Aero 15
Intel Core i7-7700HQ
NVIDIA GeForce GTX 1060 (DISABLED)
2x8GB DDR4 2400MHz
M.2 NVME 2280 512G
M.2 NVME 2280 1024G
15.6" FHD 1920×1080
kokuty
帖子: 15
注册时间: 2015-03-07 10:58
系统: wind7

Re: [教程]简单的Linux标准编译和打包

#13

帖子 kokuty » 2016-01-05 20:08

非专业人员,顺路看一眼。 :em11 :em11 :em11
回复