GNU/Linux >> Linux の 問題 >  >> Linux

複数のプラットフォームでFpmを使用してLinuxパッケージを簡単に構築する方法

多数のLinuxディストリビューションがあり、さまざまなLinuxディストリビューション用のアプリケーションのパッケージ化は非常に時間がかかり、困難な作業です。アプリケーションのパッケージ化は、誰にとってもそれほど簡単ではありません。幸いなことに、パッケージを作成するための代替の最も簡単な方法があります。 Fpmに会う (E f fing p ackage m anagement)、Linuxパッケージを簡単に構築するのに役立つコマンドラインプログラム。

Fpmを使用すると、パッケージを別の形式に簡単に変換し、ディストリビューションのデフォルトのパッケージマネージャーを使用してインストールできます。

そして、はい、Ubuntuのスナップとフラットパックは急速に成長しており、ほとんどのLinuxディストリビューションにインストールできます。ただし、ディストリビューションでまだ利用できないアプリケーションをパッケージ化する場合に備えて、Fpmはそれを行う1つの方法です。

また、従来のパッケージ方法よりもはるかに簡単です。 Fpmは完全に無料で、 Rubyを使用して作成されたオープンソースツールです。 プログラミング言語。

このガイドでは、LinuxでFpmを使用してパッケージをビルドする方法について説明します。

LinuxにFpmをインストールする

fpmはRubyを使用して記述されているため、最初にRubyをインストールする必要があります。 Rubyには、いくつかのオペレーティングシステムがプリインストールされています。まだインストールされていない場合は、使用するディストリビューションに応じて次のコマンドを実行します。

Arch Linuxとそのバリアントの場合:

$ sudo pacman -S ruby

Red Hatシステム(Fedora 22以前、CentOSなど)の場合:

$ sudo yum install ruby-devel gcc make rpm-build

Fedora 23以降の場合:

$ sudo dnf install ruby-devel gcc make rpm-build

Debianから派生したシステム(Debian、Ubuntuなど)の場合:

$ sudo apt-get install ruby ruby-dev rubygems gcc make rpm

Linuxbrewを使用してRubyをインストールすることもできます パッケージマネージャー。 LinuxにLinuxbrewをインストールするには、次のガイドを参照してください。

  • Linuxbrew –LinuxおよびMacOSX用の一般的なパッケージマネージャー

Linuxbrewをインストールした後、このコマンドを実行してRubyをインストールします。

$ brew install ruby

Rubyをインストールしたら、次のコマンドを実行してFPMをインストールします。

$ sudo gem install --no-ri --no-rdoc fpm

以下のような出力が表示されます。

 Fetching: cabin-0.9.0.gem (100%)
 Successfully installed cabin-0.9.0
 Fetching: backports-3.6.8.gem (100%)
 Successfully installed backports-3.6.8
 Fetching: arr-pm-0.0.10.gem (100%)
 Successfully installed arr-pm-0.0.10
 Fetching: clamp-1.0.1.gem (100%)
 Successfully installed clamp-1.0.1
 Fetching: ffi-1.9.17.gem (100%)
 Building native extensions. This could take a while...
 Successfully installed ffi-1.9.17
 Fetching: childprocess-0.6.1.gem (100%)
 Successfully installed childprocess-0.6.1
 Fetching: archive-tar-minitar-0.5.2.gem (100%)
 Successfully installed archive-tar-minitar-0.5.2
 Fetching: io-like-0.3.0.gem (100%)
 Successfully installed io-like-0.3.0
 Fetching: ruby-xz-0.2.3.gem (100%)
 Successfully installed ruby-xz-0.2.3
 Fetching: stud-0.0.22.gem (100%)
 Successfully installed stud-0.0.22
 Fetching: mustache-0.99.8.gem (100%)
 Successfully installed mustache-0.99.8
 Fetching: insist-1.0.0.gem (100%)
 Successfully installed insist-1.0.0
 Fetching: dotenv-2.2.0.gem (100%)
 Successfully installed dotenv-2.2.0
 Fetching: pleaserun-0.0.28.gem (100%)
 Successfully installed pleaserun-0.0.28
 Fetching: fpm-1.8.1.gem (100%)
 Successfully installed fpm-1.8.1
 15 gems installed

Fpmが正しくインストールされているかどうかを確認するには、次のコマンドを実行します。

$ fpm --version

または、

$ fpm --v

サンプル出力は次のようになります:

1.8.1

上記のような出力が表示された場合は、おめでとうございます。 Fpmを使用する準備が整いました。

ダウンロード -無料の電子書籍:「Linux®パッチ管理:Linuxシステムを最新の状態に保つ」

Fpmを使用してLinuxパッケージを構築する

FPMを使用してパッケージをビルドする一般的なコマンドを以下に示します。

$ fpm -s <source type> -t <target type> [list of sources]...

ここで

  • -s<ソースタイプ> -ソースパッケージのタイプ。これは、ディレクトリ(dir)、rubygem(gem)、rpm(rpm)、pythonパッケージ(python)、php pearモジュール(pear)などになります。
  • -t -.rpm、.debなどの出力パッケージのタイプ

ソースファイルとターゲットファイルの種類の完全なリストは次のとおりです。

出典:

  • gem
  • Pythonモジュール
  • ディレクトリ
  • tar(.gz)アーカイブ
  • rpm
  • デブ
  • ノードパッケージ(npm)
  • pacman(ArchLinux)パッケージ

ターゲット:

  • デブ
  • rpm
  • ソラリス
  • freebsd
  • タール
  • ディレクトリ
  • Mac OSX.pkgファイル
  • pacman(ArchLinux)パッケージ

ターミナルから次のコマンドを入力して、いつでもヘルプセクションを表示できます。

$ fpm --help

RPMパッケージを作成する

理解を深めるために、いくつかの例を示します。次のコマンドは、最新の json gemをダウンロードします .rpmパッケージに変換します:

$ fpm -s gem -t rpm json

出力例:

Created package {:path=>"rubygem-json-2.0.3-1.x86_64.rpm"}

上記のコマンドは、rubygems.orgから最新の「json」rubygemをダウンロードし、それを.rpmに変換します。 パッケージ。上記の出力にあるように、このコマンドは‘rubygem-json-VERSION_ARCH.rpm’という名前のパッケージを作成しました。 適切なバージョン/アーチが配置されている。とても簡単ですね。もちろんです!

この.rpmをビルドするのに1分しかかかりませんでした パッケージ。パッケージは現在の作業ディレクトリに保存されます。これで、このrpmパッケージを、以下に示すように、RHEL、CentOS、Fedoraなどのrpmベースのディストリビューションにインストールできます。

$ sudo rpm -ivh rubygem-json-2.0.3-1.x86_64.rpm

新しく作成した.rpmパッケージの詳細を以下で確認します。

$ sudo rpm -qip rubygem-json-2.0.3-1.x86_64.rpm

出力例:

Name : rubygem-json
Version : 2.0.3
Release : 1
Architecture: x86_64
Install Date: (not installed)
Group : Languages/Development/Ruby
Size : 1487109
License : Ruby
Signature : (none)
Source RPM : rubygem-json-2.0.3-1.src.rpm
Build Date : Tue 21 Feb 2017 03:45:50 PM IST
Build Host : server1.ostechnix.local
Relocations : / 
Packager : <[email protected]>
Vendor : Florian Frank
URL : http://flori.github.com/json
Summary : This is a JSON implementation as a Ruby extension in C.
Description :
This is a JSON implementation as a Ruby extension in C.

上記の出力からわかるように、fpmは、パッケージ名、バージョン、アーキテクチャ、インストール日、メンテナ、ホームページ、および説明をすべてrubyパッケージ自体から自動的に選択しました。手動で追加する必要はありません。 Fpmがすべてを処理します。

依存関係を表示するには、次を実行するだけです:

$ rpm -qRp rubygem-json-2.0.3-1.x86_64.rpm

サンプル出力

rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1

別の例を見てみましょう。

DEBパッケージを作成する

上記の例では、 json gemをビルドしています 次を使用して.rpmパッケージに変換します:

$ fpm -s gem -t rpm json

同様に、debをパッケージにするには、rpmという単語を置き換えるだけです。 debを使用 。

$ fpm -s gem -t deb json

出力例:

Debian packaging tools generally labels all files in /etc as config files, as mandated by policy, so fpm defaults to this behavior for deb packages. You can disable this default behavior with --deb-no-default-config-files flag {:level=>:warn}
Debian packaging tools generally labels all files in /etc as config files, as mandated by policy, so fpm defaults to this behavior for deb packages. You can disable this default behavior with --deb-no-default-config-files flag {:level=>:warn}
Created package {:path=>"rubygem-json_2.0.3_amd64.deb"}

新しく作成されたパッケージの詳細を確認するには、次のコマンドを実行します。

$ dpkg --info rubygem-json_2.0.3_amd64.deb

出力例:

 new debian package, version 2.0.
 size 581592 bytes: control archive=4018 bytes.
 327 bytes, 12 lines control 
 11986 bytes, 126 lines md5sums 
 Package: rubygem-json
 Version: 2.0.3
 License: Ruby
 Vendor: Florian Frank
 Architecture: amd64
 Maintainer: <[email protected]>
 Installed-Size: 1640
 Provides: rubygem-json
 Section: Languages/Development/Ruby
 Priority: extra
 Homepage: http://flori.github.com/json
 Description: This is a JSON implementation as a Ruby extension in C

上記のパッケージの依存関係を表示するには、次を実行します:

$ dpkg -c ./rubygem-json_2.0.3_amd64.deb
ダウンロード -無料の電子書籍:「Linux開発プラットフォーム」

特定のバージョンのパッケージを作成する

以前のコマンドはすべて、最新の安定したバージョンを作成しました。特定のバージョンのパッケージをビルドする必要がある場合は、次のコマンドを使用してこれを行うことができます:

$ fpm -s gem -t deb -v 2.0.0 json

上記のコマンドは、rubyjson verion 2.0.0をダウンロードし、.debに変換します。 パッケージ。

出力例:

[...]
Created package {:path=>"rubygem-json_2.0.0_amd64.deb"}

同様に、以下のようにパッケージに特定の名前を割り当てることができます。

$ fpm -s gem -t deb -n my_json -v 2.0.0 json

出力例:

[...]
Created package {:path=>"my-json_2.0.0_amd64.deb"}

上記の出力にあるように、パッケージにカスタム名を割り当てました。つまり、 my-json_2.0.0_amd64.deb

RPMをDEBパッケージに、またはその逆に変換する

異なるプラットフォーム用のパッケージを作成する必要はありません。それらをあるフォーマットから別のフォーマットに変換するだけです。次のコマンドは、rpmパッケージをdebパッケージに変換します。

$ fpm -t deb -s rpm rubygem-json-2.0.3-1.x86_64.rpm

構文を少し変更したことに注意してください。ターゲットタイプ(-t)が最初に来て、ソースタイプが次に来ます。

出力例:

[..]
Created package {:path=>"rubygem-json_2.0.3-1_amd64.deb"}

ソースディレクトリからパッケージをビルドする

'hello'プログラムのrpmを作成する簡単な手順は次のとおりです。

$ wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz
$ tar -zxvf hello-2.10.tar.gz
$ cd hello-2.10/
$ ./configure --prefix=/usr
$ make

次に、以下に示すように、一時ディレクトリにインストールします。

$ mkdir /tmp/installdir
$ make install DESTDIR=/tmp/installdir/

次に、以下のようにFpmを使用してrpmパッケージを作成します。

$ fpm -s dir -t rpm -n hello -v 2.10 -C /tmp/installdir

ここで、

  • -s ソースファイルの種類(ディレクトリ)を示します。
  • -t パッケージのタイプ(rpm)です。
  • -n パッケージの名前を示します
  • -v バージョンです。
  • -C ディレクトリです(例:/tmp/installdir )fpmがファイルを検索する場所。

出力例:

Created package {:path=>"hello-2.10-1.x86_64.rpm"}

debパッケージを作成するには、次のコマンドを実行します。

$ fpm -s dir -t deb -n hello -v 2.10 -C /tmp/installdir

同様に、ディレクトリから任意のパッケージをビルドできます。

関連記事:

  • ソースからDebianパッケージを構築する方法
  • CheckInstallを使用してソースからパッケージを構築する方法
  • エイリアンを使用してLinuxパッケージを変換する方法

結論

Fpmは、プログラミングの知識があまりなくても、複数のディストリビューションのパッケージを構築するプロセスを簡素化します。中級のLinuxユーザーでも、あらゆるプラットフォーム向けのあらゆるパッケージを短時間で簡単に構築できます。


Linux
  1. rpmパッケージをビルドする方法

  2. Linuxで特定のグループに属するインストール済みパッケージを一覧表示する方法

  3. Linuxで特定のリポジトリからインストールされたパッケージを一覧表示する方法

  1. 3 つの方法を使用して Linux で複数のファイルの名前をまとめて変更する方法

  2. Linux で ip コマンドの例を使用して複数のルートを追加する方法

  3. Linux にインストールされている RPM パッケージのベンダーを確認する方法

  1. CheckInstallを使用してソースからパッケージを構築する方法

  2. Linuxにインストールされているすべてのパッケージを一覧表示する方法

  3. GLFW 3 をビルドしてインストールし、Linux プロジェクトで使用する方法