deb包制作_三分钟手操rpm包

每每开发完一个程序,对于开发人员来说 commit 完代码就万事大吉了,实施和运维就只能骂一句仆街,然后硬着头皮去部署。  579239ae3e7c2e962946b3a8c88663b2.png 把程序安装到哪里、处理程序用到的各种依赖安装包、编译程序等等的操作,直接就能把人整死好吗?    383f0a7f6ebbb5f2954693fe26a6f40b.png 然后有一群红帽公司的同学就开始意淫,如果能有一个东西,自动安装依赖包、自动创建目录、自动安装、卸载的时候还能把自己卸载的干干净净是如么爽的一件事情!于是 Red-Hat Package Manager (RPM软件包管理器)诞生了。  2dd6bb71f38929c13015728b09c2c74b.png 其他人看到感觉不错啊就全给抄过来,所以 rpm 包可以适应各种 linux 系统,成为业界公认的行业标准,就是 Debian 不太服气,自己搞了一个 deb 包,其实效果是一样一样的。

准备rpm打包环境

我搞了一台 CentOS6.8 的系统来演示这个骚操作, redhat 系的其它发行版应该也类似。
sudo yum install -y gcc make rpm-build redhat-rpm-config vim lrzsz
这个时候会有小朋友问了,无网络的情况下怎么办!! 只要加个参数下载到本地再去安装 rpm包就可以啦,如
sudo yum install -y --downloadonly --downloaddir=  gcc make rpm-build redhat-rpm-config vim lrzsz
55fbde91f695f49901722baab09d7709.gif

创建打包必须的目录

mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
echo '%\_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
8cdc201f734418c7ed161470cab1d86e.png

上传源码包

eda9e770bfad15c6e75299ff670023ab.png 我创建了一个 coding3min的文件夹,里面名为run.sh的脚本,作用是输出一句话。  把自己的源码打成一个tar.gz的包(随便什么压缩格式),然后放到rpmbuild的源码包所在位置。
sudo tar czf coding3min.tar.gz coding3min
sudo cp coding3min.tar.gz rpmbuild/SOURCES/

编写rpm描述文件spce

4315959cfccdcd78cd38377a9ca8bfa3.png 要想写一个自己的 spce文件,不如抄一个下来改改,一通操作过后,我制作了一个精简的spec文件
sudo vim rpmbuild/SPECS/coding3min.spec
vim在编辑的时候会自动生成 spec 文件的模板, coding3min.spec 的内容如下(请上下滚动查看):

# 定义了一个变量install_dir

%define install_dir /data/coding3min

# 包名

Name: coding3min

# 版本号

Version: 0.0.1

# release版本号

Release: 1%{?dist}

#软件包的内容概要描述

Summary: coding3min print ok

License: ASL 2.0

# 主页网址

URL: https://t.zsxq.com/rvBMzRv

# 源码包名

Source0: coding3min.tar.gz

#编译过程中需要的软件

# 此处没有,所以注释掉了

# BuildRequires: gcc-c++, ncurses-devel, zlib-devel

#依赖的软件, 安装的时候需要检查的

Requires: bash

# 软件包描述

%description

coding3min is a funny Official Accounts

# 编译前预处理。如: 1.打补丁; 2. 解压源码等

%prep

%setup -q

# 编译

%build

# rpm安装前执行的动作

%pre

echo install begin...

# 安装, 即把一些可执行文件和配置复制到目标目录中。

%install

rm -rf %{buildroot}%{install_dir}

mkdir -p %{buildroot}%{install_dir}

cp -R * -v %{buildroot}%{install_dir}

# rpm安装后执行的动作

%post

echo install ok baby!

# 清理一些暂存文件

%clean

rm -rf $RPM_BUILD_ROOT

rm -rf $RPM_BUILD_DIR

# 定义哪些文件或者目录会放入rpm中

%files

%defattr(-, root, root, 0755)

%{install_dir}

# 变更日志

%changelog

开始制作

154bfc1c3fa908749e98e3f303a34c42.png
cd rpmbuild
rpmbuild -bb --target x86_64 SPECS/coding3min.spec > rpmbuild.log &
输出

+ umask 022

+ cd /home/vagrant/rpmbuild/BUILD

+ cd /home/vagrant/rpmbuild/BUILD

+ rm -rf coding3min-0.0.1

+ /usr/bin/gzip -dc /home/vagrant/rpmbuild/SOURCES/coding3min.tar.gz

+ /usr/bin/tar -xf -

+ STATUS=0

+ '[' 0 -ne 0 ']'

+ cd coding3min-0.0.1

+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .

+ exit 0

+ umask 022

+ cd /home/vagrant/rpmbuild/BUILD

+ cd coding3min-0.0.1

+ exit 0

+ umask 022

+ cd /home/vagrant/rpmbuild/BUILD

+ '[' /home/vagrant/rpmbuild/BUILDROOT/coding3min-0.0.1-1.el7.x86_64 '!=' / ']'

+ rm -rf /home/vagrant/rpmbuild/BUILDROOT/coding3min-0.0.1-1.el7.x86_64

++ dirname /home/vagrant/rpmbuild/BUILDROOT/coding3min-0.0.1-1.el7.x86_64

+ mkdir -p /home/vagrant/rpmbuild/BUILDROOT

+ mkdir /home/vagrant/rpmbuild/BUILDROOT/coding3min-0.0.1-1.el7.x86_64

+ cd coding3min-0.0.1

+ rm -rf /home/vagrant/rpmbuild/BUILDROOT/coding3min-0.0.1-1.el7.x86_64/data/coding3min

+ mkdir -p /home/vagrant/rpmbuild/BUILDROOT/coding3min-0.0.1-1.el7.x86_64/data/coding3min

+ cp -R run.sh -v /home/vagrant/rpmbuild/BUILDROOT/coding3min-0.0.1-1.el7.x86_64/data/coding3min

+ /usr/lib/rpm/find-debuginfo.sh --strict-build-id -m --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 110000000 /home/vagrant/rpmbuild/BUILD/coding3min-0.0.1

+ /usr/lib/rpm/check-buildroot

+ /usr/lib/rpm/redhat/brp-compress

+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip

+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1

+ /usr/lib/rpm/redhat/brp-python-hardlink

+ /usr/lib/rpm/redhat/brp-java-repack-jars

+ umask 022

+ cd /home/vagrant/rpmbuild/BUILD

+ cd coding3min-0.0.1

+ rm -rf /home/vagrant/rpmbuild/BUILDROOT/coding3min-0.0.1-1.el7.x86_64

+ rm -rf /home/vagrant/rpmbuild/BUILD

+ rm -rf /var/tmp/coding3min

+ exit 0

生成结束以后出现了我们自己rpm包!!  ad3f0aaf6232ec3be78dd532429ecc4f.png 安装一下  0b600c86e4e30305d30b9e8affea83a2.gif 然后放到yum源里就可以用啦,参考“三分钟手操yum源” 推荐阅读: 【独家揭秘】走进程序员的周末三分钟手操自己的yum源如何向朋友解释什么是云计算? e54939008c54123766e9cb9a15139a79.png 回复 m 获取全部文章目录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值