Install the necessary tools:
# yum install rpm-build rpmdevtools rpmlint
Create the necessary directories:
# rpmdev-setuptree
// or create them manually
# mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS,tmp}
# ls -l ~/rpmbuild
Set up the temporary directory:
# vim ~/.rpmmacros
%_tmppath %(echo $HOME)/rpmbuild/tmp
Prepare some program/files for the RPM package:
# cd ~/rpmbuild
# mkdir -p ~/rpmbuild/SOURCES/test-repo-1.0.0
# echo -e '#!/bin/sh\necho "Hello World"' > ~/rpmbuild/SOURCES/test-repo-1.0.0/hello
# chmod +x ~/rpmbuild/SOURCES/test-repo-1.0.0/hello
# tar zcvf ~/rpmbuild/SOURCES/test-repo-1.0.0.tar.gz -C ~/rpmbuild/SOURCES/ test-repo-1.0.0/
Edit the spec file:
# vim ~/rpmbuild/SPECS/test-repo.spec
%define NAME test-repo
%define VERSION 1.0.0
%define INSTALL_DIR /usr/local
%define OWNER root
# Disable creating debuginfo RPM
%define debug_package %{nil}
# Strip debug symbols (possibly making the program not funtion properly)
#%define __strip /bin/true
Name: %NAME
Version: %VERSION
# Refer to:
# https://fedoraproject.org/wiki/How_to_create_an_RPM_package
# https://fedoraproject.org/wiki/Packaging:DistTag?rd=Packaging/DistTag
Release: 1%{?dist}
Summary: Package foo summary
Source: %NAME-%VERSION.tar.gz
License: MIT
# Refer to:
# cat /usr/share/doc/rpm-4.11.3/GROUPS
Group: Development/Tools
%description
Package foo description.
%prep
# Start uncompressing
%setup -q
%build
%install
# Turn this on to find out the available environment variables.
#env
install -m 0755 -d ${RPM_BUILD_ROOT}%INSTALL_DIR/%NAME
#mkdir -p ${RPM_BUILD_ROOT}%INSTALL_DIR/%NAME
cp -r * ${RPM_BUILD_ROOT}%INSTALL_DIR/%NAME/
#make install DESTDIR=$RPM_BUILD_ROOT
%clean
rm -rf ${RPM_BUILD_DIR}/*
rm -rf ${RPM_BUILD_ROOT}
rm -rf %_tmppath/*
%post
echo . .
echo .Wring some descripton here to show after package installation!.
%files
%INSTALL_DIR
%defattr(-,%OWNER,%OWNER)
%changelog
Validate the spec:
# cd ~/rpmbuild
# rpmlint SPECS/test-repo.spec
SPECS/test-repo.spec:10: W: macro-in-comment %define
SPECS/test-repo.spec:42: W: macro-in-comment %INSTALL_DIR
SPECS/test-repo.spec:42: W: macro-in-comment %NAME
SPECS/test-repo.spec: W: invalid-url Source0: test-repo-1.0.0.tar.gz
0 packages and 1 specfiles checked; 0 errors, 4 warnings.
Note: Do not worry if you see the warnings.
Build RPM without the source:
# cd ~/rpmbuild
# rpmbuild -v -bb SPECS/test-repo.spec
Build RPM with the source:
# rpmbuild -v -ba SPECS/test-repo.spec
Install the RPM:
# rpm -ivh RPMS/x86_64/test-repo-1.0.0-1.el7.centos.x86_64.rpm
Check the RPM installation:
# ls -la /usr/local/test-repo/
List the installed RPM:
# rpm -qa | grep test-repo
test-repo-1.0.0-1.el7.centos.x86_64
List the files in the installed RPM:
# rpm -q --filesbypkg test-repo
test-repo /usr/local
test-repo /usr/local/test-repo
test-repo /usr/local/test-repo/hello
To find out which RPM a file belongs to:
# rpm -qf /usr/local/test-repo/hello
test-repo-1.0.0-1.el7.centos.x86_64
Remove the RPM:
# rpm -e test-repo
Reference:
https://fedoraproject.org/wiki/How_to_create_an_RPM_package
No comments:
Post a Comment