Closed1

久しぶりにUbuntuでgithub-cli を使ったら、バージョンが全然違ってた話

leviosa42leviosa42

ワイ「久しぶりにWSLのUbuntu立ち上げたわ」
ワイ「拙作テンプレートリポジトリで開発したいから、ghコマンドでシュッとcloneしてくるで」

(久しぶりに使った)Ubuntu on WSL
$ gh repo create
 What would you like to do?  [Use arrows to move, type to filter]
> Create a new repository on GitHub from scratch
  Push an existing local repository to GitHub

「あれ?テンプレートリポジトリからリポジトリを作成する項目がない...?」

「Windows側にもgh 入れてるから見てみるか」

Windows側
$ gh repo create
? What would you like to do?  [Use arrows to move, type to filter]
> Create a new repository on GitHub from scratch
  Create a new repository on GitHub from a template repository
  Push an existing local repository to GitHub

「あるな...」
「Ubuntu側のバージョンが古いのかな?」

Ubuntu
$ gh repo --version
gh version 2.4.0+dfsg1 (2022-03-23 Ubuntu 2.4.0+dfsg1-2)
https://github.com/cli/cli/releases/latest
Windows
$ scoop update # scoop自体の更新
$ scoop update * # パッケージの更新
$ gh --version
gh version 2.47.0 (2024-04-03)
https://github.com/cli/cli/releases/tag/v2.47.0

「いやリリース日、1年半も違うやん
「そりゃあ古いわ」

つまづきポイント

「そういや」
sudo apt update && sudo apt upgrade -y しとらんかったわ」

Ubuntu
$ sudo apt update && sudo apt upgrade -y
(うまくパッケージの更新ができた時の出力)

「これで**gh の更新ができたはずや**」
「バージョン見てみよ」

Ubuntu
$ gh --version
gh version 2.4.0+dfsg1 (2022-03-23 Ubuntu 2.4.0+dfsg1-2)
https://github.com/cli/cli/releases/latest

バージョンが上がっていない...?

解決した

(略)
Other sources for installation are community-maintained and thus might lag behind our release schedule.
Debian, Ubuntu, Linux, Raspberry PI OS
install:

(type -p wget >/dev/null || (sudo apt update && sudo apt-get install wget -y)) \
	&& sudo mkdir -p -m 755 /etc/apt/keyrings \
	&& wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
	&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
	&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
	&& sudo apt update \
	&& sudo apt install gh -y

update:

sudo apt update
sudo apt install gh

引用

sudo apt install gh だけじゃないんやな」
コミュニティでメンテされているソースだと、gh 公式のリリースから遅れるらしい」
「だから公式でメンテしているソースを、aptが取りに行ける設定を行っているんやな
「じゃあ手順通りにコピペして...」

Ubuntu
$ (type -p wget >/dev/null || (sudo apt update && sudo apt-get install wget -y)) \
        && sudo mkdir -p -m 755 /etc/apt/keyrings \
        && wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
        && sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
        && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
        && sudo apt update \
        && sudo apt install gh -y
Hit:1 https://ftp.udx.icscoe.jp/Linux/ubuntu jammy InRelease
Hit:2 https://ftp.udx.icscoe.jp/Linux/ubuntu jammy-updates InRelease
Hit:3 https://deb.nodesource.com/node_20.x nodistro InRelease
Get:4 https://cli.github.com/packages stable InRelease [3917 B]
Hit:5 https://ftp.udx.icscoe.jp/Linux/ubuntu jammy-backports InRelease
Get:6 https://cli.github.com/packages stable/main amd64 Packages [344 B]
Get:7 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB]
Hit:8 http://deb.gierens.de stable InRelease
Fetched 133 kB in 2s (84.5 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
3 packages can be upgraded. Run 'apt list --upgradable' to see them.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be upgraded:
  gh
1 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
Need to get 13.7 MB of archives.
After this operation, 16.6 MB of additional disk space will be used.
Get:1 https://cli.github.com/packages stable/main amd64 gh amd64 2.58.0 [13.7 MB]
Fetched 13.7 MB in 4s (3533 kB/s)
(Reading database ... 83813 files and directories currently installed.)
Preparing to unpack .../archives/gh_2.58.0_amd64.deb ...
Unpacking gh (2.58.0) over (2.4.0+dfsg1-2) ...
Setting up gh (2.58.0) ...
Processing triggers for man-db (2.10.2-1) ...

$ sudo apt update && sudo apt install -y gh
Hit:1 https://ftp.udx.icscoe.jp/Linux/ubuntu jammy InRelease
Hit:2 https://deb.nodesource.com/node_20.x nodistro InRelease
Hit:3 https://ftp.udx.icscoe.jp/Linux/ubuntu jammy-updates InRelease
Hit:4 https://ftp.udx.icscoe.jp/Linux/ubuntu jammy-backports InRelease
Hit:5 https://cli.github.com/packages stable InRelease
Hit:6 http://security.ubuntu.com/ubuntu jammy-security InRelease
Hit:7 http://deb.gierens.de stable InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
2 packages can be upgraded. Run 'apt list --upgradable' to see them.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
gh is already the newest version (2.58.0).
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.

「おぉ、Hit:5 https://cli.github.com/packages stable InRelease って言っとる」
「さっき追加した公式のソースにアクセスできとるみたいやな」

Ubuntu
$ gh --version
gh version 2.58.0 (2024-10-01)
https://github.com/cli/cli/releases/tag/v2.58.0

「うん、ちゃんとバージョンも上がっとるわ」

$ gh repo create
? What would you like to do?  [Use arrows to move, type to filter]
> Create a new repository on GitHub from scratch
  Create a new repository on GitHub from a template repository
  Push an existing local repository to GitHub

「よーしよしよしよしよしよし」

解決 !!!

まとめ: 原因は?

  • gh パッケージを gh 公式ではなく apt がメンテしているものを持ってきていた
    • gh 公式と、apt等のコミュニティで管理されているパッケージではリリースに遅れがある
  • ちゃんと公式のインストール手順を見よう

おまけ

↓自分が書いたUbuntu向けセットアップ

https://github.com/leviosa42/dotfiles/blob/6c477932e979b4de94b342693ce9cd3807f38bac/Makefile#L93-L98

「公式のソース追加してへんかったわ」
「ちゃんとインストール手順も見てへんかった気がする」
「原因はワイにあったんや...」
「でも、しっかりセットアップ用のスクリプトを管理してるワイは天才や!」
そのスクリプトが間違ってたら元も子もないんやけどな! がはは」

!!! ちゃんと公式のインストール手順を見よう !!!

~おしまい~

このスクラップは2ヶ月前にクローズされました