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