制作rpm包

1 制作rpm

官方文档资料 How_to_create_an_RPM_package

1. 首先安装工具,rpmbuild可能在rpmdevtools里已经包含
yum install rpm-build
yum install rpm-devel.x86_64
yum install rpmdevtools

2. 执行如下rpmdev-setuptree生成rpmbuild的工作目录(会在当前用户的根目录下生成rpmbuild目录)
rpmdev-setuptree    在/root 下生成rpmbuild
或者 mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

3 文件夹名字为 ttan_node_2-v1.0 类型
cp -r testtan_node_2/ testtan_node_2-v1.0
tar -zcvf testtan_node_2-v1.0.tar.gz testtan_node_2-v1.0
mv ../testtan_node_2-v1.0.tar.gz SOURCES

4 vim SPECS/testtan.spec

Name:		testtan_node_2
Version:	v1.0
Release:	1%{?dist}
Summary:	testtan summary

#Group:cnp
License:	GPL
URL:		www.baidu.com
Source0:	%{name}-%{version}.tar.gz

#BuildRequires:
#Requires:

%description    # 阶段如果没有操作的话,为空,但是不能有空行
description is here


%prep
%setup -q       # 解压并cd
%define debug_package %{nil}
%define __jar_repack 0

%install
rm -rf %{buildroot}     # buildroot 必须全部用小写,不然要报错
mkdir -p %{buildroot}/usr/local/testtan
#mkdir -p %{buildroot}
cp -rf * %{buildroot}/usr/local/testtan    # 要有将来要安装的路径
#cp -rf * %{buildroot}

%files
/usr/local/testtan   # 这个目录是将来要安装的路径
%exclude /usr/local/testtan/logs
%exclude /usr/local/testtan/vtn_gc.log
# 文件权限
https://blog.csdn.net/weixin_37871174/article/details/79258383
%exclude dic_name或者file_name
但是关于%files阶段有两个特性要牢记:
%{buildroot}里的所有文件都要明确被指定是否要被打包到rpm里。什么意思呢?假如,%{buildroot}目录下有4个目录a、b、c和d,在%files里仅指定a和b要打包到rpm里,如果不把c和d用exclude声明是要报错的;
如果声明了%{buildroot}里不存在的文件或者目录也会报错。


rpmbuild -ba SPECS/testtan.spec      生成rpm
报错
制作rpm包的过程中,若出现错误Installed (but unpackaged) file(s) found,解决方案如下:
1. 修改/usr/lib/rpm/macros文件中下面的行:
%__check_files /usr/lib/rpm/check-files %{buildroot}  #注释掉
2. 修改/usr/lib/rpm/macros文件中以下的行:
%_unpackaged_files_terminate_build 1  #把1改为0只警告

安装install
rpm -ivh ~/rpmbuild/RPMS/x86_64/testtan_node_2-v1.0-1.el7.x86_64.rpm
rpm -ivh --replacefiles --force ~/rpmbuild/RPMS/x86_64/testtan_node_2-v1.0-1.el7.x86_64.rpm
rpm -Uvh file.rpm       这是用来升级一个rpm 包
rpm -ql testtan_node_2   查看一个包安装了哪些文件
rpm -qi testtan_node_2

2 上传yum服务器

构建源

第一次的话构建源
cd /mnt/cnp_pkgs/centos/7/x86_64/cnp-dev/rpm/
createrepo ./
执行后会在该目录下生成 repodata 文件夹

更新:用于rpm包更新的情况
开发测试源(每次更新包都要执行)cd /mnt/cnp_pkgs/centos/7/x86_64/cnp-dev/rpm/
createrepo  --update ./

同步源

/mnt/xxx/rsync.sh

3 yum install -y

vim /etc/yum.repos.d/CentOS-Base.repo

[cloud-xxx-dev]
name=CentOS-$releasever - project-dev
baseurl=http://yum源ip/cloud/xxx/yyy/centos/$releasever/$basearch/qwer-dev/rpm
enabled=1
gpgcheck=0

yum makecache
yum install pkg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值