CN103440156A - 一种能用于多种系统下的Linux软件包制作方法 - Google Patents
一种能用于多种系统下的Linux软件包制作方法 Download PDFInfo
- 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
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种能用于多种系统下的Linux软件包制作方法。本发明首先搭建好Linux软件的编译环境并执行一次预编译、编译和安装,然后生成安装文件的列表,再将已经安装好的目标文件逐个拷贝到目标文件存放目录中,最后执行Linux软件包制作的命令把目标文件生成软件包。本发明实现了一种能用在多个Linux发行版的软件包制作方法,同时还解决了传统Linux软件包制作方法每次制作都要重新执行源代码编译的问题;本发明的方法可应用于Linux软件包制作。
Description
技术领域
本发明涉及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
编写脚本遍历安装目录,生成安装文件列表,遍历脚本如下:
生成列表,命令如下:
./list_alldir/var/log/>gcloud-gl.files
编写rpm spec脚本,如下:
因为不需要执行其他安装卸载步骤,DEBIAN下不需要添加其他文件。
创建目标文件存放目录:
mkdir/opt/gcloudGLpackage/
根据列表,把目标文件逐个拷贝到目标文件存放目录中
打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内容为文件列表,可通过安装文件列表获取。
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)
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)
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软件包仓库的方法 |
-
2013
- 2013-08-15 CN CN201310357253.XA patent/CN103440156B/zh active Active
Patent Citations (2)
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)
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)
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 |