Linuxバイナリ「foobar」を配布するためのRPMファイルを作成したいのですが、依存関係はわずかです。設定ファイル/etc/foobar.confがあり、/ usr/bin/foobarにインストールする必要があります。
残念ながら RPMのドキュメント は27章の長さで、他のプラットフォーム用の.debおよびEXEインストーラーの作成に忙しいため、実際に座ってこれを読む日はありません。
RPMを作成するために絶対に最低限必要なことは何ですか? foobarバイナリとfoobar.confが現在の作業ディレクトリにあると仮定します。
私はしばしば、Linux上で、プロプライエタリなアプリをパッケージ化するごとにバイナリrpmを実行します。ですから、私の経験はあなたにとっても有用である可能性があります。それ以外に、可能であればTRUE RPMを行う方が良いでしょう。しかし、私は脱線します。
(バイナリ)プログラムをパッケージ化するための基本的な手順は次のとおりです。バージョン1.0のtoybinprogであると仮定し、/ etc/toybinprog/toybinprog.confにconfをインストールし、binをインストールしますtobinprogと呼ばれる/ usr/bin内:
mkdir -p ~/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}
cat <<EOF >~/.rpmmacros
%_topdir %(echo $HOME)/rpmbuild
%_tmppath %{_topdir}/tmp
EOF
cd ~/rpmbuild
mkdir toybinprog-1.0
mkdir -p toybinprog-1.0/usr/bin
mkdir -p toybinprog-1.0/etc/toybinprog
install -m 755 toybinprog toybinprog-1.0/usr/bin
install -m 644 toybinprog.conf toybinprog-1.0/etc/toybinprog/
tar -zcvf toybinprog-1.0.tar.gz toybinprog-1.0/
cp toybinprog-1.0.tar.gz SOURCES/
cat <<EOF > SPECS/toybinprog.spec
# Don't try fancy stuff like debuginfo, which is useless on binary-only
# packages. Don't strip binary too
# Be sure buildpolicy set to do nothing
%define __spec_install_post %{nil}
%define debug_package %{nil}
%define __os_install_post %{_dbpath}/brp-compress
Summary: A very simple toy bin rpm package
Name: toybinprog
Version: 1.0
Release: 1
License: GPL+
Group: Development/Tools
SOURCE0 : %{name}-%{version}.tar.gz
URL: http://toybinprog.company.com/
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
%description
%{summary}
%prep
%setup -q
%build
# Empty section.
%install
rm -rf %{buildroot}
mkdir -p %{buildroot}
# in builddir
cp -a * %{buildroot}
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
%{_bindir}/*
%changelog
* Thu Apr 24 2009 Elia Pinto <[email protected]> 1.0-1
- First Build
EOF
rpmbuild -ba SPECS/toybinprog.spec
そして、それだけです。
この助けを願っています
アプリケーションディストリビュータとして、 fpmはお客様のニーズに最適です 。ソースからアプリをパッケージ化する方法を示す ここの例 があります。 FPMは、debファイルとRPMファイルの両方を生成できます。
https://github.com/genereese/togo-rpm
プロジェクトにはクイックスタートガイドがあり、基本的なRPMを3分未満で作成できました。
1)スクリプトを使用してプロジェクトディレクトリを作成します。
$ togo project create foobar; cd foobar
2)./rootの下に目的のディレクトリ構造を作成し、ファイルをそこにコピーします。
$ mkdir -p root/etc; cp /path/to/foobar.conf root/etc/
$ mkdir -p root/usr/bin; cp /path/to/foobar root/usr/bin/
3)システム所有のディレクトリをRPMの所有権から除外します。
$ togo file exclude root/etc root/usr/bin
4)(オプション)生成された仕様を変更して、パッケージの説明/依存関係/バージョン/その他などを変更します。
$ vi spec/header
5)RPMをビルドします。
$ togo build package
-そして、RPMは./rpmsディレクトリに吐き出されます。
同様に、数個のファイルでrpmを作成する必要がありました。これらのファイルはソース管理されていて、それがばかげているように思えたので、rpmでuntarするためだけにそれらをtarすることはしたくありませんでした。私は次のことを思いつきました:
環境をセットアップします。
mkdir -p ~/rpm/{BUILD,RPMS}
echo '%_topdir %(echo "$HOME")/rpm' > ~/.rpmmacros
次の内容のspecファイルfoobar.specを作成します。
Summary: Foo to the Bar
Name: foobar
Version: 0.1
Release: 1
Group: Foo/Bar
License: FooBarPL
Source: %{expand:%%(pwd)}
BuildRoot: %{_topdir}/BUILD/%{name}-%{version}-%{release}
%description
%{summary}
%prep
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/usr/bin
mkdir -p $RPM_BUILD_ROOT/etc
cd $RPM_BUILD_ROOT
cp %{SOURCEURL0}/foobar ./usr/bin/
cp %{SOURCEURL0}/foobar.conf ./etc/
%clean
rm -r -f "$RPM_BUILD_ROOT"
%files
%defattr(644,root,root)
%config(noreplace) %{_sysconfdir}/foobar.conf
%defattr(755,root,root)
%{_bindir}/foobar
Rpmをビルドします:rpmbuild -bb foobar.spec
現在のディレクトリとして「ソース」を指定する小さなハッカーがありますが、代替案よりもはるかに洗練されているように見えました。
注:私の特定の状況では、ファイルは次のように、移動する必要がある場所に応じてフォルダーに配置されました。
./etc/foobar.conf
./usr/bin/foobar
そのため、準備セクションは次のようになりました。
%prep
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT
cd $RPM_BUILD_ROOT
tar -cC %{SOURCEURL0} --exclude 'foobar.spec' -f - ./ | tar xf -
これは少しきれいです。
また、rpmバージョン4.4.2.3のRHEL5.6を使用しているため、走行距離が異なる場合があります。
make config
がプログラムで機能する場合、または2つのファイルを適切な場所にコピーするシェルスクリプトがある場合は、 checkinstall を使用できます。メイクファイルがあるディレクトリに移動し、パラメータ-R
(forRPM)とオプションでインストールを呼び出します脚本。
バイナリからrpmパッケージを構築する簡単な方法(これらの手順はFedora 18でテストされました):
1)最初にrpmdevtoolsをインストールする必要があるため、これらのコマンドを実行します(注意:通常のユーザーとして実行)
$ Sudo yum install rpmdevtools rpmlint
$ rpmdev-setuptree
2)〜/ rpmbuild/SPECSフォルダーに新しいファイルを作成します:package_name.spec
3)エディター(geditなど)で開き、これを記述します。
Name: package_name
Version: 1.0
Release: 1
Summary: Short description (first char has to be uppercase)
License: GPL
URL: www. your_website/
BuildRequires: package_required >= (or ==, or <=) 1.0.3 (for example)
%description
Description with almost 79 characters (first char has to be uppercase)
#This is a comment (just as example)
%files
/usr/bin/binary_file.bin
/usr/share/applications/package_name.desktop
/usr/share/pixmaps/package_name.png
%changelog
* date Packager's Name <packager's_email> version-revision
- Summary of changes
#For more details see: docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/Packagers_Guide/sect-Packagers_Guide-Creating_a_Basic_Spec_File.html
4)〜/ rpmbuild/BUILDROOT/package_name-version-release.i386を作成し、ファイルが配置されるパスを再現します。この場合、たとえば作成します。
5)パッケージに挿入するファイルをこれらのフォルダーに入れます。
usr/share/pixmaps/package_name.pngはバイナリのアイコンですusr/share/applications/package_name.desktopはプログラムをメニューエントリに挿入するルールです
6)package_name.desktopは次のようにする必要があります。
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=example
GenericName=Short description
Comment=Comment of the application
Exec=package_name
Icon=package_name
Terminal=false
Categories=System;
カテゴリは次のとおりです。standards.freedesktop.org/ menu-spec/latest/apa.html
7)$ rpmbuild -bb ~/rpmbuild/SPECS/package_name.spec
を実行します
8)パッケージは〜/ rpmbuild/RPMSフォルダーにビルドされました
このパッケージをインストールするとインストールされます:
おかげで:losurs.org/docs/tips/redhat/binary-rpms
Rpmのビルドの詳細については、この link をご覧ください。
GUI Java rpmをビルドするソフトウェア: https://sourceforge.net/projects/javarpmbuilder/