commit
完代码就万事大吉了,实施和运维就只能骂一句仆街,然后硬着头皮去部署。
![579239ae3e7c2e962946b3a8c88663b2.png](https://i-blog.csdnimg.cn/blog_migrate/493723d0528241ab7f3e0d41012c7485.png)
![383f0a7f6ebbb5f2954693fe26a6f40b.png](https://i-blog.csdnimg.cn/blog_migrate/4980d2949d64f8c8c069e7aeb1b4f1d3.png)
Red-Hat Package Manager
(RPM软件包管理器)诞生了。
![2dd6bb71f38929c13015728b09c2c74b.png](https://i-blog.csdnimg.cn/blog_migrate/71f1cfe7521f70dcd6c80003d63e3941.jpeg)
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](https://i-blog.csdnimg.cn/blog_migrate/aac5de0c1d7424d9e4253bc95238f879.gif)
创建打包必须的目录
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
echo '%\_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
![8cdc201f734418c7ed161470cab1d86e.png](https://i-blog.csdnimg.cn/blog_migrate/9ac81316ce9fba6678521d631077ba75.png)
上传源码包
![eda9e770bfad15c6e75299ff670023ab.png](https://i-blog.csdnimg.cn/blog_migrate/d909f9010c5d87049cf89fe13f42a835.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](https://i-blog.csdnimg.cn/blog_migrate/788985a8ee2d4cae54b531d66db00ed9.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](https://i-blog.csdnimg.cn/blog_migrate/2ebc42489aa76bcaeae3b0bb79fc69d4.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](https://i-blog.csdnimg.cn/blog_migrate/1d340bc243e52a0821e8b692aecbabc7.png)
![0b600c86e4e30305d30b9e8affea83a2.gif](https://i-blog.csdnimg.cn/blog_migrate/5f401dc8316c4b840c114250958c3505.gif)
![e54939008c54123766e9cb9a15139a79.png](https://i-blog.csdnimg.cn/blog_migrate/d94bf5208c0443233dc04555f22ff6b4.png)