Make RPM package 创建 RPM 包
…NOT recommended, maybe better :point_right: DEB/APT … see
- Example on
centos7 18.04
. - 直接在 源码目录 / GIT 仓库创建
- 没有 tarball — 没必要
- 没有 configure — 使用 CMAKE
- 创建的包不安装到
/usr/...
- 创建包的根目录不是
~/...
— 就在当前工程下面 - 此外对于 APP 包还有
strip
和post install
等需要处理 - 不要使用
root
用户, 普通用户创建权限足够了
Install building tools
sudo yum install rpm-build
sudo yum install rpmdevtools
创建使用的配置文件 .spec
示例
详见:
- https://yuiwong.org/gitlab/cpp/cppbase/tree/master/rpmbuild
- https://yuiwong.org/gitlab/cpp/cppbase/tags/v1.1.1-1.el7
## MY_PROJ_NAME.desc
# topdir is here, NOT ~/...
%define _topdir %(pwd)/rpmbuild
# %(pwd)/MY_SRC_DIR
%define srcdir %(pwd)/yuiwongcppbase
# MY_PREFIX
%define prefix opt/lib/yuiwongcppbase
%define builddir %{srcdir}/build
Name: libyuiwongcppbase-devel
Version: 1.1.1
Release: 1%{?dist}
# MY_SHORT_DESCRIPTION
Summary: C++ common library.
Group: yuiwong.org
License: LGPL-3.0
URL: https://yuiwong.org/gitlab/cpp/cppbase
Source0: gitsrc
#BuildRequires:
#Requires:
%description
# MY_DESCRIPTION
C++ common library.
%prep
# NOT xf tarball
#%setup -q
%build
cd %{srcdir}
rm -rf build
mkdir -p build
cd build
echo %{buildroot}
cmake .. \
-DCMAKE_INSTALL_PREFIX=%{buildroot}/%{prefix} \
-DENABLETEST=0 \
-DEIGEN3=/opt/lib/eigen3 \
-Dboost=/usr
echo "exit 0" > configure
chmod 700 configure
%configure
#make %{?_smp_mflags}
#make
%install
#make install DESTDIR=%{buildroot}
cd %{builddir}
make install
cd -
%files
/%{prefix}
%doc
%clean
rm -rf %{buildroot}/%{prefix}
rm -rf %{builddir}
%changelog
Make
rpmbuild -bb rpmbuild/yuiwongcppbase.spec