個人用のslackbuildsリポジトリ作ってみた
令和5年9月1日
目次
- なぜSlackware
- Slackwareのパッケージ管理
- SlackBuildの構造
- リポジトリの構造
- OpenBSDで建ててみた
なぜslackware
約一ヶ月前、メインパソコンにslackwareをインストールしました。使いたいと思ったきっかけは主に三つ:
- ドキュメントが良く、linuxの勉強もできる
- トラディショナルなunixが心地いい (ほとんどがshスクリプトで実装されててbsd系思い出す♡)
- webに頼らず問題解決や設定できることが多い
slackwareのパッケージ管理について
- slackpkgというコマンドあるが、リポジトリは一つしか使えなくて公式リポは小さい
- bsd系で見るportsシステムや、archlinuxのaurに似てる「slackbuilds」もある
- slackbuildsは手動で使う方法もあり、サードパーティツールもある (aurみたいに)
なおslackbuildsは優秀ですが、使いたいソフトが入ってなかったりするので最初はホームディレクトリでビルドしていました。しかしそのままですと、別パソコンで再現しにくいので、slackbuildでパッケージングしたいと思いました。
slackbuildの構造
一つのslackbuildに最小でも三つファイルがあります:
- slack-desc: ソフトの記載が書いてあるテキストファイル
- <APP>.info: ソフト名、バージョン、HP、メンテナーの情報色々記載されている
- <APP>.SlackBuild: ソフトをビルドしてパッケージするshスクリプト
所詮shスクリプトですから、かなり柔軟なんです。
aurみたいに、slackbuildを一個一個落としてビルド・インストールすることもできますが、依存パッケージの事前導入や更新チェックすべて自己責任になりますので、ツールを使ったほうが楽だと思います。
その尼をやってくれるプログラムは幾つかありますが、ここではsbopkgというものを使います。
slackbuildsレポジトリの構造
slackbuildsリポジトリが認識されるために最低限で必要なファイルは次二つ:
- CHECKSUMS.md5: 各ファイルのmd5ハッシュ
- ChangeLog.txt: パッケージ変更など利用者へのお知らせを書き込むテキストファイル
その他、READMEやPGP-KEYなど含めることも可能、というより一般的のようです。
CHECKSUMS.md5の更新は、次のコマンド使うと便利です:
find . -type f -exec md5sum {} \; > CHECKSUMS.md5
実際建ててみました
うちのサーバーでOpenBSD使ってますので、それにデフォルトで入っているプログラムでリポジトリサーバーをホスティングしています
unbound.conf
... local-zone: "esper." static local-data: "slackhax.esper. IN A 10.0.0.1" ...
httpd.conf
server "slackhax.esper" {
listen on lo0 port 10010
no log
root "/htdocs/slackhax.esper"
directory auto index
}
rsyncd.conf
uid = _rsync gid = _rsync [pub] path = /var/www/htdocs/slackhax.esper/./
それから、クライアント側でsbopkgが使えるリポジトリを定義しました
$ cat /etc/sbopkg/repos.d/70-esp.repo SlackHax 15.0 "EsperNet SlackHax Repo" _k rsync slackhax.esper::pub/myslackbuilds/15.0 ""
詳しくは /etc/sbopkg/repos.d/READMEで確認できます!