久しぶりにUbuntuでgithub-cli を使ったら、バージョンが全然違ってた話
ワイ「久しぶりにWSLのUbuntu立ち上げたわ」
ワイ「拙作テンプレートリポジトリで開発したいから、gh
コマンドでシュッとcloneしてくるで」
$ 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
入れてるから見てみるか」
$ 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側のバージョンが古いのかな?」
$ 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
$ 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
しとらんかったわ」
$ sudo apt update && sudo apt upgrade -y
(うまくパッケージの更新ができた時の出力)
「これで**gh
の更新ができたはずや**」
「バージョン見てみよ」
$ 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が取りに行ける設定を行っているんやな」
「じゃあ手順通りにコピペして...」
$ (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
って言っとる」
「さっき追加した公式のソースにアクセスできとるみたいやな」
$ 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向けセットアップ
「公式のソース追加してへんかったわ」
「ちゃんとインストール手順も見てへんかった気がする」
「原因はワイにあったんや...」
「でも、しっかりセットアップ用のスクリプトを管理してるワイは天才や!」
「そのスクリプトが間違ってたら元も子もないんやけどな! がはは」
!!! ちゃんと公式のインストール手順を見よう !!!
~おしまい~