21 Feb 2015

Dropboxを使ってpacmanの野良リポジトリ

Dropboxを使ってpacmanの野良リポジトリを作って自ビルドしたツールを管理するようにしたという話
ちょっとした都合上toolchainを初め幾つかのソフトはpacmanを使わずに自ビルドしているのだけれどバージョン管理やらアンインストールやら他PCにインストールすることやら考えたら割りと面倒なことも多い.
それならもうpacmanのオレオレリポジトリ作ってそれで管理すればいいやという結論に.pacmanだとwin native symlinkもうまく扱ってくれるし.
 何故Dropboxなのか:
  • http鯖使ってもいいけどそこまでするほどのことでもない
  • ファイル名のついたURLで尚且つファイル名手前までは固定
と,理由はこれだけ

まあ別に何でも良かったのですな.
以降手順

(i) repmanでリポジトリを登録
pacman.confに手書きしてもいいけどなんとなくrepmanを使った.使う必要は全く無い.
$ repman add reoisitory_name repository_url
てな感じ.この段階ではデータベース無いからwarning出るけど無視.データベース作ってからでも良かったけどとりあえずリポジトリ登録しておきたかったら先に済ました.
普通はデータベース作ってからでおk.
DropboxのPublicフォルダはURL固定できるからそこにmingw64, mingw32, msysてな感じでフォルダ作ってそれぞれmingw64_hogeみたいな感じで適当にリポジトリ名をつける.

(ii) makepkgスクリプトを作る
/usr/bin/makepkg-templateとか参考に専用makepkgをmingw用・msys用それぞれ作る.
/etcに対応するmakepkg_*.confを作る.
mingw用ではtoolchainは/mingw{32,64}に,それ以外は/mingw{32,64}/localにインストールできるように変数を作った.

(iii) PKGBUILDを書きまくる
ひたすら書く.書き続ける.

(iv) makepkg-*して作ったパッケージの登録
作りまくったPKGBUILDをmakepkg-*((ii)で作ったスクリプト)しまくって出来たパッケージをDropboxの各フォルダに放り込む.
$ repo-add db_name package_name
$ repo-add -f files_name package_name
して各パッケージをデータベースとファイルリストに登録する.
具体的にはmingw64_hogeというリポジトリにmingw64-fuga-pkgver.pkg.tar.xzを登録する場合Dropboxの該当ディレクトリがZ:\Dropbox\Public\mingw64だとすると
$ repo-add /z/Dropbox/Public/mingw64/mingw64_hoge.db.tar.gz /z/Dropbox/Public/mingw64/mingw64-fuga-pkgver.pkg.tar.xz
$ repo-add -f /z/Dropbox/Public/mingw64/mingw64_hoge.files.tar.gz /z/Dropbox/Public/mingw64/mingw64-fuga-pkgver.pkg.tar.xz
===== 追記 (2015/04/26) =====
2015/03/15以降のpacmanではrepo-addから-f/--filesオプションが取り除かれ一発でdb, fileの両者を登録してくれるようになった
===== 追記ココマデ =====
とすればいい.
データベースやファイルリストの*.tar.gzは初めは無いと思うが一番初めに生成されるから気にしなくて良い.
更新の度に同じことを繰り返せばデータベース等は更新される.


(v) pacmanからパッケージをインストール
pacman -Syしてデータベースを同期.pacman -Slで確認してpacman -Sでインストールまでは公式のリポジトリと同じ.以上

URL公開すればもちろん自分以外も使えます.
これでインストール・アンインストールが楽になった.
こんな感じで使えてる.画像の状態までパッケージ作ったらPKGBUILD書くの飽きてきたよね.こんな簡単ならもっと早くからやっておくべきだった…



ircで質問に答えてくれたMartell氏ありがとう.

No comments:

Post a Comment