RPM 、元々はRedHatパッケージマネージャー は、RedHatLinuxで使用するために作成された無料のオープンソースパッケージ管理システムです。ただし、 RPM CentOSなどの多くのLinuxディストリビューションで使用されています 、 Fedora 、 Oracle Linux 。 RPMパッケージには、拡張子.rpm
が付属しています。 。
ソースコードファイルにアクセスできる場合もありますが、システムにインストールできるRPMパッケージがない場合があります。このシナリオでは、ソースコードをコンパイルしてアプリケーションをインストールするか、ソースコードからRPMパッケージをビルドし、RPMファイルを使用してシステムにアプリケーションをインストールすることができます。
この記事では、アプリケーションのソースコードからRPMパッケージを構築する方法を学びます。
rpm-buildパッケージをインストール
rpmパッケージをビルドするには、 rpmbuildをインストールする必要があります 次のコマンドでパッケージ化します。
$ sudo yum install rpm-build
インストール後、次のコマンドを使用してrpmbuildのバージョンを確認します。
$ sudo rpmbuild --version
次のような出力が得られます:
ディレクトリ構造の作成
rpmbuildがディレクトリの欠落を訴える前に、ソースファイルを正しいディレクトリに保持するためにrpmbuildに必要なディレクトリを作成する必要がある場合があります。これらのディレクトリは、手動で作成することをお勧めします。
$ sudo mkdir {~/rpmbuild,~/rpmbuild/BUILD,~/rpmbuild/BUILDROOT,~/rpmbuild/RPMS,~/rpmbuild/SOURCES,~/rpmbuild/SPECS,~/rpmbuild/SRPMS}>
treeコマンドを使用してディレクトリ構造を確認できます。
$ tree rpmbuild/
ソースtarファイルのダウンロード
次に、rpmファイルを作成するパッケージのソースコードファイルをダウンロードする必要があります。手順は、他のアプリケーションのRPMの構築と同様です。ビルドするRPM用のアプリケーションのソースコードを入手する必要があります。
「ソース」に移動します 」ディレクトリを作成し、アプリケーションのソースコードをダウンロードします。この例では、rpmファイルを作成するための独自のサンプルを作成します。
$ cd rpmbuild/SOURCES $ sudo wget https://github.com/apache/httpd/archive/2.4.28.tar.gz%20-O%20httpd-2..4.28.tar.gz>
SPECファイルを作成する
SPECで rpmパッケージをビルドするために必要なファイル、手順、および情報が定義されています。 SPEC ファイルの拡張子は.spec
です。 ビルドの依存関係とランタイムの依存関係が含まれています。ビルドの依存関係は、RPMパッケージを作成するプログラムをコンパイルするために必要なソフトウェアであり、ビルドの依存関係は、プログラムを正しく実行するために必要なライブラリです。
SPECファイルは2つのマクロセクションで構成されており、プリアンブル および本体 。これらのマクロセクションでは、さまざまな命令を定義できます。
前文 セクションには、次の手順が含まれる場合があります。
Name: Name of the package Version: Version of the package URL: The URL of the application Release: Release version of the package License: License used for the package Requires: Dependencies needed to run the software
本体 セクションには、次の手順が含まれています。
%description: Description of the software package %prep: Command needed to prepare source code. %files: List of the files received from the package
次に、SPECファイルを作成し、ディレクトリ rpmbuild / SPECSに保存します。 。この例では、 test-application.specを作成しました test-application-1.0を作成するためのサンプルファイル rpmパッケージ。
$ cd rpmbuild $ cd SPECS $ sudo vi test-application.spec
次の内容を貼り付けて、必要に応じて変更します。
Name: test-application Version: 1.0 Release: 1%{?dist} Summary: Test application script Group: Miscellaneous License: License text Source0: test-application-1.0.tar.gz BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) %description This is test application %prep %setup -q %build # %configure # make %{?_smp_mflags} %install rm -rf $RPM_BUILD_ROOT # make install DESTDIR=$RPM_BUILD_ROOT install -d -m 0755 $RPM_BUILD_ROOT/opt/test-application install -m 0755 HelloWorld.sh $RPM_BUILD_ROOT/opt/test-application/test-application-1.0.sh %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) # %doc /opt/test-application/test-application-1.0.sh %changelog
ファイルを保存して終了します。
RPMパッケージのビルドとインストール
かつてのSPEC ファイルが作成されたら、 rpmbuildを使用してrpmパッケージをビルドします コマンド。
$ sudo rpmbuild -ba rpmbuild/SPECS/test-application.spec
エラーが発生していないと仮定すると、rpmファイルは RPMS / noarchに作成されます。 ディレクトリをインストールする準備ができました。作成したRPMファイルをインストールするには、次のコマンドを実行します。
$ rpm -ivh rpmbuild/RPMS/noarch/test-application-1.0-1.el7.noarch.rpm
ここで、RPMのインストールを確認するには、次のコマンドを実行します。
$ rpm -qa | grep test-application-1.0
RPMパッケージをアンインストールするには、次のコマンドを実行します。
$ yum remove <rpm-package-name>
この例では、 test-application-1.0を削除しました パッケージ:
$ sudo yum remove test-application-1.0-1.el7.noarch
結論
この記事では、tarballを使用してRPMパッケージを作成する方法について学習しました。また、SPECファイルの作成、RPMパッケージのインストール、およびインストールされたRPMパッケージの削除についてのアイデアも得られました。