掌握spec只需读这一篇文章,CentOS、RedHat、SUSE粉的福利来了

什么是 spec(配置规范文件)?RPM 编译过程的核心是处理 .spec 文件。它说明了软件包怎样被配置,补缀哪些补丁,安装哪些文件,被安装到哪里,在安装该包之前或之后需要运行哪些系统级别的活动。它必须手写,但更简单的办法是拿来他人写好的,在此基础上修改。RPM 自身对于你能在 spec 文件中做什么没有太多限制,所以你可以搞的很复杂。


章节预览:


1. spec文件的编码
2. spec文件的授权
3. 编写spec文件
3.1 生成一个空文件的安装包
3.2 生成一个包含文件的安装包
3.3 使用rpm2cpio解压源包和安装包
3.4 生成一个完整的源包
3.5 rpmbuild内不同文件夹的作用
3.6 编写一个包含源码的spec文件
3.7 制作并使用patch
4. 常见问题


章节内容:


1. spec文件的编码

  如果不需要使用 ASCII字符集以外的字符,那就不用关心 spec 文件的编码。如果使用了 ASCII 字符集以外的字符,请把 spec 文件以 UTF-8 编码保存即可。


2. spec文件的授权

  由于一些法律上的原因,spec 文件必须有一个授权说明的头部。请注意,如果你不写,开放式构建服务就会把它自己默认的加给你。如果这不是你想要的那样子,你可以参考下面的模板写你自己的。——引自openSUSE维基
  当然,如果我们编写非开放式spec文件就不用增加授权说明的头部,模板示例如下:

 #
 # spec file for package python-$FOO
 #
 # Copyright (c) $CURRENT_YEAR $YOUR_NAME_WITH_MAIL_ADDRESS
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
 # upon. The license for this file, and modifications and additions to the
 # file, is the same license as for the pristine package itself (unless the
 # license for the pristine package is not an Open Source License, in which
 # case the license is the MIT License). An "Open Source License" is a
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
 # Please submit bugfixes or comments via http://bugs.opensuse.org/
 #
 #中文版
 #
 #
 # 软件包 软件包名写这里 的 spec 文件
 # 版权所有 (c) 年份写这里 你的名字 你的电邮
 #
 # 第三方修订者拥有对本文件的任何修正和增补的版权,除非他们宣布放弃。这份文件本身的授权,
 # 修复和增补的授权,都和软件包的授权相同(除非软件包不是以开源协议发布,例如MIT协议)。
 # 开源协议是一种遵守开源行动制定的开源定义的授权许可。
 # 请通过 http://bug.opensuse.org 提交错误报告和评论。
 #

3. 编写spec文件

  首先分析一个完整的spec文件:

Name:			rpm包名
Version:		版本
Release:		发布修正号(在指定版本的第一次发布假设为1,之后每次修改这个版本发布时增加1)
Summary:		介绍摘要
Group:			包所属组的类型
License:		发布许可类型
URL:			网址
AutoReqProv: 	是否产生RPM依赖关系 yes/no
PAckager:		打包者的信息
Provides:		指定依赖包或可执行文件
Source0: 		源码包说明,多个源码包可以由Source0、Source1等指定
Patch0: 		补丁文件说明,与Source0相同,多个补丁文件也可以由Patch0、Patch1等指定
PreReq: 		前期依赖
BuildRequires: 	编译依赖
Requires: 		代码片段的运行依赖

%description             					描述标签

%prep						 				预备处理

%build										编译

%install                    				安装

%post                     					rpm包安装时执行的内容

%postun                						rpm包卸载后执行的内容

%files						                指定文件
%defattr(-,root,root)       				文件权限

%changelog									修订日志

3.1 生成一个空文件的安装包

  接下来在"/root/rpmbuild/SPECS"文件夹内写一个名为test.spec的文件 ,测试打包:

Name:       test
Version:    1.2
Release:    1
Summary:    测试包
License:    GPL
URL:        123456
Packager:   小明
AutoReqProv:no

%description

%prep

%pre

%post

%preun

%postun

%files

  这个spec文件只有包的基本描述信息,没有指定具体执行内容,接下来执行这个文件,命令行输入:rpmbuild -ba test.spec,参考图1:

在这里插入图片描述

图1 生成空文件的安装包

  在“/root/rpmbuild/SRPMS/”文件夹内生成了test-1.2-1.src.rpm源包,在"/root/rpmbuild/RPMS"文件夹内生成了test-1.2-1.x86_64.rpm安装包。


3.2 生成一个包含文件的安装包

  我们继续使用test.spec文件,并在“%files”下增加如下内容:

CentOS是一种基于Linux的操作系统,广泛用于服务器和企业级应用程序。它是一个开放源代码的操作系统,提供稳定、安全和可靠的环境。在CentOS上进行实践可以帮助用户熟悉操作系统的安装、配置和管理。下面是一个关于CentOS操作系统实践的任务示例: 任务:在CentOS上安装和配置Web服务器 1. 安装CentOS操作系统: - 下载最新的CentOS镜像文件,并将其烧录到光盘或制作成USB启动盘。 - 将光盘或USB启动盘插入计算机,并启动计算机。 - 按照屏幕上的提示,选择适当的语言和时区,并进行基本的系统设置。 - 选择适当的分区方案,并进行分区设置。 - 安装完成后,重新启动计算机。 2. 更新系统: - 在终端中运行以下命令,以获取最新的软件包列表: ``` sudo yum update ``` - 这将更新系统中的所有软件包到最新版本。 3. 安装Web服务器软件: - 在终端中运行以下命令,以安装Apache Web服务器: ``` sudo yum install httpd ``` - 安装过程中会提示是否继续安装,输入"y"并按回车键。 - 安装完成后,启动Apache Web服务器: ``` sudo systemctl start httpd ``` - 验证Web服务器是否正常运行,可以在浏览器中输入服务器的IP地址或域名,看是否能够访问默认的Apache欢迎页面。 4. 配置Web服务器: - 默认情况下,Apache的网站文件存储在`/var/www/html`目录下。 - 将您的网站文件复制到该目录下,或在该目录下创建新的网站文件。 - 根据需要,可以编辑Apache的配置文件`/etc/httpd/conf/httpd.conf`来自定义Web服务器的行为。 5. 防火墙设置: - CentOS默认使用Firewalld作为防火墙管理工具。 - 在终端中运行以下命令,以允许HTTP流量通过防火墙: ``` sudo firewall-cmd --add-service=http --permanent sudo firewall-cmd --reload ``` 这只是一个关于在CentOS上安装和配置Web服务器的简单任务示例。CentOS提供了丰富的功能和工具,可以进行各种不同类型的实践和配置。通过实践,您可以更深入地了解CentOS操作系统,并掌握更多与服务器管理相关的技能。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坤昱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值