背景
MSYS2 の pacman には、本家の pacman には無い MSYS2 固有のメッセージがいくつか含まれています。
しばらく前に、これらの MSYS2 固有のメッセージのうち一部が更新されたため、日本語訳も更新する必要が出てきました。
前回、日本語訳を作成してから時間が経ち、手順を忘れてしまっていたため、次回更新する際に困らないように、メモを残しておくことにしました。
今回更新した日本語訳は PR #1992 として提出してあります。
作業手順
スタートメニューから MSYS2 64-bit
→ MSYS2 MSYS
を選択して、端末を開く。
必要なパッケージをインストール。(インストール済みなら不要。)
pacman -S --needed base-devel msys2-devel
pacman -S git
MSYS2 パッケージのリポジトリをクローン。
git clone https://github.com/msys2/MSYS2-packages.git
pacman のディレクトリに移り、ビルド。
ビルドの際に、-s
オプションを付けて、依存パッケージを自動インストールする。また、check()
に失敗するため、--nocheck
オプションを付けて、チェックはスキップする。
cd MSYS2-packages/pacman
makepkg --nocheck -s
このとき、次のようなエラーが出ることがある。
==> gpg でソースファイルの署名を検証...
pacman-5.2.1.tar.gz ... 失敗 (不明な公開鍵 XXXXXXXXXXXXXXXX)
==> エラー: PGP 鍵を検証できませんでした!
この場合は、gpg で公開鍵をインポートし、再度ビルドする。
gpg --recv-keys XXXXXXXXXXXXXXXX
makepkg --nocheck
これで、現状のパッケージがビルドできているはず。
src
ディレクトリ以下には、MSYS2 用のパッチが当たった状態のソースコードが含まれている。
日本語メッセージ用のパッチを作るために、パッチが当たっていないオリジナルのソースコードを抽出しておく。
tar xf pacman-5.2.1.tar.gz
mv pacman-5.2.1{,-orig}
日本語メッセージファイル (ja.po) を最新のソースコードに追従。
少し前に pacman のビルドは、configure + make から meson + ninja に変更されたようだが、meson + ninja で ja.po を更新する方法が分からなかったため、旧来の configure + make を使う。
cd src/pacman-5.2.1/
PKG_CONFIG="/usr/bin/pkg-config --static" ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-static --disable-shared --enable-doc --enable-doxygen --disable-git-version --with-scriptlet-shell=/usr/bin/bash --with-pkg-ext=.pkg.tar.xz
cd src/pacman/po/
make -B ja.po
ja.po が更新されたら、未翻訳のメッセージを翻訳していく。
未翻訳のメッセージは、Vim 上で /fuzzy\|^msgstr ""\(\n"\)\@!
で検索するとよい。
翻訳が終わったら、行番号などの余計な差分を取り除いてからパッチを生成。
cd ../../../..
diff -u ../pacman-5.2.1-orig/src/pacman/po/ja.po pacman-5.2.1/src/pacman/po/ja.po > ../0011-update-ja-po-for-msys2.patch
cd ..
作業の手順上、ディレクトリ階層が一致していないため、パッチを手で修正。
次に、PKGBUILD
に記載されているハッシュを合わせるために、makepkg -g
を実行。
makepkg -g > /dev/clipboard
クリップボードにハッシュがコピーされるので、PKGBUILD
内の古いハッシュを上書きして保存。
PKGBUILD
内の pkgrel
は 1 つ増やしておく。
pacman-5.2.1/src/pacman/po/ja.po
をバックアップした上で、makepkg でパッケージが正しくビルドできることを確認。作業ディレクトリを一旦削除するために -C
オプションを付ける。
makepkg --nocheck -C
ビルドできたらインストールして動作確認。
pacman -U pacman-5.2.1-10-x86_64.pkg.tar.xz
元のバージョンに戻して、その際に今回更新したメッセージが正しく表示されることを確認。
pacman -Suu