Linuxを日常的に使う実験ブログ

SlackBuilds.orgにSlackBuildスクリプトを投稿する

 2015-11-26

 Slackware

こんにちは。今回のテーマは『SlackBuilds.orgにSlackBuildスクリプトを投稿する』です。コミュニティによって支えられているLinuxディストリビューションは沢山あります。当ブログの読者の方の中には「コミュニティへの貢献を何かしたいけど、具体的に何をしたら良いか分からない」という方もいらっしゃるかも知れません。ユーザーリポジトリへの投稿という方法も一つの関わり方だと思います。今回はSlackwareの半公式リポジトリへの投稿です。 [adsense02] 【目次】 ユーザーリポジトリに投稿してコミュニティへ貢献する SlackBuildファイルを書いてみる 投稿するのに必要なファイル 投稿時はtarballにまとめる 作成したtarballを投稿しよう 投稿時の注意事項

ユーザーリポジトリに投稿してコミュニティへ貢献する

Linuxディストリビューションのコミュニティに参加する方法は色々ありますが、割と手軽に行えるものの一つにビルドスクリプトの投稿があります。 Arch LinuxにはAUR(Arch User Repository) というユーザーの投稿によって成り立つリポジトリがあり、ここに投稿されたビルドスクリプトはArch Linuxユーザーにとっての大きな財産となっています。 Slackwareには半公式のSlackBuilds.orgというリポジトリがあり、公式リポジトリにはないパッケージのビルドスクリプトが日々投稿されています。今やSlackBuilds.orgの存在は公式パッケージの少ないSlackwareにとって、ほとんどディストリビューションの一部となっています。今回はこのSlackBuilds.orgへの投稿を記事にしようと思います。 尚、SlackBuilds.orgについてはコチラの記事をご覧ください。

SlackBuildファイルを書いてみる

SlackBuildファイルはビルド手順を書いたシェルスクリプトです。基本的には自分がビルドした手順に沿ってコマンドを書いていけば良いと思います。ただし一般公開され、多くの人がSlackBuilds.orgのビルドスクリプトとしてsbopkgからも利用される観点から変数やパッケージをビルドする場所等はテンプレートに合わせて書くことが推奨されています。詳細はSubmission Guidlineを参照して下さい。

投稿するのに必要なファイル

投稿に際して必要最低限のファイルは以下のとおりです。

  • <パッケージ名>.SlackBuild
  • <パッケージ名>.info
  • slack-desc
  • README

<パッケージ名>.SlackBuild

メインとなるファイルです。ソースを展開してビルドしてパッケージを作成するまでの手順をシェルスクリプトで記述します。SlackBuilds.orgでは極力templete scriptに沿った形式で書くことを求めています。 筆者が投稿したzinnia用のスクリプトzinnia.SlackBuildは記事に掲載するには長いのでリンクからご覧ください。

<パッケージ名>.info

このファイルはフォーマットが規定されています。フォーマットに従って記述しないと投稿時のチェックでエラーがでます。zinniaパッケージの例を示します。

PRGNAM=“zinnia” VERSION=“0.06” HOMEPAGE=“http://taku910.github.io/zinnia/index.html” DOWNLOAD=“http://downloads.sourceforge.net/project/zinnia/zinnia/0.06/zinnia-0.06.tar.gz” MD5SUM=“5ed6213e2b879465783087a0cf6d5fa0” DOWNLOAD_x86_64="" MD5SUM_x86_64="" REQUIRES="" MAINTAINER=“Kuro_CODE25” EMAIL=“kuro.code25@gmail.com

slack-desc

このパッケージの説明を記載します。このファイルに記載された説明はpkgtoolやsbopkg等のツールで活用されます。このファイルもフォーマットが決まっていて、ハンドルーラーの中に収まるように記述します。zinnia向けに書いた例を示します。

# HOW TO EDIT THIS FILE:

The “handy ruler” below makes it easier to edit a package description.

Line up the first ’|’ above the ’:’ following the base package name, and

the ’|’ on the right side marks the last column you can put a character in.

You must make exactly 11 lines for the formatting to be correct. It’s also

customary to leave one space after the ’:’ except on otherwise blank lines.

  |-----handy-ruler------------------------------------------------------|

zinnia: zinnia(customizable and portable online hand recognition system) zinnia: zinnia: Zinnia is a simple, customizable and portable online hand recognition zinnia: system based on Support Vector Machines. zinnia: zinnia: Homepage: http://taku910.github.io/zinnia/index.html zinnia: zinnia: zinnia: zinnia: zinnia:

README

このファイルに関しては特に説明はいらないかと思いますが、ここにはパッケージの説明や依存関係やオプション等、ビルドする上での注意事項などを記載しておきます。決まったフォーマットなどはなく自由に記載できます。

投稿時はtarballにまとめる

ここまでで投稿するファイルは作成出来ました。あとはこれらのファイルをtarballにまとめて投稿するだけです。しかし、ファイル名やtarでまとめるディレクトリ名を間違えると投稿時にエラーとなります。 パッケージ名をfooとすると以下のようにfooディレクトリ以下にファイルを格納します。

foo/foo.SlackBuild foo/foo.info foo/slack-desc foo/README

次にこのfooディレクトリを以下のようなコマンドでtarballにまとめます。

$ tar -zcvf foo.tar.gz foo/

作成したtarballを投稿しよう

ここまでくれば、ほぼ作業は終わりです。投稿はとても簡単です。http://slackbuilds.org/submit/にアクセスしましょう。 tar.gzファイルをアップロードしてカテゴリーを選択肢ます。パッケージを探す際のキーワードをカンマで区切って入力します。最後に投稿者のEメールを記載します。もし、運営側に連絡事項がある場合はメッセージ欄に記載できますが、空欄でも構いません。準備が整ったら”Submit”ボタンを押してファイルをアップロードします。 01 エラーなくアップロードが完了すると審査待ちの状態になりhttp://slackbuilds.org/pending/にリストアップされます。もしスクリプトに問題がある場合はメールに運営側から連絡があると思います。

投稿時の注意事項

ライセンスはとても重要

SlackBuilds.orgに投稿する場合にはライセンスはとても重要です。オープンソースかつ修正と再配布が許可されたライセンスでないと拒否されます。そのためBSDライセンスやMITライセンスが推奨されています。多くの場合ライセンスはSlackBuildファイルに記載します。

ソースファイルは含まない

Arch LinuxのAURなども同じですが、ビルド用のスクリプトを投稿する場なのでソースファイルやバイナリファイルを含めるとリジェクトされます。

最後に

SlackBuilds.orgのパッケージ数はAURに比べるとまだまだ少ないです。他のディストリビューションでは当たり前に公式パッケージになっているものが意外に足りなかったりします。つまりそれだけ多くのビルドスクリプトを投稿する機会があるということでもあります。自分のために書いていたスクリプトを公開することで多くの人に利便性をもたらすというのはなかなか素敵なことではないでしょうか? 【関連記事】 Slackware14.1でSlackBuilds.orgを利用したパッケージ管理 Slackware14.1でsbopkgを使いパッケージを管理する Slackware 14.1にfcitx-mozcを導入して日本語環境を構築する [adsense]