FreeBSDでバイナリ package を作って配布する方法
FreeBSDのソフトウェアのパッケージ管理システムは、ビルド済み( バイナリ )パッケージをインストールするpackageとソースをビルドするスタイルのportsがあります。
そもそも ports / package の関係が密接な関係にあります。
バイナリの package は、ports を利用して作成されます。
また、portsからインストールしもpackageからインストールしても、同じパッケージとして管理されます。
package を扱う場合、pkg_add , pkg_delete , pkg_info などを使ってソフトウェアの管理を行うことができます。
その中で、pkg_info は、インストールされているパッケージの一覧を表示することができます。
その出力結果には、portsからのインストールもpackageからインストールも含まれ、一覧で表示されます。
複数のサーバーを管理している場合、全サーバーを ports でコンパイルしてインストールするのは、ちょっと、時間的にも手間がかかります。
そんな時、1つのサーバーで ports によるインストールを行い、動作確認の後、別の同じFreeBSDのサーバーへ バイナリ package インストールできれば、効率的です。
今回は、その ports を利用して package を作成してみます。
更には、作成した package を別のサーバーへインストールしてみます。
ports を使ってインストールし、 別のサーバーで package でインストールするまで
早速、ports を使ってインストールし、別のサーバーで package でインストールするまでの一連の手順を簡単に解説してみます。
( ここでは、例として [ サーバーA ]に ports を使って vim-lite をインストールし、[ サーバーB ]に packages を使ってインストールしてみます。)
[ サーバーA ] : ports を使って vim-lite をインストールする
まずは、portsを使ってインストールします。
$ cd /usr/ports/editors/vim-lite/
[vim-lite]$ make install clean
...
|
これで特に問題なくインストールでき、かつ、動作に問題ないか確認します。
$ vim
|
実際にインストールせずに 次の package を作成することもできなくはないようですが、
本来のやり方でもなく、安全性に欠けるので、ここでは、インストールしてから package を作成することを強くおすすめします。
また、cshの場合は、rehashを忘れないように。
[ サーバーA ] : ports を使って vim-lite の packages を作成する
次に、portsを使ってvim-lite の packages を作成します。
- packages の出力先ディレクトリを作成する。
$ mkdir /usr/ports/packages/
|
この出力先ディレクトリは固定です。
この出力先ディレクトリが存在しない場合は、カレントディレクトリに出力されます。
- packages の出力先ディレクトリを作成する。
$ cd /usr/ports/editors/vim-lite/
[vim-lite]$ make package-noinstall
===> Generating temporary packing list
|
ここでは、makeのパラメータにpackage-noinstall 使用していますが、マニュアルには、package を使うようにあります。
package の動作は、インストール済なら、packages を作成するのみなので、動作は同じですが、もし、インストールされていない場合は、自動的にインストールされる点が違うところです。
また、package-recursive というものもあります。これは、package と同じ動作をしますが、依存関係の全パッケージを作成する点が異なります。
先に作成した出力先ディレクトリに以下のように出力されます。
$ tree /usr/ports/packages/
/usr/ports/packages/
+ All
| + vim-lite-7.3.121.tbz
+ Latest
| + vim-lite.tbz -< ../All/vim-lite-7.3.121.tbz
+ editors
+ vim-lite-7.3.121.tbz -< ../All/vim-lite-7.3.121.tbz
|
/usr/ports/packages/
All に実態となる
tbzファイルが作成され、
/usr/ports/packages/
Latest ,
/usr/ports/packages/
editors には、実態となる
tbzファイルのリンクが作成されます。
[ サーバーB ] : packages を使って vim-lite をインストールする
最後に、先に作成したバイナリ のvim-lite の packages ファイルを元に、別のサーバー[ サーバーB ] にてインストールします。
他のサーバー ( ここでは [ サーバーA ] ) のpackagesファイルを [ サーバーB ] で直接インストールするには、
[ サーバーA ] にて、packagesファイルをhttpで公開することが簡単なやり方です。
ここでは、その手順を簡単に解説してみます。
- [ サーバーA ] : /usr/ports/packages/ を http で公開する。
ウェブサーバーで /usr/ports/packages/ ディレクトリを /packages/ として公開します。
以下は、apacheでの設定例です。
[apacheの場合]
....
<VirtualHost *:80>
ServerAdmin webmaster@hoge.com
ServerName www.hoge.com
DocumentRoot "/usr/local/www/"
Alias /packages/ "/usr/ports/packages/"
<Directory "/usr/local/www">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
....
<Directory "/usr/ports/packages">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
....
|
設定を終えたら、apacheの再起動でOKです。
- [ サーバーB ] にて、[ サーバーA ] で公開したディレクトリからインストールする。
[ サーバーB ] にて、[ サーバーA ]から、直接インストールする方法には、大きく2つのやり方があります。
直接ファイルを指定する方法
この方法が、一番単純です。自分のローカルディレクトリのpackages ファイルからインストールするのと同じです。
$ pkg_add http://www.hoge.com/packages/vim-lite.tbz
...
|
packagesサイトを指定する方法
この方法は、pkg_add -r vim-lite と指定することでインストールできます。つまり、通常のpackages のインストール方法と同じです。
ただし、packagesサイトを事前に設定する必要があります。
- packagesサイトを設定する
[cshの場合]
$ setenv PACKAGESITE http://www.hoge.com/packages/Latest/
|
[bashの場合]
$ export PACKAGESITE=http://www.hoge.com/packages/Latest/
|
上記の設定は、あくまで一時的な設定です。常時、先のpackagesサイトを設定しておきたい場合は、/etc/
make.confに設定します。
[/etc/make.conf]
PACKAGESITE=http://www.hoge.com/packages/Latest/
|
- packagesをインストールする
$ pkg_add -r vim-lite
Fetching http://www.hoge.com/packages/Latest/vim-lite.tbz... Done.
|
- packagesサイトを設定解除する
通常のpackagesサイトへ戻したい場合は、先の設定を解除しておきます。
[cshの場合]
$ unsetenv PACKAGESITE
|
[bashの場合]
$ unset PACKAGESITE
|
- [ サーバーB ] でvimがちゃんとインストールされたか確認する。
最後に、[ サーバーB ] でvimの動作確認をして完了です。
$ vim
|
cshの場合は、rehashを忘れないように。
FreeBSDの場合、もちろん、バイナリのパッケージをそのまま配布するのもOKですが、
このようにウェブサイトを経由させると更に効率的ですね。
FreeBSDのpackages は、Red Hat系でのrpmに相当しますが、基本は、portsであることを忘れてはいけません。
FreeBSDのportsは、Red Hat系のようにRed Hatという会社が管理しているわけではないので、常時、最新への更新が行われているわけではないことに注意する必要があるでしょう。
( 有名どころのソフトウェアの ports は、常に最新と言っても過言でないと思いますが、ちょっとマイナーなところは、どうしても古いまま ports が更新されていないことがあります。 )
最後は、BSD系でもLinux系で自力で make 作業となりますけどね。
この記事がFreeBSDでバイナリパッケージの配布にお悩みの方の何かお役に立てればうれしく思います。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
関連記事 :
コメントを投稿 :