cargo-updateコマンドが便利なのでGo環境でも同じようなものを探してみました.gupというものを見つけて試してみました.
gupのインストール
$ go install github.com/nao1215/gup@latest
Note
|
releasesにはいくつかの形式のパッケージやバイナリもあります. |
$GOPATH/bin
のリストを取得$ gup list air: github.com/cosmtrek/air@v1.44.0 algia: github.com/mattn/algia@v0.0.83 bluetuith: github.com/darkhz/bluetuith@v0.2.3 bsky: github.com/mattn/bsky@v0.0.61 : (以下省略)
バイナリが最新バージョンかチェックする
$ gup check check binary under $GOPATH/bin or $GOBIN [ 1/22] libdb.so/dissent (v0.0.30 / current: go1.22.6, installed: go1.23.2) [ 2/22] github.com/thushan/smash (Already up-to-date: v0.9.3 / go1.23.2) [ 3/22] github.com/mrmarble/termsvg/cmd/termsvg (Already up-to-date: v0.9.2 / go1.23.2) [ 4/22] github.com/darkhz/bluetuith (Already up-to-date: v0.2.3 / go1.23.2) [ 5/22] github.com/nao1215/gup (Already up-to-date: v0.27.5 / go1.23.2) [ 6/22] github.com/pouriyajamshidi/tcping (Already up-to-date: v1.22.1 / go1.23.2) [ 7/22] github.com/charmbracelet/glow (Already up-to-date: v1.5.1 / go1.23.2) [ 8/22] github.com/schachmat/wego (Already up-to-date: v0.0.0-20241006164746-6578d5ebf3d5 / go1.23.2) [ 9/22] github.com/mattn/bsky (Already up-to-date: v0.0.61 / go1.23.2) [10/22] github.com/antonmedv/countdown (Already up-to-date: v1.5.0 / go1.23.2) [11/22] github.com/BuddhiLW/lazywal/cmd/lazywal (Already up-to-date: v0.5.3 / go1.23.2) [12/22] github.com/mattn/efm-langserver (Already up-to-date: v0.0.53 / go1.23.2) [13/22] github.com/buildkite/terminal-to-html/v3/cmd/terminal-to-html (Already up-to-date: v3.16.3 / go1.23.2) [14/22] github.com/diamondburned/gtkcord4 (current: v0.0.19, latest: v0.0.30 / current: go1.21.6, installed: go1.23.2) [15/22] github.com/ariasmn/ugm (Already up-to-date: v1.6.0 / go1.23.2) [16/22] github.com/charmbracelet/vhs (Already up-to-date: v0.8.0 / go1.23.2) [17/22] github.com/mattn/algia (Already up-to-date: v0.0.83 / go1.23.2) [18/22] github.com/cosmtrek/air (current: v1.44.0, latest: v1.61.1 / current: go1.19.8, installed: go1.23.2) [19/22] github.com/sweetbbak/tget (current: v0.0.0-20240308040335-76c53b4462e7, latest: v0.1.1 / current: go1.22.1, installed: go1.23.2) [20/22] github.com/kkdai/chatgpt (Already up-to-date: v0.4.1 / go1.23.2) [21/22] github.com/pcarrier/vanity-keygen (Already up-to-date: v0.0.0-20220703224004-4dfc327cc534 / go1.23.2) [22/22] github.com/eeeXun/gtt (Already up-to-date: v0.0.0-20240810151233-9986dcb52543 / go1.23.2) If you want to update binaries, run the following command. $ gup update dissent gtkcord4 air tget
指定したバイナリを更新する
$ gup update tget
全てのバイナリを更新する
$ gup update
指定したバイナリを削除する
$ gup remove gtkcord4
Note
|
バイナリだけの削除のようでsourceは残ります. |
GOバイナリ環境のエクスポート,インポート
GOバイナリ環境の情報をエクスポートして別環境にインポートできます.エクスポートファイルは $XDG_CONFIG_HOME/gup/gup.conf
に書き出されます.もしくは --output
オプションでSTDOUTに出力できます.
エクスポート
$ gup export Export /home/matoken/.config/gup/gup.conf $ tail -1 ~/.config/gup/gup.conf wego = github.com/schachmat/wego
インポート
$ export GOPATH=$HOME/go-test (1) $ export PATH=$PATH:$GOPATH/bin $ go install github.com/nao1215/gup@latest (2) $ which gup /home/matoken/go-test/bin/gup $ gup list (3) gup: github.com/nao1215/gup@v0.27.5 $ rsync -avcP 192.168.0.27:~/.config/gup/gup.conf ~/.config/gup/ (4) $ gup import (5) start update based on /home/matoken/.config/gup/gup.conf update binary under $GOPATH/bin or $GOBIN [ 1/21] github.com/nao1215/gup (<from gup.conf> to v0.27.5, <from gup.conf> to ) [ 2/21] github.com/schachmat/wego (<from gup.conf> to v0.0.0-20241006164746-6578d5ebf3d5, <from gup.conf> to ) [ 3/21] github.com/mattn/algia (<from gup.conf> to v0.0.83, <from gup.conf> to ) [ 4/21] github.com/pouriyajamshidi/tcping (<from gup.conf> to v1.22.1, <from gup.conf> to ) : (以下省略)
-
テスト用の環境をGOPATHに設定
-
gupを導入
-
gupしか導入されていないのを確認
-
リモートのgup.confをコピー
-
インポート
Tip
|
Debian sid amd64環境でエクスポート,RaspberryPi OS armhf環境でインポートを試みましたがうまく行きました. |
gup update
で目的は達成できましたが,エクスポート,インポート機能がことのほか便利な感じです.
試した環境
メイン環境
$ gup list | grep gup gup: github.com/nao1215/gup@v0.27.5 $ dpkg-query -W golang golang:amd64 2:1.23~2 $ lsb_release -dr Description: Debian GNU/Linux trixie/sid Release: n/a $ arch x86_64
インポート環境
$ gup list | grep gup gup: github.com/nao1215/gup@v0.27.5 $ dpkg-query -W golang golang:armhf 2:1.19~1 $ lsb_release -dr No LSB modules are available. Description: Raspbian GNU/Linux 12 (bookworm) Release: 12 $ arch armv7l