吐槽:操蛋的工作内容

由于工作需要,需要将服务给封装成RPM类型的安装文件,并放入yum中,以供以后服务使用yum -y install的方式全自动安装!


准备RPM包编译的标准环境

  • 编译环境的目录树

rpmbuild/
├── BUILD
├── BUILDROOT
├── RPMS
├── SOURCES
├── SPECS
└── SRPMS

1. BUILD 目录

  • 这个目录通常包含在构建过程中使用的文件。

2. BUILDROOT 目录

  • 这个目录是一个临时目录,RPM 在安装软件包时会在这里创建文件系统的根目录结构。安装过程中的文件会被放置在这个目录下,最终打包成 RPM 文件。

3. RPMS 目录

  • 这个目录包含构建出的 RPM 包。它包含了一个 x86_64 子目录,表示构建的 RPM 是针对 x86_64 架构的。

4. SOURCES 目录

  • 这个目录包含了所有的源文件和压缩包,这些文件在构建 RPM 时会被使用。

5. SPECS 目录

  • 这个目录包含了 RPM 规范文件(.spec 文件),这些文件定义了如何构建和安装软件包。

6. SRPMS 目录

  • 这个目录包含源 RPM 包(.src.rpm),这些包包含了构建软件包所需的源代码和规范文件。


制作spec编译文件

  • 注释:这里是我写的一个SPEC文件,下面是每条的解析。

Name:           xiaopalu1
Version:        5.0.0
Release:        1
Summary:        The underlying dependency components of xiaopalu2

License:        Mulan Permissive License, Version 2
Source0:        xiaopalu1.tar.gz

%description
The underlying dependency functional components of intelligent operation and maintenance

%prep
#%setup -q

%build
# No build process for this package, as we're only unpacking a tarball

%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/home
tar xf %{SOURCE0} -C $RPM_BUILD_ROOT/home

%files
/home/xiaopalu

%changelog
Tue Aug 27 2024 xiaopalu <Jsx20011014@163.com> - 20240827.01
- Provide the underlying dependency components of xiaopalu2.

1. 基本信息

  • Name: 软件包的名称是 xiaopalu1

  • Version: 软件包的版本是 5.0.0

  • Release: 软件包的发布版本是 1

  • Summary: 对软件包的简要描述,说明它是 xiaopalu2 的底层依赖组件。

  • License: 该软件包使用的是 Mulan Permissive License, Version 2 开源许可证。

  • Source0: 指定了源代码包的文件名(在这个例子中是 xiaopalu1.tar.gz)。

2. 描述

  • %description: 对软件包的详细描述,说明它提供了智能运维的底层依赖功能组件。

3. 准备阶段

  • %prep: 该部分通常用于准备构建的环境。在这里被注释掉,表示没有特别的准备过程。

4. 构建阶段

  • %build: 该部分通常用于构建软件。在这里同样被注释掉,说明该软件包不需要构建过程,只需解压缩一个 tarball。

5. 安装阶段

  • %install: 这个部分定义了如何安装软件包。在这里,首先清理 $RPM_BUILD_ROOT 目录,然后创建 /home 目录,最后将 xiaopalu1.tar.gz 解压缩到 $RPM_BUILD_ROOT/home 目录。

6. 文件列表

  • %files: 列出该软件包包含的文件。在这里,指定了/home/xiaopalu 目录将被包含在软件包中。

7. 变更日志

  • %changelog: 记录软件包的变更历史。在这里,记录了一个条目,说明在 2024 年 8 月 27 日由 xiaopalu 提交的更新,提供了 xiaopalu2 的底层依赖组件。


安装rpmbuild命令

yum -y install rpmbuild

开始编译RPM包

  • 进入编译目录: /root/rpmbuild/SPECS

## 开始编译RPM包

rpmbuild -ba xiaopalu.spec
  • 编译后包路径:/root/rpmbuild/RPMS

## 编译后服务树结构

rpmbuild/
├── BUILD
├── BUILDROOT
├── RPMS
│   └── x86_64
|       └── xiaopalu-5.0.0-1.ctl2.x86_64.rpm   ## 最终的RPM包
├── SOURCES 
│   └── xiaopalu1.tar.gz
├── SPECS
│   ├── xiaopalu.spec
└── SRPMS
    └── xiaopalu-5.0.0-1.ctl2.src.rpm

额外的RPM命令

  • 查看RPM包的详细信息

rpm -qi  xiaopalu-5.0.0-1.ctl2.x86_64.rpm

Name : xiaopalu
Version : 5.0.0
Release : 1.ctl2
Architecture: x86_64
Install Date: (not installed)
Group : ops
Size : 687743553
License : Mulan Permissive License, Version 2
Signature : (none)
Source RPM : xiaopalu-5.0.0-1.ctl2.src.rpm
Build Date : Tue 27 Aug 2024 05:38:12 PM CST
Build Host : nm-het7-1.1.1.1
Summary : The CtOps around "O&M and service" to provide a one-stop IT O&M management platform for O&M and R&D.
Description :
The CtOps is committed to building a one-stop operation and maintenance capability platform,
providing asset management, unified monitoring and alarm, and automated inspection capabilities,
breaking down the data walls, chimney alarms, manual operation and maintenance problems in the
traditional operation and maintenance process, and facilitating the digital transformation of
operation and maintenance work.
  • 查看已安装包的文件列表

rpm -ql package_name
  • 查看RPM包的所有文件和其信息

rpm -qil package_name
  • 查看依赖关系

rpm -qR package_name
  • 查看包的安装和更新历史

rpm -q --last package_name