- 浏览: 426043 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
Glogo:
楼主您好,我在试验您的代码的时候发现新开的三个子线程并没有一直 ...
java 高并发 ReentrantLock -- 可重入的锁 -
univasity:
最近发觉也被限速了,投诉一下就好一会~~ 看来明天又要和电信M ...
ADSL上网速度慢 都是帐号限速惹的祸 -
liuyuanhui0301:
java 高并发 ReentrantLock -- 可重入的锁 -
dang_java:
呵.很好的说明文档.
JXTA技术与应用发展 -
helloqidi:
谢谢,学习了
SQL中exists和in的区别
我最早使用redhat就是冲着Rpm包来的,可是不久我就发现Rpm的缺点并非所有的软件都有Rpm包,而且各个版本的Linux之间的Rpm不能通用,于是便有将部分软件制作rpm的念头。几天前看到一篇东西,转贴过来,有空再试。
随着RedHat Linux的风靡全球,其软件包管理工具及格式RPM也得到推广。基于RPM源代码开放、安装卸载简单、升级维护方便及查询功能强大的特点,越来越多的开发者喜欢采用RPM格式来发布自己的软件包,更多的用户从中受益。那么,RPM软件包是怎样制作的呢?
其实,制作RPM软件包并不是一件复杂的工作,其中的关键在于编写SPEC软件包描述文件。下面以我制作小赵编辑器LZE的软件包(lze-6.0-1.i386.rpm)为例,详细说明一下软件包的制作过程。
1.mkdir -p /usr/src/dist/{BUILD,RPMS/i386}
上述命令用于创建两个目录/usr/src/dist/BUILD与/usr/src/dist/RPMS/i386,前一个目录是RPM建立软件包时用的目录,后一个是RPM输出软件包的目录,我的LZE软件包lze-6.0-1.i386.rpm就是在此目录下存放的。这两个目录不创建,运行rpm命令建包时将报错退出。
注意:输出目录名i386,意味着这是台X86的机器。如果你的机器与此体系不同,则目录名也要相应更换。
2.编写软件包描述文件lze-6.0-1.spec
要想制作一个软件包,就必须写一个软件包描述文件(SPEC)。这个文件中包含了软件包的诸多信息,如软件包的名字,版本,类别,说明摘要,创建时要执行什么指令,安装时要执行什么操作,以及软件包所要包含的文件列表等等。
LZE软件包描述文件lze-6.0-1.spec比较简单,仅用于创建二进制程序包。其描述文件内容如下:(每行开头的数字为所在行在文件中的行号)
1 Summary:小赵全屏幕中英文多窗口多功能编辑器(Linux/UNIX系统适用)
2 Name:lze
3 Version:6.0
4 Release:1
5 Vendor:纵横软件制作中心(Email:zhsoft@etang.com)
6 Copyright:Share
7 Group:Applications/Editors
8 Source:http://zhsoft.myetang.com/lze-6.0.tar.gz
9 %description
10 小赵编辑器,是为使用SCO UNIX,Linux多用户系统的广大用户专门设计的全屏幕多窗
11 口中英文多功能编辑器。
12 它主要有以下十大特点:1.全屏幕菜单操作。2.显示方式多样。3.块操作丰富。4.十
13 字制表功能强大。5.多窗口操作灵活自如。6.文件操作功能齐全。7.解释输出功能独具特
14 色。8.自带中文输入法(增强五笔和增强拼音),实用方便。9.十六进制编辑功能,如虎
15 添翼。10.即时翻译,按到即译。
16 总之,小赵编辑器会成为您在UNIX,Linux系统上编制程序和书写一般性文稿的好帮手。
17 它将在工作中助您一臂之力,轻松上阵,游刃有余!
18
19 %prep
20 # prep start.
21
22 %build
23 # build start.
24 cp /root/{读我,版权声明} .
25
26 %install
27 # install start.
28
29 %files
30 %defattr (-,root,root)
31 %doc 读我
32 %doc 版权声明
33 %config /etc/funkey.def
34 %config /etc/inputme.def
35
36 /usr/bin/lze
37 /usr/bin/lzeime.py
38 /usr/bin/lzeime.wb
39
40 %changelog
41
42 * Fri May 1 1998 雨亦奇
43 - 增加多窗口操作
44
45 * Mon Mar 24 1997 雨亦奇
46 - 增加块操作命令
47
描述文件说明如下:
(1)文件头
它包含以下几个域:
* Summary:
软件包一句话说明,一行有效。
* Name:
软件包的名字,RPM用该名字与版本号,释出号及体系号来命名软件包。如,本例输出的软件包名为lze-6.0-1.i386.rpm。
* Version:
软件版本号。仅当软件较以前有较大改变时才增加版本号。
* Release:
软件释出号。若软件较以前改变较小,则仅增加释出号,不改变版本号。
* Vendor:
软件开发者的名字。
* Copyright:
软件包所采用的版权规则。具体有: GPL(自由软件),BSD,MIT,Public Domain(公共域),Distributable(贡献),commercial(商业),Share(共享)等。
* Group:
软件包所属类别,具体类别有:
Amusements/Games (娱乐/游戏)
Amusements/Graphics(娱乐/图形)
Applications/Archiving (应用/档案)
Applications/Communications(应用/通讯)
Applications/Databases (应用/数据库)
Applications/Editors (应用/编辑器)
Applications/Emulators (应用/仿真器)
Applications/Engineering (应用/工程)
Applications/File (应用/文件)
Applications/Internet (应用/因特网)
Applications/Multimedia(应用/多媒体)
Applications/Productivity (应用/产品)
Applications/Publishing(应用/印刷)
Applications/System(应用/系统)
Applications/Text (应用/文本)
Development/Debuggers (开发/调试器)
Development/Languages (开发/语言)
Development/Libraries (开发/函数库)
Development/System (开发/系统)
Development/Tools (开发/工具)
Documentation (文档)
System Environment/Base(系统环境/基础)
System Environment/Daemons (系统环境/守护)
System Environment/Kernel (系统环境/内核)
System Environment/Libraries (系统环境/函数库)
System Environment/Shells (系统环境/接口)
User Interface/Desktops(用户界面/桌面)
User Interface/X (用户界面/X窗口)
User Interface/X Hardware Support (用户界面/X硬件支持)
* Source:
源程序软件包的名字。
* %description:
软件包具体说明,可写在多个行上。示例中第10-18行均为说明。
(2)%prep段
这个段是预处理段,通常用来执行一些解开源程序包的命令,为下一步的编译安装作准备。%prep和下面%build,%install段一样,除了可以执行RPM所定义的宏命令(以%开头)以外,还可以执行SHELL命令,命令可以有很多行。示例中,本段只有第20行一行注释语句(以#开头),不执行任何操作。
(3)build段
本段是建立段,所执行的命令为生成软件包服务。
本段第23行是注释行,第24行执行的是拷贝命令,将/root目录下的两个文件(读我,版权声明)拷贝到软件包建立目录(/usr/src/dist/BUILD)。
(4)%install段
本段是安装段,其中的命令在安装软件包时将执行。示例中,本段只有第27行一行注释语句(以#开头),不执行任何操作。
(5)%files段
本段是文件段,用于定义软件包所包含的文件,分为三类--说明文档(doc),配置文件(config)及执行程序,还可定义文件存取权限,拥有者及组别。本段中:
第30行-%defattr宏:定义文件存取权限为默认值(用-表示默认值,也可选择八进制数值,如0777等),定义拥有者为root,定义组别为root。
第31,32行-%doc宏:用该宏定义软件包所含的说明文档,若没有指定目录,则目录为/usr/src/dist/BUILD。每个宏只能定义一个说明文档。说明文档一般安装在“/usr/doc/软件包名-版本号-释出号”目录下。
第33,34行-%config宏:定义软件包应用的配置文件,象sendmail.cf,passwd等。当卸载含有配置文件的软件包时,任何未作改动的配置文件将被删除,改动过的配置文件将自动改名,后缀加上.rpmsave,以便再度安装这个软件包时可以迅速恢复使用。
第36-38行-为软件包所包含的文件名列表,可以写许多行。如果文件名指示的是一个目录,则该目录下的所有文件将被包含在软件包中,注意不要弄错了。
(6)%changelog段
本段是修改日志段。你可以将软件的每次修改记录到这里,保存到发布的软件包中,以便查询之用。
每一个修改日志都有这样一种格式:第一行是:* 星期 月 日 年 修改人 电子信箱。
其中:星期、月份均用英文形式,用中文会出错。
接下来的行写的应是修改了什么地方,可写多行。一般以减号起始,便于查阅。
3.rpm -bb lze-6.0-1.spec
用此命令生成软件包,执行后屏幕将显示如下信息:(每行开头为行号)
1 Executing: %prep
2 + umask 022
3 + cd /usr/src/dist/BUILD
4 + exit 0
5 Executing: %build
6 + umask 022
7 + cd /usr/src/dist/BUILD
8 + cp /root/读我 /root/版权声明.
9 + exit 0
10 Executing: %install
11 + umask 022
12 + cd /usr/src/dist/BUILD
13 + exit 0
14 Processing files: lze
15 Executing: %doc
16 + umask 022
17 + cd /usr/src/dist/BUILD
18 + DOCDIR=/usr/doc/lze-6.0
19 + export DOCDIR
20 + rm -rf /usr/doc/lze-6.0
21 + /bin/mkdir -p /usr/doc/lze-6.0
22 + cp -pr 读我 /usr/doc/lze-6.0
23 + cp -pr 版权声明 /usr/doc/lze-6.0
24 + exit 0
25 Finding Provides: (using /usr/lib/rpm/find-provides)...
26 Finding Requires: (using /usr/lib/rpm/find-requires)...
27 Requires: ld-Linux.so.2 libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1)
28 Wrote: /usr/src/dist/RPMS/i386/lze-6.0-1.i386.rpm
第28行显示: 制作完成软件包,名字为lze-6.0-1.i386.rpm,在/usr/src/dist/RPMS/i386目录下。
4.软件包制作完成后,可用以下命令查询一下,看看效果。如果不满意的话,可以再次修改软件包描述文件,重新运行上一步命令,产生新的RPM软件包。
转到/usr/src/dist/RPMS/i386目录,执行以下命令:
(1)rpm -qpi lze-6.0-1.i386.rpm
此命令用于查询指定软件包的头部信息,结果如下:(以行号开头)
1 Name: lze Relocations: (not relocateable)
2 Version : 6.0 Vendor: 纵横软件制作中心(Email:zhsoft@etang.com)
3 Release : 1 Build Date: 2001年07月12日 星期四 13时33分21秒
4 Install date: (not installed) Build Host: 纵横软件制作中心
5 Group : Applications/Editors Source RPM: lze-6.0-1.src.rpm
6 Size: 532081 License: Share
7 Summary : 小赵全屏幕中英文多窗口多功能编辑器(Linux/UNIX系统适用)
8 Description :
9 小赵编辑器,是为使用SCO UNIX,Linux多用户系统的广大用户专门设计的全屏幕多窗
10 口中英文多功能编辑器。
11 它主要有以下十大特点:1.全屏幕菜单操作。2.显示方式多样。3.块操作丰富。4.十
12 字制表功能强大。5.多窗口操作灵活自如。6.文件操作功能齐全。7.解释输出功能独具特
13 色。8.自带中文输入法(增强五笔和增强拼音),实用方便。9.十六进制编辑功能,如虎
14 添翼。10.即时翻译,按到即译。
15 总之,小赵编辑器会成为您在UNIX,Linux系统上编制程序和书写一般性文稿的好帮手。
16 它将在工作中助您一臂之力,轻松上阵,游刃有余!
(2)rpm -qpl lze-6.0-1.i386.rpm
此命令用于查询指定软件包的全部文件列表,将命令中的-qpl换作-qpd,将显示文档文件列表,换作-qpc将显示配置文件列表。
命令执行结果如下:(行号开头)
1 /etc/funkey.def
2 /etc/inputme.def
3 /usr/bin/lze
4 /usr/bin/lzeime.py
5 /usr/bin/lzeime.wb
6 /usr/doc/lze-6.0
7 /usr/doc/lze-6.0/版权声明
8 /usr/doc/lze-6.0/读我
查询结果一切正常,软件包制作到此结束。
小结
在Linux下制作RPM软件包关键在描述文件,写起来着实简单,根据上述步骤生成软件包后,就可以对外发布了。在其它机器上用安装命令(rpm -i 包名)可安装这个软件包,若想卸载,可用命令(rpm -e 包名)来卸载这个包,非常方便。
发表评论
-
Linux的tmpfs文件系统
2012-05-02 17:46 7178前几天发现服务器的内存(ram)和swap使用率非常低,于是就 ... -
iostat来对linux硬盘IO性能进行检测
2012-03-22 18:11 1004近期公司安装了几台DELL ... -
Softlinks vs. Hardlinks: A Quick Explanation
2012-01-18 15:04 1267I got this question in an ema ... -
查看linux 线程
2011-11-22 11:35 880查看linux 线程 博客分类: linux ... -
Linux学习总结—缺页中断和交换技术
2011-05-18 11:00 2543三、Linux缺页中断处理1.请求调页中断:进程线性地址空间里 ... -
Linux学习总结—Linux调度器分析
2011-05-18 10:58 1683四、Linux调度器分析1.Linux2.6调度器的特性2.6 ... -
Linux内存分段和分页管理
2011-05-18 10:56 21071.x86 内存架构和Linux的分段管理x86 内存架构在 ... -
Linux启动分析
2011-05-18 10:54 1055一、系统引导过程总体 ... -
Linux自动启动服务
2010-09-23 13:08 950linux自动启动服务很简单,最简单的是把启动命令放到/etc ... -
linux设置ip.dns.gateway
2009-06-11 15:05 1945静态方法注意:所有操作均使用root用户 #ifcon ... -
RPM包rpmbuild SPEC文件深度说明
2009-05-21 14:28 1801上一篇日志写到,为什么要制作rpm包,以及如何使用.src.r ... -
调整swap分区大小
2009-02-10 16:51 1873方法一:如果磁盘有剩余的空间,用分区工具新建一个swap分区. ... -
非常实用的Ubuntu命令大全
2008-12-03 15:05 1298非常实用的Ubuntu命令大全 ... -
Linux操作系统上Lsof命令详解
2008-12-03 14:33 1325一般root用户才能执行lsof命令,普通用户可以看见/u ... -
DOS/Windows和Linux/Unix间的文件格式转换
2008-12-03 11:15 1947DOS/Windows和Linux/Unix间 ... -
syntax error: unexpected end of file
2008-12-03 11:02 3654dos文件转换成unix文件格式 dos格式文件传输到u ... -
BASH中getopts的用法
2008-12-02 15:22 1515getopts optstring varname [arg ... -
正则表达式之grep
2008-07-10 19:21 2432grep 的名称实际上就来 ... -
Linux基本命令
2008-07-10 18:31 1281进入Linux系统:必须要输入用户的账号,在系统安装过程中可以 ... -
Linux文件系统
2008-07-10 18:27 9411、Linux文件系统是从/开始的 在Linux操作系统 ...
相关推荐
要使用OpenSSH 9.8的源码包制作RPM包,你需要遵循一系列步骤,包括安装必要的工具、准备源码、编写RPM规范文件(spec file),然后构建RPM包。以下是一个基本的指南: 1. 安装必要的工具 首先,确保你的系统上安装...
使用 Gradle 制作 RPM 包需要了解 RPM 包的制作过程和 Gradle 的插件机制,通过 gradle-ospackage-plugin 插件可以轻松地生成 RPM 包,同时也需要了解一些基本的 RPM 命令来管理和控制 RPM 包。
制作RPM包通常需要用到`rpmbuild`工具。它会根据`spec`文件来构建RPM。`spec`文件是RPM包的核心,定义了软件的元数据、依赖关系、安装步骤等。 3. **`spec`文件详解** - `%name`: 软件的名称,如`hellow`. - `%...
【标题】中的“zlib1.2.11RPM包,基于CentOS7制作”指的是一款名为zlib的库软件,版本为1.2.11,它被封装成RPM(Red Hat Package Manager)格式的安装包,适用于CentOS 7操作系统。RPM是一种在Linux系统中广泛使用的...
总结来说,将Nginx源码包制作成RPM包的过程主要包括:安装`rpm-build`工具,设置`rpmbuild`目录结构,准备源码和spec文件,创建并编辑spec文件,安装依赖,然后使用`rpmbuild`命令生成RPM包。这样做可以使得Nginx...
yum localinstal nginx-1.6.3-1.x86_64.rpm 定制包安装过程 1: FPM 打包工具安装 修改yum源: 备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 安装阿里云yum源 wget ...
《OpenSSH 7.8p1 RPM包详解与应用》 OpenSSH,全称为Open Source Secure Shell,是一款广泛使用的安全网络服务,它提供了在不安全的网络上进行安全远程登录和其他网络服务的功能。OpenSSH 7.8p1是其在2018年发布的...
6. **测试RPM包**:在目标ARM设备上安装生成的RPM包,验证功能和性能。 在X86_64架构下构建`openssh`和`openssl`的RPM包相对简单,因为无需考虑交叉编译。只需确保系统上已安装了`rpmbuild`工具和必要的依赖,然后...
安装keepalived时缺少的一些包,收集起来共享,包括 autoconf-2.63-5.1.el6.noarch.rpm automake-1.11.1-1.2.el6.noarch.rpm cluster-glue-1.0.5-2.el6.i686.rpm cluster-glue-libs-1.0.5-2.el6.i686.rpm cluster-...
制作RPM包的过程包括以下步骤: 1. **获取源码**:从Apache官方网站下载HTTP服务器的2.4.37源码包。 2. **构建环境准备**:确保系统中安装了必要的编译工具和依赖库,如GCC编译器、Make、autoconf等。 3. **解压...
本人2024年5月26日制作的openssh9.7P1的rpm包,适用于CentOS7.*系列和redhat el7系列,el7 包含以下文件: openssh-9.7p1-1.el7.x86_64.rpm openssh-clients-9.7p1-1.el7.x86_64.rpm openssh-server-9.7p1-1.el7.x86...
Linux下的RPM打包制作流程是将软件源代码转化为可供Linux系统安装的RPM包的过程,这一过程涉及到多个步骤和配置文件。RPM(Red Hat Package Manager)是一种广泛应用于Linux发行版的软件包管理器,它使得软件的安装...
- 安装必要的工具,如`rpm-build`和`rpmbuild`,它们提供了一套用于构建RPM包的命令行工具。 3. **SPEC文件**: - **SPEC文件**是RPM打包的核心,它定义了软件包的属性,包括版本、源代码位置、编译选项、依赖...
精心制作的RPM包,直接yum install 同时4个rpm,即可升级完毕。 openssh-8.0p1-1.el7.x86_64.rpm systemctl start sshd cd /etc/ssh/ chmod 400 ssh_host_ecdsa_key ssh_host_ed25519_key ssh_host_rsa_key echo ...
为了安装 openssh-9.7p1 rpm 包,用户需要使用 RPM 包管理器,如 `yum` 或 `dnf`,执行相应的安装命令。确保先备份现有版本,以防出现兼容性或配置问题。安装后,应根据需要更新配置文件,并重启 sshd 服务以应用...
在本案例中,"openssh9.0 for centos6 rpm包"即为适用于CentOS 6的OpenSSH 9.0的RPM安装文件。 安装OpenSSH 9.0前,确保系统已经更新到最新状态,因为旧版本的库和依赖可能会导致兼容性问题。执行以下命令以更新...
将openssh-9.7p1的rpm包上传到本地服务器 进入openssh9.7p1文件夹,里面包含openssh-9.7p1升级的rpm包 查看当前openssh的版本 使用yum localinstall openssh-*.rpm 进行更新 授权,重启服务,设置开机自启 查看...
首先,要制作RPM包,你需要在你的Linux系统上安装`rpmbuild`工具。对于Fedora、CentOS或Redhat系统,可以使用`yum install rpmbuild -y`命令;而对于Ubuntu系统,应使用`apt-get install rpmbuild`。 接下来,我们...
此资源包含了在CentOS 7上安装和升级OpenSSH 9.0的RPM包和升级脚本,这对于系统管理员来说非常有用,因为保持OpenSSH的安全性和最新性是维护系统安全的关键。 首先,我们来详细了解一下OpenSSH 9.0的新特性和改进。...