Travis

Travis

这里支持的小组件太少,写不下😂,欢迎查看我的个人 blog <blog.lxythan2lxy.cn>

HOWTO: AURへのソフトウェアパッケージの提出

本文の永久リンク HOWTO: AUR へのパッケージの提出方法 | Travis' Blog へようこそ。


最近、Rust で書かれた gpt を使用してコミットメッセージを生成するためのツールであるgptcommitを見つけました。基本的な原理は、git diffの出力を gpt に送り、コミットメッセージとして使用できるテキストを生成することです。怠惰な人には非常に便利です。人間は本当に怠惰になりました😂

AUR(Arch User Repository)にはgptcommit-gitパッケージがありますが、バージョンは 0.1.16 で止まっているため、おそらくPKGBUILDの問題により、バージョンを手動で更新する必要があります。
AUR にはgptcommit-binもなく、また将来的な簡単なバージョンアップデートのために、自分でパッケージを作成してアップロードし、コミュニティに微々たる貢献をすることにしました☺。

まず、正当なパッケージを作成してアップロードする方法を調べるために、最も信頼性の高い Arch Wiki を参照し、Arch パッケージングガイドライン1と Arch コミットガイドライン2を調べ、ChatGPT にアドバイスを求めましょう。

2023-04-28-20-44-42.png

gptcommit の作者はリリースで、各プラットフォーム向けにコンパイル済みのバイナリファイルを提供しています。ダウンロードして解凍し、/usr/binディレクトリに配置するだけで使用できます。非常に簡単なパッケージングプロセスです。以下は作成したPKGBUILDファイルです。作成した後、makepkg -Acsコマンドを使用して、現在のディレクトリに tarball を生成し、sudo pacman -U <tarball>pkg.tar.zstを使用してインストールを完了します。

# Maintainer: travismtg <[email protected]>

pkgname=gptcommit-bin
pkgver=0.5.8
pkgrel=1
pkgdesc="A git prepare-commit-msg hook for authoring commit messages with GPT-3."
arch=('any')
url='https://github.com/zurawiki/gptcommit'
license=('MIT')
depends=()
conflicts=('gptcommit-git' 'gptcommit')
source=('https://github.com/zurawiki/gptcommit/releases/download/v0.5.8/gptcommit-x86_64-unknown-linux-gnu.tar.gz')
sha256sums=('d0efe345dd4b598a8c06bd9ba7036ae4e148141deb606c64e612e8959273cedc')

package() {
cd "$srcdir"
    mkdir -p "$pkgdir/usr/bin/"
tar zxvf gptcommit-x86_64-unknown-linux-gnu.tar.gz -C "$pkgdir/usr/bin/"
}

正常にインストールできることを確認したら、アップロードの準備ができます。

  1. まず、AUR アカウントを登録し、SSH の公開鍵を設定して自分自身を証明します。
  2. 次に、リポジトリを作成します。git clone ssh://[email protected]/gptcommit-bin.gitを使用してリモートリポジトリを作成します(はい、クローンするだけでリポジトリが作成されます)
  3. 作成したPKGBUILDファイルをリポジトリに配置し、makepkg --printsrcinfo > .SRCINFOを使用してパッケージの基本情報ファイルを生成します。
  4. git add PKGBUILD .SRCINFO && git commit -m "v0.5.8"を実行します。
  5. git push --set-upstream origin masterを実行してリモートにプッシュします。

ここまでで、公開したパッケージgptcommit-binがウェブページに表示されるようになりました。しかし、一度作成したので、さらに自動化して、新しいバージョンがあるたびに自動的に更新することにしましょう。新しいバージョンがあるたびにバージョン番号、ダウンロード URL、および sha256 情報を手動で変更するのは少し煩雑です。

#!/usr/bin/env bash
# Created by travismtg
# Thu Apr 27 11:08:31 PM CST 2023
# usage: ./update.sh /path/to/pkg

DES=$1 # パッケージのディレクトリ
cd $DES

VERSION_URL=`curl -s https://api.github.com/repos/zurawiki/gptcommit/releases/latest |\
    jq -r '.tag_name as $version | .assets[] | select(.name | contains("linux-gnu")) | $version + " " + .browser_download_url'`

VERSION=$(echo $VERSION_URL | cut -d' ' -f1 | sed 's/v//')
CURRENT_VERSION=$(grep 'pkgver=' PKGBUILD | sed 's/pkgver=//')
echo latest version is $VERSION
echo current version is $CURRENT_VERSION

if [[ $VERSION == $CURRENT_VERSION ]]; then
    echo exit
    exit
fi

URL=`echo $VERSION_URL | cut -d' ' -f2`
POSTURL=$(echo $URL | sed 's/\//\\\//g')

TARGET=$(echo $URL | grep -o 'gptcommit-x86.*tar.gz')
wget $URL -O $TARGET
SUM=$(sha256sum $TARGET | cut -f1 -d' ')

sed -i 's/^source=(.*)/source=('"'"$POSTURL"'"')/' PKGBUILD
sed -i 's/^sha256sums=(.*)/sha256sums=('"'"$SUM"'"')/' PKGBUILD
sed -i 's/^pkgver=.*/pkgver='$VERSION'/' PKGBUILD

makepkg --printsrcinfo > .SRCINFO

# commit and push
git add PKGBUILD .SRCINFO
git commit -m "$VERSION"
git push

毎回./update.sh /path/to/pkgを実行するだけで、パッケージファイルを更新できます。これらのファイルをサーバーに配置し、crontabを設定して、毎朝 10 時にバージョンの更新をチェックするようにします。これにより、gptcommit パッケージの自動更新が実現されます。

本文はここで終了です。このプロセスで最も感じたことは、ChatGPT は本当に使いやすいということです。私は単に GitHub の特定のリポジトリの最新リリースを取得し、Linux のダウンロードリンクをフィルタリングする方法について尋ねるだけで、ChatGPT が GitHub API を素早く見つけ、jqルールを書いてくれました。もちろん、これらの情報はドキュメントを参照したり、Google で検索したりすれば簡単に見つけることができますが、ChatGPT は知識を得るための時間を短縮し、私が望んでいるものを個別に推論することができる、いつも飽きない素晴らしい先生です。


Footnotes#

  1. https://wiki.archlinux.org/title/AUR_submission_guidelines

  2. https://wiki.archlinux.org/title/Arch_package_guidelines

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。