やること
add-apt-repository
を用いたリポジトリの登録を、推奨される手段に置き換えてインストールする
自分の環境
$ uname -a
Linux rpiz2 6.6.31+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.31-1+rpt1 (2024-05-29) aarch64 GNU/Linux
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
手順
例として、今回インストールしようとしているパッケージです。
公式では以下のようにインストールの手順が示されています。
sudo add-apt-repository ppa:alessandro-strada/ppa sudo apt-get update sudo apt-get install google-drive-ocamlfuse
add-apt-repository
を用いたリポジトリの登録は現在非推奨なので、この部分を推奨されるものに置き換えてみます。
なお自分の環境では、最終的に以下のコマンドに集約されました。
$ sudo curl -sS 'http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0xA7AFF39895544C77C124BB46FEAC8456AF83AFEB' | sudo gpg --dearmor -o /etc/apt/keyrings/alessandro-strada.gpg
$ echo "deb [signed-by=/etc/apt/keyrings/alessandro-strada.gpg] http://ppa.launchpad.net/alessandro-strada/ppa/ubuntu kinetic main" | sudo tee -a /etc/apt/sources.list.d/alessandro-strada-ubuntu-ppa-bionic.list
$ sudo apt-get update
$ sudo apt-get install google-drive-ocamlfuse
1. 追加パッケージの調査
sudo add-apt-repository ppa:alessandro-strada/ppa
を見て、https://launchpad.net/ からalessandro-strada
を検索します
インストールしたいsudo apt-get install google-drive-ocamlfuse
に一致するパッケージがありました。
このページを開いておきます。
2. リポジトリの公開鍵を取得
追加パッケージの調査で開いたページから、Fingerprint
を控えておきます。
fingerprint="A7AFF39895544C77C124BB46FEAC8456AF83AFEB"
リポジトリの名前も控えておきます。
# ppa:alessandro-strada/ppa
# ^---------------- ^-- ここ2つ
repo="alessandro-strada"
subrepo="ppa"
以下のコマンドから、リポジトリの公開鍵を取得
curl -sS "http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x${fingerprint}" > "./${repo}.asc"
所定の位置に、取得した公開鍵をGPGキーとして配置
cat "./${repo}.asc" | sudo gpg --dearmor -o "/etc/apt/keyrings/${repo}.gpg"
ちなみにGPGキーの置き場所は、初期状態で以下の2か所用意されています。
/etc/apt/keyrings/
/etc/apt/trusted.gpg.d/
/etc/apt/trusted.gpg.d/
はOSの提供するパッケージのGPGキーを配置する場所らしいです。
3. aptにリポジトリを登録
/etc/apt/sources.list.d/
直下に、以下の赤枠部分を記述したファイルを作成していきます。
赤枠のYOUR_UBUNT_VERSION_HERE
に入れる内容を調べます。
Ubuntu または Ubuntu派生のOSの場合
/etc/os-release
に記述された、VERSION_CODENAME
の値がその箇所に入れたい値です。
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
# ^---- これ
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
Display sources.kist entries
の選択肢に、上記のJammy
が含まれています。
どうやらこのOSのバージョンに、正式に対応しているようです。
この場合、YOUR_UBUNT_VERSION_HERE
はjammy
と置き換えることになります。
Ubuntu派生のOSではない場合
筆者の環境はDebianベースの環境なので、そもそもVERSION_CODENAME
の値がUbuntuのものにはなりません。
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
# ^------- これはUbuntuのコードネームにはない
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
/etc/debian_version
を確認すると、以下のいずれかのようにVERSION_ID
、またはVERSION_CODENAME
にあたる内容が記述されています。
$ cat /etc/debian_version
bookworm/sid
$ cat /etc/debian_version
12.6
以下のページにDebianのバージョンと、対応するUbuntuのバージョンを比較して下さった方が表でまとめています。
What Debian version are the different Ubuntu versions based on? - Ask Ubuntu
自分の環境のbookworm
は、UbuntuのLunar Lobster
/Kinetic Kudu
/Jammy Jellyfish
の3つに対応しているようです。
Display sources.kist entries
の選択肢に、上記の3つがいずれも含まれています。
なんとなくで、VERSION_CODENAME=kinetic
と置き換えるようにしてみました。
この場合、YOUR_UBUNT_VERSION_HERE
はkinetic
と置き換えることになります。
記述する内容の情報が揃ったら、/etc/apt/sources.list.d/
直下にファイルを作成します。
ここにはパッケージの情報として、鍵の位置、リポジトリのURL、バージョン情報を記述します。
echo "deb [signed-by=/etc/apt/keyrings/${repo}.gpg] http://ppa.launchpad.net/${repo}/${subrepo}/ubuntu ${YOUR_UBUNT_VERSION_HERE} main" | sudo tee -a /etc/apt/sources.list.d/${repo}.list
4. インストール
パッケージリストの更新をしてみます。
警告やエラーが表示されなければ問題ないです。
sudo apt-get update
実際にパッケージをインストールします。
エラーが出なければ完了です。
sudo apt-get install google-drive-ocamlfuse