收藏 分享(赏)

linux下软件发布技巧.doc

上传人:cjc2202537 文档编号:171372 上传时间:2018-03-23 格式:DOC 页数:5 大小:93KB
下载 相关 举报
linux下软件发布技巧.doc_第1页
第1页 / 共5页
linux下软件发布技巧.doc_第2页
第2页 / 共5页
linux下软件发布技巧.doc_第3页
第3页 / 共5页
linux下软件发布技巧.doc_第4页
第4页 / 共5页
linux下软件发布技巧.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、Linux 下软件发布技巧作者:杨鹏 发文时间:2003.04.21Linux 现在能够被越来越多的人认识及使用,在很大程度上可以归结为其具有强大的 C 编译器gcc、便于交流的环境Internet,以及雄厚的师资有数不清的程序员在开发数不清的代码。 有了 Linux 和 Internet,我们可以很容易地在世界范围内发布软件作品,与他人交流开发心得与技巧。当我们完成了自己的软件作品,怎么样才能让其他人以快捷、方便的方式与自己分享成果、理解开发思想呢?这就是我们要讨论的 Linux 下软件打包和发布的方法。 在 Linux 尚未流行之前,Linux 下软件打包和发布应用仅仅停留在程序员中,因此

2、软件分发基本都使用源代码方式,便于大家相互学习和交流。随着大量普通用户和商业应用的参与,源代码方式就显得过于繁琐,对用户要求太高,而且耗费时间,所以编译好的二进制文件发布方式开始流行起来。这就是 Linux 下两种主要的软件发布方式:源代码方式和二进制方式。源代码方式通常是将源文件以 tar、tgz 格式打包,解包后进行配置、编译和安装;二进制方式以Red Hat 公司的 RPM(Red Hat Package Manager)格式最广泛,它可以完成所有的步骤,自动将软件安装到系统中。 tgz 源代码方式 使用这种源代码方式发布的软件,一般需要进行下列步骤: 1.解开压缩文件,如 tar、gz

3、、bz2 或 tgz。 2.执行./configure -options 进行软件的配置。 3.执行 make、make install 等命令编译代码,并安装到系统中。 因此,如果要发布软件,就需要生成可供配置的 configure 文件和进行编译安装的Makefile。 下面以一个简单的例子来说明。假设要发布一个标准的 hello 程序,它打出“Hello, world!”的文字,该源程序命名为 hello.c。在这个目录下(注意只有源文件 hello.c,不需要编译 hello.o 或者 hello) ,首先执行命令 autoscan: $autoscan这样会生成 configure.

4、scan 文件,它包含了系统配置的基本选项。作为一个简单的例子,其中很多东西是不需要的,所以可以修改这个文件,让它仅仅包含下面几行: AC_INIT(hello.c)AM_INIT_AUTOMAKE(hello, 0.1)AC_PROG_CCAC_OUTPUT(Makefile)然后把这个文件复制为 configure.in,作为配置的输入文件。 由于使用了 m4 宏(AM_INIT. 语句) ,必须运行 aclocal 命令生成相应的宏文件: $aclocal在当前目录中会产生 aclocal.m4 文件。 然后执行 autoconf,以生成 configure 执行脚本: $autocon

5、f这样关于配置的部分就完成了,下面是和编译生成有关的。 我们需要手工编辑一个文本文件Makefile.am,内容如下: AUTOMAKE_OPTIONS=foreignbin_PROGRAMS=hellohello_SOURCES=hello.c这个文件应该很好理解,foreign 告诉系统这是一个普通的应用软件,该程序名称为 hello,而 hello 程序包含的源程序( SOURCES)只有 hello.c 这个文件。接着执行: $automake -add-missingautomake 会自动生成所有必须的文件,包括 Makefile.in 等重要文件。 最后进行压缩、打包,整个工作就

6、完成了。 获得这个压缩包的用户只需要进行前面提到的三个安装步骤,就可以顺利地得到 hello 应用程序了。 RPM 二进制方式 正如前面介绍的,使用源代码方式发布软件无论是对作者还是用户都比较麻烦。于是,Red Hat 公司开发出一种直接安装编译好的二进制文件方式,并可根据不同的平台发布不同的版本。用户只需要一个命令,就可以完成所有要安装的步骤,十分适合普通用户使用。那么,如何把自己的软件制作成 RPM 包呢? 下面以 Red Hat Linux 为例,在默认情况下,和 RPM 包相关的目录是/usr/src/redhat/ 下的SOURCES、SPECS 和 RPMS。其中 SOURCES

7、目录存放需要制作的源代码文件,一般是 tgz 格式压缩;SPECS 目录存放编写的 spec 文件,这些文件指示 RPM 制作工具如何进行打包工作;而 RPMS 下有 i386、i586、noarch 等子目录,分别对应不同的体系结构,如 Intel 80386、586 处理器等,noarch 则是通用的,制作完成的 RPM 包就存放在这些目录中。 仍然以前面的 hello 为例,直接将 hello.c 压缩成 hello.tgz 格式: $tar cfvz hello.tgz hello.c然后把 hello.tgz 拷贝到/usr/src/redhat/SOURCES 下,并在/usr/s

8、rc/redhat/SPECS/ 下编写一个简单的 hello.spec 文件,内容如下: Name: hello programSummary: My first linux software Version: 0.1Release: 1Copyright: OpenSourceGroup: Extensions/ChineseSource: hello.tgzPackager: NetSnake%descriptionThis is a example software, just for see README for detail, NetSnake, some day.%changel

9、og*Fri Dec 27 2002 NetSnake-build for the first time.%prep%setup %buildmake hello%installinstall -m 755 hello /usr/local/bin/hello%files%doc README/usr/local/bin/hello这个 spec 文件是整个制作过程的关键,它控制着整个软件包的制作流程,因此我们需要仔细分析一下。 前面的 Name、Summary 等都是关于软件性质、版本等的说明,可以看作是一个概述和总揽,其中 Version 和 Release 将会影响到生成软件包的名称。例

10、如这里版本是 0.1,发布是 1,那么做出来的 RPM 包就是 hello-0.1-1.i386.rpm。而 Group 指的是在 X-Window 下生成快捷方式的位置,Chinese 就是在 “中文”下生成子目录。然后就进入了具体的制作流程,所有以“%”开头的宏语句都表示制作流程中的一步。 由此不难看出,制作过程大概需要这样几步: %description 是对整个软件的注释,比如写一些粗略的功能说明,可以分成若干行; %prep 和%setup 可以认为是预处理阶段,对于小软件来说没什么实质性用途; 接下来就是 %build 阶段,这时候会将所有打包文件解开,并根据实际情况将源文件编译为

11、二进制文件(make hello) ; Build 完成之后是%install,这个步骤通过%config 、%file、%doc 等宏将编译好的软件、文档、配置文件等安装到指定的位置; 最后是所有被安装到系统中的文件列表。 这就是整个 RPM 包安装过程。它与 Makefile 比较起来要简单得很多,因为它将所有操作集中到一个文件中,非常有利于整理和纠错。 接下来就需要执行,以生成自己的 RPM 软件包: $rpm -ba hello.spec需要注意的是,在新版本的 Red Hat 8.0 下,制作 RPM 包的命令已经完全从 rpm 命令中分离出来,成为了一个单独的 rpmbuild,所以应该是 rpmbuild -ba hello.spec。 如果不用-target=i486i586.指定体系结构,默认会是 i386,这样,会在/usr/src/redhat/RPMS/i386/下生成 hello-xx-xxx.i386.rpm 文件。 总的来说,源代码方式的缺点是用户安装比较麻烦,而且容易出现各种错误;优点是可控制性强、灵活。RPM 方式刚好相反,用户安装简单,易于使用,但是基本不能按照自己的意思对软件进行配置。这两种发布方法各有千秋,具体选择哪种发布方式可以根据自己的需要确定。(责任编辑:西门吹雪)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报