如何在CentOS/RedHat中为你自己的脚本创建RPM
时间:2019-05-19 01:25:49 来源:igfitidea点击:
**RPM (RedHat Package Manager)**是一个基于RHEL的软件包管理系统。
在基于红帽的系统中的所有包都具有 .rpm后缀。
本教程将如何为自己的脚本创建RPM。
我创建了一个脚本来进行数据库备份,今天我创建了该脚本的RPM文件,这是我创建的第一个RPM。
步骤1 -安装所需的软件包
首先,我们需要在系统上安装所需的包来创建rpm文件。
$ yum install rpm-build rpmdevtools
步骤2 -创建目录结构
转到用户的主目录,使用下面的命令创建所需的目录结构。
$ rpmdev-setuptree
上面的命令将创建一个类似下面的目录结构。
$ ls -l rpmbuild drwxr-xr-x 2 root root 6 Oct 25 03:09 BUILD drwxr-xr-x 2 root root 6 Oct 25 03:09 RPMS drwxr-xr-x 2 root root 6 Oct 25 03:09 SOURCES drwxr-xr-x 2 root root 6 Oct 25 03:09 SPECS drwxr-xr-x 2 root root 6 Oct 25 03:09 SRPMS
如果 rpmdev-setuptree命令创建结构失败,我们可以手动创建它
$ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS,tmp}
步骤3 -创建rpmmacro文件
现在创建 ~/.rpmmacros 文件,包含以下内容。
%packager <orange>YOUR_NAME</orange> %_topdir %(echo $HOME)/rpmbuild %_smp_mflags %( \ [ -z "$RPM_BUILD_NCPUS" ] \\ && RPM_BUILD_NCPUS="`/usr/bin/nproc 2>/dev/null || \\ /usr/bin/getconf _NPROCESSORS_ONLN`"; \\ if [ "$RPM_BUILD_NCPUS" -gt 16 ]; then \\ echo "-j16"; \\ elif [ "$RPM_BUILD_NCPUS" -gt 3 ]; then \\ echo "-j$RPM_BUILD_NCPUS"; \\ else \\ echo "-j3"; \\ fi ) %__arch_install_post \ [ "%{buildarch}" = "noarch" ] || QA_CHECK_RPATHS=1 ; \ case "${QA_CHECK_RPATHS:-}" in [1yY]*) /usr/lib/rpm/check-rpaths ;; esac \ /usr/lib/rpm/check-buildroot
步骤4 -复制源目录下的文件
将所有文件和脚本文件夹复制到 ~/rpmbuild/SOURCES目录中,我们需要将其添加到rpm文件中。
对于本教程,我使用了本教程中为MySQL创建的高级Bash脚本中的所有文件。
$ cd ~/rpmbuild/SOURCES $ ls -l mydumpadmin-1 -rw-r--r-- 1 root root 125 Oct 25 03:54 credentials.txt -rw-r--r-- 1 root root 4693 Oct 25 03:54 mysql-dump.sh -rw-r--r-- 1 root root 1008 Oct 25 03:54 README.md -rw-r--r-- 1 root root 3445 Oct 25 03:54 settings.conf
创建代码的压缩文件。
$ tar czf mydumpadmin-1.0.tar.gz mydumpadmin-1
步骤5 -创建SPEC文件
创建spec文件 ~/rpmbuild/SPECS/mydumpadmin。
内容如下。
Name: mydumpadmin Version: 1 Release: 0 Summary: An Advance Bash Script for MySQL Database Backup Group: theitroad BuildArch: noarch License: GPL URL: https://github.com/tecHyman/mydumpadmin.git Source0: mydumpadmin-1.0.tar.gz %description Write some description about your package here %prep %setup -q %build %install install -m 0755 -d $RPM_BUILD_ROOT/etc/mydumpadmin install -m 0600 credentials.txt $RPM_BUILD_ROOT/etc/mydumpadmin/credentials.txt install -m 0755 mysql-dump.sh $RPM_BUILD_ROOT/etc/mydumpadmin/mysql-dump.sh install -m 0644 README.md $RPM_BUILD_ROOT/etc/mydumpadmin/README.md install -m 0644 settings.conf $RPM_BUILD_ROOT/etc/mydumpadmin/settings.conf %files /etc/mydumpadmin /etc/mydumpadmin/credentials.txt /etc/mydumpadmin/mysql-dump.sh /etc/mydumpadmin/README.md /etc/mydumpadmin/settings.conf %changelog * Tue Oct 24 2017 Hyman Kumar <[email protected]> 1.0.0 - Initial rpm release
根据需求更改包名,脚本路径,档案名称,描述等。
步骤6 -构建RPM
完成上述步骤后,让我们通过执行以下命令来构建rpm。
$ cd ~/rpmbuild $ rpmbuild -ba SPECS/mydumpadmin.spec
成功构建后,将创建一个rpm文件: ~/rpmbuild/RPMS/noarch/mydumpadmin-1-0.noarch.rpm
使用下面的命令安装rpm。
安装检查后,文件被正确地安装到定义的位置。
$ rpm -ivh mydumpadmin-1-0.noarch.rpm