CN103440156A - 一种能用于多种系统下的Linux软件包制作方法 - Google Patents

一种能用于多种系统下的Linux软件包制作方法 Download PDF

Info

Publication number
CN103440156A
CN103440156A CN201310357253XA CN201310357253A CN103440156A CN 103440156 A CN103440156 A CN 103440156A CN 201310357253X A CN201310357253X A CN 201310357253XA CN 201310357253 A CN201310357253 A CN 201310357253A CN 103440156 A CN103440156 A CN 103440156A
Authority
CN
China
Prior art keywords
software package
file
linux
installation
linux software
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310357253XA
Other languages
English (en)
Other versions
CN103440156B (zh
Inventor
莫展鹏
杨松
季统凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
G Cloud Technology Co Ltd
Original Assignee
G Cloud Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by G Cloud Technology Co Ltd filed Critical G Cloud Technology Co Ltd
Priority to CN201310357253.XA priority Critical patent/CN103440156B/zh
Publication of CN103440156A publication Critical patent/CN103440156A/zh
Application granted granted Critical
Publication of CN103440156B publication Critical patent/CN103440156B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明涉及一种能用于多种系统下的Linux软件包制作方法。本发明首先搭建好Linux软件的编译环境并执行一次预编译、编译和安装,然后生成安装文件的列表,再将已经安装好的目标文件逐个拷贝到目标文件存放目录中,最后执行Linux软件包制作的命令把目标文件生成软件包。本发明实现了一种能用在多个Linux发行版的软件包制作方法,同时还解决了传统Linux软件包制作方法每次制作都要重新执行源代码编译的问题;本发明的方法可应用于Linux软件包制作。

Description

一种能用于多种系统下的Linux软件包制作方法
技术领域
本发明涉及Linux软件包制作领域,特别指一种能用于多种系统下的Linux软件包制作方法。 
背景技术
目前Linux下软件包大多数以rpm和deb的形式制作,rpm软件包的制作方法是:先获取软件源代码,根据源代码中提供的依赖软件的文档,安装各种编译要依赖的文件,然后编写rpm软件包的spec脚本,脚本中要完成的步骤包括:1、生成编译目标文件存放目录;2、编译源代码;3、生成目标文件列表。最后运行rpmbuild命令,根据spec脚本生成rpm软件包。Deb软件包的制作方法也差不多,deb中不使用spec文件而是用DEBIAN目录。这些方法存在以下的问题:1、不能同时制作rpm和deb的软件包,对于大多数的Linux软件来说,其运行是不依赖于Linux发行版的,不论是RedHat及其衍生的发行版或Debian及其衍生的发行版,按照目前的制作方法就只能分别在两个环境中下载源代码、编译和打包;2、每制作一次软件包都要重新执行一次源代码的编译,对于大型软件来说,这要额外花费很多的时间。 
发明内容
本发明解决的技术问题在于提供一种能用于多种系统下的Linux软件包制作方法,最大程度地利用开发环境中已经安装配置好的依赖环境,解决当前方法不能同时制作rpm和deb软件包、每制作一次软件包都要重新执行一次源代 码的编译等问题。 
本发明解决上述技术问题的技术方案是:包括如下步骤: 
步骤1:搭建Linux软件的编译环境并执行一次预编译、编译和安装; 
步骤2:遍历安装目录生成安装文件的列表; 
步骤3:编写相应的rpm spec脚本文件和DEBIAN目录所需要的文件; 
步骤4:新创建一个目标文件的存放目录; 
步骤5:根据安装文件列表把已经安装好的目标文件逐个拷贝到目标文件存放目录; 
步骤6:如果是RedHat及其衍生的发行版,执行rpmbuild命令打包;如果是Debian及其衍生的发行版,执行dpkg命令打包; 
步骤7:在源码修改需要再次制作软件包时,编译修改的部分,然后执行步骤6。 
所述预编译中将安装目录定义成一个独立的目录,预编译命令中加入prefix参数;所述目标文件的存放目录中包含目标文件、DEBIAN目录和rpm spec脚本。 
所述rpm spec脚本在%install将目标代码拷贝到目标文件的存放目录,%pre、%post、%preun、%postun根据需要添加操作;在%build部分不执行任何操作。 
所述的DEBIAN目录中按照deb包的规范添加所需要的脚本或为空,添加的脚本包括conffiles、postinst、postrm、preinst、prerm。 
所述的rpm软件包不包含spec文件和DEBIAN目录。 
所述的spec脚本中包含的%files内容为文件列表,可通过安装文件列表获取。 
本发明的方法实现了多个Linux发行版的软件包制作,同时还解决了传统Linux软件包制作方法每次制作都要重新执行源代码编译的问题,本发明只需要执行一次编译安装,后续的软件包制作能重复使用安装的目标文件。使用本发明的方法更能充分利用其搭建的开发环境,在软件编译依赖环境比较复杂的时候,能节省搭建环境的时间。 
附图说明
下面结合附图对本发明进一步说明: 
附图为本发明方法流程图。 
具体实施方式
如附图所示,本发明的方法中,先制作按照好源代码的编译依赖环境,执行预编译、编译和安装,在预编译的时候定义好安装目录到/opt/gcloud-gl/下,定义如下: 
./configure--prefix=/opt/gcloud-gl/; 
make; 
make istall 
编写脚本遍历安装目录,生成安装文件列表,遍历脚本如下: 
Figure BDA0000367247820000041
Figure BDA0000367247820000051
生成列表,命令如下: 
./list_alldir/var/log/>gcloud-gl.files 
编写rpm spec脚本,如下: 
Figure BDA0000367247820000052
Figure BDA0000367247820000061
因为不需要执行其他安装卸载步骤,DEBIAN下不需要添加其他文件。 
创建目标文件存放目录: 
mkdir/opt/gcloudGLpackage/ 
根据列表,把目标文件逐个拷贝到目标文件存放目录中 
Figure BDA0000367247820000062
Figure BDA0000367247820000071
打rpm软件包,命令如下: 
rpmbuild-bb gcloud-gl.spec 
打deb软件包,命令如下: 
dpkg-b$destdir$destdir"_".deb 。

Claims (7)

1.一种能用于多种系统下的Linux软件包制作方法其特征在于:包括如下步骤:
步骤1:搭建Linux软件的编译环境并执行一次预编译、编译和安装:
步骤2:遍历安装目录生成安装文件的列表;
步骤3:编写相应的rpm spec脚本文件和DEBIAN目录所需要的文件;
步骤4:新创建一个目标文件的存放目录;
步骤5:根据安装文件列表把已经安装好的目标文件逐个拷贝到目标文件存放目录;
步骤6:如果是RedHat及其衍生的发行版,执行rpmbuild命令打包;如果是Debian及其衍生的发行版,执行dpkg命令打包;
步骤7:在源码修改需要再次制作软件包时,编译修改的部分,然后执行步骤6。
2.根据权利要求1所述的Linux软件包制作方法,其特征在于:所述预编译中将安装目录定义成一个独立的目录,预编译命令中加入prefix参数;所述目标文件的存放目录中包含目标文件、DEBIAN目录和rpm spec脚本。
3.根据权利要求1所述的Linux软件包制作方法,其特征在于:所述rpm spec脚本在%install将目标代码拷贝到目标文件的存放目录,%pre、%post、%preun、%postun根据需要添加操作;在%build部分不执行任何操作。
4.根据权利要求2所述的Linux软件包制作方法,其特征在于:所述rpm spec脚本在%install将目标代码拷贝到目标文件的存放目录,%pre、%post、%preun、%postun根据需要添加操作;在%build部分不执行任何操作。
5.根据权利要求1至4任一项所述的Linux软件包制作方法,其特征在于:所述的DEBIAN目录中按照deb包的规范添加所需要的脚本或为空,添加的脚本包括conffiles、postinst、postrm、preinst、prerm。
6.根据权利要求3或4所述的Linux软件包制作方法,其特征在于:所述的rpm软件包不包含spec文件和DEBIAN目录。
7.根据权利要求3或4所述的Linux软件包制作方法,其特征在于:所述的spec脚本中包含的%files内容为文件列表,可通过安装文件列表获取。
CN201310357253.XA 2013-08-15 2013-08-15 一种能用于多种系统下的Linux软件包制作方法 Active CN103440156B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310357253.XA CN103440156B (zh) 2013-08-15 2013-08-15 一种能用于多种系统下的Linux软件包制作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310357253.XA CN103440156B (zh) 2013-08-15 2013-08-15 一种能用于多种系统下的Linux软件包制作方法

Publications (2)

Publication Number Publication Date
CN103440156A true CN103440156A (zh) 2013-12-11
CN103440156B CN103440156B (zh) 2016-11-09

Family

ID=49693847

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310357253.XA Active CN103440156B (zh) 2013-08-15 2013-08-15 一种能用于多种系统下的Linux软件包制作方法

Country Status (1)

Country Link
CN (1) CN103440156B (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104375891A (zh) * 2014-11-04 2015-02-25 普华基础软件股份有限公司 一种应用程序管理系统
CN104407856A (zh) * 2014-11-10 2015-03-11 北京国双科技有限公司 软件工具开发包文件的打包方法和装置
CN104461567A (zh) * 2014-12-24 2015-03-25 北京奇虎科技有限公司 软件包的发布方法及系统
CN104484172A (zh) * 2014-12-11 2015-04-01 上海天脉聚源文化传媒有限公司 一种文件打包的方法及装置
CN104572237A (zh) * 2015-01-19 2015-04-29 上海动联信息技术股份有限公司 一种UKey安装包自动快速生成系统及其方法
CN104765618A (zh) * 2015-05-06 2015-07-08 山东中孚信息产业股份有限公司 一种Linux系统自解压安装包的制作及解压安装方法
CN104866305A (zh) * 2015-04-30 2015-08-26 闻泰通讯股份有限公司 自识别最佳编译机制的方法
CN106406960A (zh) * 2016-09-28 2017-02-15 郑州云海信息技术有限公司 一种linux环境中快速部署软件的方法
CN110737459A (zh) * 2019-10-18 2020-01-31 浪潮软件集团有限公司 一种Linux RPM安装包快速定制方法
CN111258595A (zh) * 2020-03-13 2020-06-09 山东超越数控电子股份有限公司 一种基于PyInstaller的python源代码封装方法
CN111831291A (zh) * 2020-06-22 2020-10-27 中孚信息股份有限公司 一种安装包转换构建及转换系统及方法
CN112230976A (zh) * 2020-09-01 2021-01-15 麒麟软件有限公司 同时支持两种软件包管理器并支持软件包相互依赖及冲突检测的方法
CN112286531A (zh) * 2020-09-21 2021-01-29 麒麟软件有限公司 Redhat系发行版中实现RPM包管理工具切换为DPKG包管理工具的方法
CN114610373A (zh) * 2022-02-25 2022-06-10 麒麟软件有限公司 一种基于VSCode集成开发环境快速制作RPM或DEB软件包的方法及插件工具
CN116661904A (zh) * 2023-07-27 2023-08-29 中电科申泰信息科技有限公司 一种基于申威平台的AppImage应用软件打包装置及其方法
CN116909569A (zh) * 2023-07-24 2023-10-20 中科驭数(北京)科技有限公司 deb软件包的制作方法、装置、设备及存储介质
CN117251165A (zh) * 2023-08-24 2023-12-19 上海合芯数字科技有限公司 Buildroot编译方法、装置、终端及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080127088A1 (en) * 2006-11-27 2008-05-29 Red Hat, Inc. Cross-platform software package generation
CN102622226A (zh) * 2012-02-24 2012-08-01 中标软件有限公司 一种生成Linux软件包仓库的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080127088A1 (en) * 2006-11-27 2008-05-29 Red Hat, Inc. Cross-platform software package generation
CN102622226A (zh) * 2012-02-24 2012-08-01 中标软件有限公司 一种生成Linux软件包仓库的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JON MASTERS 等: "《Linux高级程序设计》", 31 July 2008, article "《Linux高级程序设计》", pages: 48-51,54,56-57,59 *
WAYDEE: "Linux-轻松定义自己的RPM/DEB软件包", 《HTTP://WAYDEE.BLOG.51CTO.COM/4677242/834002》, 14 April 2012 (2012-04-14) *

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104375891A (zh) * 2014-11-04 2015-02-25 普华基础软件股份有限公司 一种应用程序管理系统
CN104407856B (zh) * 2014-11-10 2018-02-02 北京国双科技有限公司 软件工具开发包文件的打包方法和装置
CN104407856A (zh) * 2014-11-10 2015-03-11 北京国双科技有限公司 软件工具开发包文件的打包方法和装置
CN104484172A (zh) * 2014-12-11 2015-04-01 上海天脉聚源文化传媒有限公司 一种文件打包的方法及装置
CN104461567A (zh) * 2014-12-24 2015-03-25 北京奇虎科技有限公司 软件包的发布方法及系统
CN104461567B (zh) * 2014-12-24 2019-02-26 北京奇虎科技有限公司 软件包的发布方法及系统
CN104572237B (zh) * 2015-01-19 2017-12-12 上海动联信息技术股份有限公司 一种UKey安装包自动快速生成系统及其方法
CN104572237A (zh) * 2015-01-19 2015-04-29 上海动联信息技术股份有限公司 一种UKey安装包自动快速生成系统及其方法
CN104866305A (zh) * 2015-04-30 2015-08-26 闻泰通讯股份有限公司 自识别最佳编译机制的方法
CN104765618B (zh) * 2015-05-06 2017-12-08 中孚信息股份有限公司 一种Linux系统自解压安装包的制作及解压安装方法
CN104765618A (zh) * 2015-05-06 2015-07-08 山东中孚信息产业股份有限公司 一种Linux系统自解压安装包的制作及解压安装方法
CN106406960A (zh) * 2016-09-28 2017-02-15 郑州云海信息技术有限公司 一种linux环境中快速部署软件的方法
CN106406960B (zh) * 2016-09-28 2020-09-15 苏州浪潮智能科技有限公司 一种linux环境中快速部署软件的方法
CN110737459A (zh) * 2019-10-18 2020-01-31 浪潮软件集团有限公司 一种Linux RPM安装包快速定制方法
CN110737459B (zh) * 2019-10-18 2023-06-02 浪潮软件集团有限公司 一种Linux RPM安装包快速定制方法
CN111258595A (zh) * 2020-03-13 2020-06-09 山东超越数控电子股份有限公司 一种基于PyInstaller的python源代码封装方法
CN111831291A (zh) * 2020-06-22 2020-10-27 中孚信息股份有限公司 一种安装包转换构建及转换系统及方法
CN112230976A (zh) * 2020-09-01 2021-01-15 麒麟软件有限公司 同时支持两种软件包管理器并支持软件包相互依赖及冲突检测的方法
CN112230976B (zh) * 2020-09-01 2023-07-18 麒麟软件有限公司 同时支持两种软件包管理器并支持软件包相互依赖及冲突检测的方法
CN112286531A (zh) * 2020-09-21 2021-01-29 麒麟软件有限公司 Redhat系发行版中实现RPM包管理工具切换为DPKG包管理工具的方法
CN112286531B (zh) * 2020-09-21 2023-07-04 麒麟软件有限公司 Redhat系发行版中实现RPM包管理工具切换为DPKG包管理工具的方法
CN114610373A (zh) * 2022-02-25 2022-06-10 麒麟软件有限公司 一种基于VSCode集成开发环境快速制作RPM或DEB软件包的方法及插件工具
CN116909569A (zh) * 2023-07-24 2023-10-20 中科驭数(北京)科技有限公司 deb软件包的制作方法、装置、设备及存储介质
CN116661904A (zh) * 2023-07-27 2023-08-29 中电科申泰信息科技有限公司 一种基于申威平台的AppImage应用软件打包装置及其方法
CN116661904B (zh) * 2023-07-27 2023-10-13 中电科申泰信息科技有限公司 一种基于申威平台的AppImage应用软件打包装置及其方法
CN117251165A (zh) * 2023-08-24 2023-12-19 上海合芯数字科技有限公司 Buildroot编译方法、装置、终端及介质

Also Published As

Publication number Publication date
CN103440156B (zh) 2016-11-09

Similar Documents

Publication Publication Date Title
CN103440156A (zh) 一种能用于多种系统下的Linux软件包制作方法
EP3336690B1 (en) Extensible data transformation authoring and validation system
US10445334B1 (en) Query transmission in type-limited interchange formats
US9519466B2 (en) Executable code for constrained computing environments
US8914780B2 (en) Incremental generation of managed assemblies
US20190369979A1 (en) Distributing file system states
CN102147743A (zh) 加快嵌入式系统应用程序启动速度的方法
CN103838573A (zh) 应用程序生成方法及装置
CN103761087A (zh) 一种移动应用程序跨平台开发方法及装置
CN103517141A (zh) 基于ip机顶盒分段式数据升级方法
CN103218428B (zh) 一种动态链接方法及系统
CN103324474A (zh) 基于Linux操作系统跨体系构造ISO的方法及模块
CN106202158A (zh) 一种图形文件格式的使用方法及装置
CN105468428A (zh) 一种安卓源代码编译方法及系统
CN103761107A (zh) 软件包定制的装置及方法
CN103645888A (zh) 一种自动构建操作系统的系统及方法
CN104991810A (zh) 自动添加apk到安卓系统中的方法及处理系统
CN104216721A (zh) 一种在操作系统启动之前下发配置的方法
US10936541B2 (en) Preserving symbolic links and paths in a file system using an intermediate file system structure
CN104484207A (zh) 交换机的镜像升级方法及适用的linux操作系统和交换机
US20160283226A1 (en) Smart hashing to reduce server memory usage in a distributed system
KR102141749B1 (ko) App 프로그램 실행 방법 및 장치
CN111984595B (zh) 一种文件处理方法及装置、存储介质
CN104572876A (zh) 一种软件对应配置文件的读取方法和装置
CN111258595A (zh) 一种基于PyInstaller的python源代码封装方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP02 Change in the address of a patent holder

Address after: 523808 19th Floor, Cloud Computing Center, Chinese Academy of Sciences, No. 1 Kehui Road, Songshan Lake Hi-tech Industrial Development Zone, Dongguan City, Guangdong Province

Patentee after: G-Cloud Technology Co., Ltd.

Address before: 523808 No. 14 Building, Songke Garden, Songshan Lake Science and Technology Industrial Park, Dongguan City, Guangdong Province

Patentee before: G-Cloud Technology Co., Ltd.

CP02 Change in the address of a patent holder