Arch Linux 的 git migration 更新概要
Arch Linux 於 2023/05 下旬,將套件儲存庫從舊的 SVN 移轉到新的 GitLab 系統上。官方公告如下:
- 2023-05-19 Arch Linux - News: Git migration announcement
- 2023-05-21 Arch Linux - News: Git migration completed
更新
依 Arch Linux - News: Git migration completed 的 “For users” 的指引進行:
過程心得如下:
- 不一定會有
/etc/pacman.conf.pacnew
,如果沒有修改過該設定檔,而一直是使用原始預設值。那pacman
升級時,會自動更新/etc/pacman.conf
而不會留下.pacnew
的檔案- 關於
.pacnew
的機制,可進一步看 pacman/Pacnew and Pacsave - ArchWiki - 方便管理跟維護
.pacnew
的話,可使用pacman-contrib
下的pacdiff
指令
- 關於
/etc/pacman.conf
裏原本的[community]
改爲[extra]
asp
由pkgctl
取代,這是比較大的變動。
關於 pkgctl
Arch Linux 的套件有兩大來源:
- 其一是由官方維護,目前位於 Packages · GitLab
- 另一是由社羣自主維護,即 AUR (Arch User Repository)
pkgctl
主要是用於官方維護的套件庫,非 AUR,AUR 的套件仍然是照自己的方式。不過,若有需要自行 patch 官方維護下的套件時,pkgctl
仍是個方便的工具。可預先安裝設定如下:
安裝
pkgctl
的指令是在 devtools
套件下, 安裝如下:
sudo pacman -S extra/devtools
遇到問題
首次執行 sample 指令:
pkgctl repo clone linux
遇到問題如下:
==> Cloning linux ...
Cloning into 'linux'...
The authenticity of host 'gitlab.archlinux.org (2a01:4f8:222:174c::1)' can't be established.
ED25519 key fingerprint is SHA256:pUuc8tXTcCz4yk3Cl3Ijxpyog6tWmfm3ehXV1KFHHOw.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'gitlab.archlinux.org' (ED25519) to the list of known hosts.
git@gitlab.archlinux.org: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
==> ERROR: failed to clone linux
主要原因是 gitlab.archlinux.org 有存取控制,需要先註冊帳號。
另一個跳過問題的方法爲:
pkgctl repo clone --protocol https linux
註冊及設定
需要先備有:
- 2FA App
- SSH public key
gitlab.archlinux.org 有設 SSO 機制,登入流程中會重導到 “Arch Linux SSO”。 Arch Linux SSO 系統是用 Keycloak 架的。 依頁面上的連接進行註冊跟登入。也支援用 GitHub 帳號直接登入。
註: SSO 爲 Single sign-on - Wikipedia。
建帳號過程中會設定到 2FA,因此需要先備有 2FA App, ex: Aegis, FreeOTP, Google Authenticator,…。
生成帳號後,需先到 “Preferences » SSH Keys” 加進慣用的 SSH public key。
一般 Linux 系統預設是在 $HOME/.ssh/id_rsa.pub
。
若是有多組 public keys,則可參考 DeveloperWiki:How to be a packager - ArchWiki 中 ~/.ssh/config
的設定方式。
完成
上述都設定好後,再次執行
pkgctl repo clone linux
就能順利取得結果如下:
==> Cloning linux ...
Cloning into 'linux'...
remote: Enumerating objects: 5671, done.
remote: Counting objects: 100% (35/35), done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 5671 (delta 12), reused 30 (delta 11), pack-reused 5636
Receiving objects: 100% (5671/5671), 1.32 MiB | 335.00 KiB/s, done.
Resolving deltas: 100% (2809/2809), done.
==> Collecting packager identity from makepkg.conf
-> name : undefined
-> email : undefined
-> gpg-key : undefined
-> protocol: https
==> Configuring linux
完成。
2023-06-08
感謝 Arch Linux 社羣的 Sean Ho 及 Noyjk 的問題跟指教。
後來發現 pkgctl repo clone
有支援 --protocol https
的命令選項。加此選項就不用註冊跟登入 gitlab.archlinux.org 。例如:
pkgctl repo clone --protocol https linux