最近の作業では、以前にコンパイルおよびインストールされたソフトウェアパッケージをrpmパッケージにパッケージ化する必要があります。ここでは、パッケージ化プロセスがリマインダーとして記録されます。
ここで使用しているオペレーティングシステムはCentOS6.7であり、redhatシリーズの他のディストリビューションも同様であるはずです。
1 | sudo yum install -y gcc make rpm-build redhat-rpm-config vim lrzsz |
---|
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
echo '%_topdir %(echo $HOME)/rpmbuild'>~/.rpmmacros
通常、同様のrpmソースコードパッケージを見つけてインストールし、それを参照して独自のパッケージのスペックファイルを作成します。
mkdir ~/rpms
wget -O ~/rpms/python-2.6.6-64.el6.src.rpm http://vault.centos.org/6.7/os/Source/SPackages/python-2.6.6-64.el6.src.rpm
rpm -ivh ~/rpms/python-2.6.6-64.el6.src.rpm
vim ~/rpmbuild/SPECS/python.spec #独自のパッケージのスペックファイルを作成するには、このファイルを参照してください
スペックファイルの各オプションの意味については、[こちら](http://www.dahouduan.com/2015/06/15/linux-centos-make-rpm/)を参照してください。
cd ~/rpmbuild
cat ./SPECS/python27-tstack.spec
%debug_package %{nil}%define install_dir /usr/local/python27
Name: python27-tstack
Version:2.7.10
Release:1%{?dist}
Summary: python27 modified by tstack
URL: http://www.python.org/
Group: Development/Languages
License: Python
Provides: python-abi =2.7
Provides:python(abi)=2.7
Source0: Python-2.7.10.tgz
BuildRequires: readline-devel, openssl-devel, gmp-devel, pcre-devel, mysql-devel, libffi-devel
Requires: readline, openssl, gmp, pcre, mysql, libffi
Autoreq:0%description
Python is an interpreted, interactive, object-oriented programming
language often compared to Tcl, Perl, Scheme or Java. Python includes
modules, classes, exceptions, very high level dynamic data types and
dynamic typing. Python supports interfaces to many system calls and
libraries,as well as to various windowing systems(X11, Motif, Tk,
Mac and MFC).
Programmers can write newbuilt-in modules for Python in C or C++.
Python can be used as an extension language for applications that need
a programmable interface.
Note that documentation for Python is provided in the python-docs
package.%prep
%setup -q -n Python-%{version}%build
. /configure --prefix=%{install_dir}--with-cxx-main=/usr/bin/g++
make %{?_smp_mflags}%install
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}%clean
rm -rf %{buildroot}%files
%defattr(-,root,root)%{install_dir}/bin/%{install_dir}/include/%{install_dir}/lib/%{install_dir}/share/%doc
%changelog
1 | cp ${some_where}/Python-2.7.10.tgz ~/rpmbuild/SOURCES/ |
---|
cd ~/rpmbuild
rpmbuild -bb --target x86_64 SPECS / python27-tstack.spec&> rpmbuild.log#これで、別のターミナルを開いてrpmbuild.logを監視できます。
すべての順序で、コンパイルされたrpmパッケージは最終的に 〜/ rpmbuild / RPMS / x86_64 /
ディレクトリにあります。
%debug_package%{nil}
を追加します%setup
や %patch
など、一部のマクロはスペックファイルに表示されることがよくあります。これら2つのマクロには多くのオプションがあります。使用する場合は特に注意してください。[こちら](http://ftp.rpm.org/max-rpm/s1-rpm-inside-macros.html)を参照してください。%pre
、%post
、 %preun
、%postun
で指定でき、インストール前とインストール中にスクリプトを使用して準備を行うなど、インストールとアンインストールの前後のrpmパッケージのアクションを指定できます。次に、スクリプトを使用していくつかの初期化アクションを実行し、スクリプトを使用してアンインストールする前にいくつかの準備を行い、スクリプトを使用してアンインストール後にいくつかのクリーニングアクションを実行します。- bp
ソースコードを抽出してパッチを適用するだけ- bc
はコンパイルのみ- bi
は%{buildroot}にのみインストールします- bb
はバイナリrpmパッケージのみを生成します- bs
はソースrpmパッケージのみを生成します- ba
バイナリrpmパッケージとソースrpmパッケージを生成します- - target
は、rpmパッケージを生成するためのプラットフォームを指定します。デフォルトでは、 i686
と x86_64
のrpmパッケージが生成されますが、通常は、 x86_64
のrpmパッケージのみが必要です。Recommended Posts