CentOS6でのrpmパッケージングの実際の戦闘

最近の作業では、以前にコンパイルおよびインストールされたソフトウェアパッケージをrpmパッケージにパッケージ化する必要があります。ここでは、パッケージ化プロセスがリマインダーとして記録されます。

rpmパッケージ環境を準備する#

ここで使用しているオペレーティングシステムはCentOS6.7であり、redhatシリーズの他のディストリビューションも同様であるはずです。

rpm-build ##をインストールします

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

rpmパッケージの作成#

必要なソースファイルをアップロードします##

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 /ディレクトリにあります。

スキルサマリー#

  1. - bpソースコードを抽出してパッチを適用するだけ
  2. - bcはコンパイルのみ
  3. - biは%{buildroot}にのみインストールします
  4. - bbはバイナリrpmパッケージのみを生成します
  5. - bsはソースrpmパッケージのみを生成します
  6. - baバイナリrpmパッケージとソースrpmパッケージを生成します
  7. - - targetは、rpmパッケージを生成するためのプラットフォームを指定します。デフォルトでは、 i686 x86_64のrpmパッケージが生成されますが、通常は、 x86_64のrpmパッケージのみが必要です。

参照#

  1. http://vault.centos.org/6.7/os/Source/SPackages/
  2. http://tkdchen.github.io/blog/2013/05/19/rpm-spec-for-python-gist.html
  3. http://www.dahouduan.com/2015/06/15/linux-centos-make-rpm/
  4. http://www.centoscn.com/CentOS/Intermediate/2014/0419/2826.html
  5. http://wiki.centos.org/HowTos/SetupRpmBuildEnvironment
  6. http://ftp.rpm.org/max-rpm/rpmbuild.8.html
  7. http://ftp.rpm.org/max-rpm/s1-rpm-inside-macros.html

Recommended Posts

CentOS6でのrpmパッケージングの実際の戦闘
CentOs7の下でのZabbixの4回目の分割払い
CentOS7でのmysql5.6のデフォルトエンコーディングを変更します
ジェンキンス学習のcentos6.9の下でのインストール
Centos8の下に最新のOpenCV4.3をインストールします
CentOSでのMysqlのインストールと使用
centos7でのredisのインストールと構成
Centosは最新バージョンのcmakeをインストールします
Centos8.1.1911はyumの再インストールの問題を解決します
CentOS7でのZabbix監視プラットフォームの構築
[Centos8]ドッカーをインストールするでこぼこのプロセス
VMwareでUbuntuのディスクサイズを拡張する
Centos7システム強化の知識ポイントを要約する
Centos7.5は、ルートディレクトリの下のスペースサイズを拡張します
Ubuntuの下に古いバージョンのseuratをインストールします
CentOS7は最新のカーネルを更新します| RPMはカーネルを直接インストールします
CentOS6.5でのrsyncサーバーのインストールと構成
Centos8静的IP構成の実装について説明する
CentosでのMicrosoftROpenの非ルートインストール
CentOS8でのApollo構成センターの分散展開
Centos7でのFastDFSのインストールから入力まで
Centos7は、ルートディレクトリマウントパーティションのサイズを調整します
CentosでのJira7操作記録のインストールとクラッキング
Centos7でのJDK、mysql、tomcatの環境構成
Centos7でのLVMによるファイルシステムのオンライン拡張