153

Linuxバイナリ「foobar」を配布するRPMファイルを作成したいだけで、依存関係はわずかです。構成ファイル /etc/foobar.conf があり、/usr/bin/foobar にインストールする必要があります。

残念ながら、RPM のドキュメントは 27 章の長さであり、他のプラットフォーム用の .deb および EXE インストーラーの作成にも忙しくしているため、座ってこれを読む日はありません。

RPM を作成するために最低限必要なことは何ですか? foob​​ar バイナリと foobar.conf が現在の作業ディレクトリにあるとします。

4

9 に答える 9

21

アプリケーションのディストリビューターとして、fpm はあなたのニーズにぴったりだと思います。ソースからアプリをパッケージ化する方法を示す例がここにあります。FPM は、deb ファイルと RPM ファイルの両方を生成できます。

于 2012-06-26T14:19:24.430 に答える
16

同様に、いくつかのファイルで rpm を作成する必要がありました。これらのファイルはソース管理されていたので、それはばかげているように思えたので、rpm で展開するためだけに tar を実行したくなかったのです。私は次のことを思いつきました:

  1. 環境をセットアップします。

    mkdir -p ~/rpm/{BUILD,RPMS}

    echo '%_topdir %(echo "$HOME")/rpm' > ~/.rpmmacros

  2. 次の内容で、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
    
  3. rpm をビルドします。 rpmbuild -bb foobar.spec

「ソース」を現在のディレクトリとして指定するハッカーが少しありますが、私の場合は別のスクリプトを記述してtarballなどを作成するという代替案よりもはるかに洗練されているように見えました.

注: 私の特定の状況では、次のように、必要な場所に応じてファイルがフォルダーに配置されていました。

./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 を使用しているため、マイレージは異なる場合があります。

于 2011-03-03T23:25:31.267 に答える
5

バイナリから 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 を作成し、ファイルが配置されるパスを再現します。この場合、たとえば以下を作成します。

  • ~/rpmbuild/BUILDROOT/package_name-version-release.i386/usr/bin/
  • ~/rpmbuild/BUILDROOT/package_name-version-release.i386/usr/share/applications/
  • ~/rpmbuild/BUILDROOT/package_name-version-release.i386/usr/share/pixmaps/

5) パッケージに挿入するファイルを次のフォルダに入れます。

  • ~/rpmbuild/BUILDROOT/package_name-version-release.i386/usr/bin/binary_file.bin
  • ~/rpmbuild/BUILDROOT/package_name-version-release.i386/usr/share/applications/package_name.desktop
  • ~/rpmbuild/BUILDROOT/package_name-version-release.i386/usr/share/pixmaps/package_name.png

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 フォルダーにビルドされました

このパッケージをインストールすると、次のようにインストールされます。

  • /usr/bin/binary_file.bin
  • /usr/share/applications/package_name.desktop
  • /usr/share/pixmaps/package_name.png

感謝: losurs.org/docs/tips/redhat/binary-rpms

rpm のビルドの詳細については、このリンクを参照してください。

rpm をビルドするための GUI Java ソフトウェア: https://sourceforge.net/projects/javarpmbuilder/

于 2013-09-08T14:18:45.727 に答える
4

プログラムで動作する場合make config、または 2 つのファイルを適切な場所にコピーするシェル スクリプトがある場合は、checkinstallを使用できます。makefile があるディレクトリに移動し、パラメータ-R( RPMの場合) とオプションでインストール スクリプトを使用して呼び出します。

于 2011-02-15T09:49:36.830 に答える
-3

ソースファイルから RPM を生成するプロセス:

  1. 拡張子.gzのソースファイルをダウンロードします。
  2. yum install から rpm-build と rpmdevtools をインストールします。(rpmbuild フォルダーが生成されます...SPECS、SOURCES、RPMS.. フォルダーは rpmbuild フォルダー内に生成されます)。
  3. ソースコード.gzをSOURCESフォルダ(rpmbuild/SOURCES)にコピーします。
  4. 次のコマンドを使用して、tar ボールを untar します。tar ファイルが存在する SOURCES フォルダー :rpmbuild/SOURCES に移動します。コマンド: 例 tar -xvzf httpd-2.22.tar.gz httpd-2.22 フォルダが同じパスに生成されます。
  5. 解凍したフォルダーに移動し、以下のコマンドを入力します: ./configure --prefix=/usr/local/apache2 --with-included-apr --enable-proxy --enable-proxy-balancer --with-mpm=worker - -enable-mods-static=all (.configure は、RPM をビルドする必要があるソースによって異なる場合があります。apr および apr-util 依存パッケージが必要な apache HTTPD に対して実行しました)。
  6. 構成が成功したら、以下のコマンドを実行します: make
  7. 正常に実行された後、make コマンドを実行します。同じフォルダーに checkinstall を実行します。(checkinstall ソフトウェアがない場合は、サイトから最新バージョンをダウンロードしてください) また、checkinstall ソフトウェアにはバグがあり、次の方法で解決できます::::: checkinstallrc を見つけて、vim コマンドを使用して TRANSLATE = 1 を TRANSLATE=0 に置き換えます。除外パッケージも確認してください: EXCLUDE="/selinux"
  8. checkinstall はオプションを要求します (ソース ファイルの tp build rpm が必要な場合は R と入力します)。
  9. 完了した .rpm ファイルは、rpmbuild/RPMS ファイル内の RPMS フォルダーにビルドされます... ALL BEST ....
于 2016-03-21T12:42:46.430 に答える
-4

RPM は通常、バイナリではなくソースからビルドされます。

アプリケーションを構成およびコンパイルする方法をカバーする仕様ファイルを作成する必要があります。また、RPM に含めるファイル。

マニュアルをざっと見てみると、必要なもののほとんどが第 8 章でカバーされていることがわかります。また、ほとんどの RPM ベースのディストリビューションにはソースが用意されているため、文字通り無数のさまざまなアプローチの例を見ることができます。

于 2009-05-18T23:24:26.650 に答える