見出し画像

.debファイルをカスタマイズして、GitHubでPPAをホストして、Debianにインストールする方法(その4: ホスティングしたPPAから、パッケージをDebianにインストールする)

こちらの投稿の続きです。



事前準備

カスタマイズしたパッケージをインストールする環境を用意します。
今回私は、amd64のDebian Testing(コードネーム・Bookworm)向けにパッケージを用意したので、その環境をVirtualBoxで用意しました。


以降出てくるコマンドは、これまで作業していた環境ではなく、このターゲットとなる環境で実行するものになります。



0. 作業前の状態の確認

作業後に比較できるように、作業前の状態を確認しておきましょう。

まずはbase-filesのインストールソースの一覧。
現時点では、公式リポジトリのものしか表示されません。

~$ apt-cache policy base-files
base-files:
  インストールされているバージョン: 12.3
  候補:               12.3
  バージョンテーブル:
 *** 12.3 500
        500 http://deb.debian.org/debian bookworm/main amd64 Packages
        100 /var/lib/dpkg/status


また、設定アプリでのOS名も、Debianとなっています。

「OS名」はDebian GNU/Linux bookworm/sid



1. PPAからのインストールをaptに強制させる

同じ名前のパッケージが、別のソフトウェアソースに存在する場合、aptはどちらからインストールすればよいのでしょうか。

この問題を解決するために、aptはインストールの優先順位付けを行っています。優先順位付けに用いる数値が大きいソースから順に、aptはインストールするソースを選択します。

今回は、Debianのオリジナルのbase-filesではなくカスタマイズしたbase-filesをaptくんにインストールしてもらうために、今回作成したPPAの優先順位を高くしてあげます。


まずは、必要となるツールのインストールから。

~$ sudo apt install -y curl gnupg vim


そしたら、その優先順位付けをファイルで教えてあげます。
/etc/apt/preferences.d/以下に、新しく.prefファイルを作ります。名前は何でも大丈夫です。

$ sudo vim /etc/apt/preferences.d/base_files_priority.pref

以下の内容を書き込みます。

Package: base-files
Pin: origin "ryonakano.github.io"
Pin-Priority: 999

「base-filesというパッケージに関しては、ryonakano.github.ioというソースの優先度を999(つまり最高優先度)にしてね!」という内容です。こうすることで、作成したPPAにあるbase-filesを真っ先にインストールしてくれます。

aptのソースの優先度について詳しくは、以下をご覧ください。



2. PPAを追加する

まずは、前回作成したGPG鍵をダウンロードします。
「ryonakano_ppa」の部分は何でも大丈夫です。

~$ curl -s --compressed "https://ryonakano.github.io/mushkinoko_ppa/debian/KEY.gpg" | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/mushkinoko_ppa.gpg >/dev/null

そしたらPPAを追加します。

~ $ echo "deb [signed-by=/etc/apt/trusted.gpg.d/mushkinoko_ppa.gpg] https://ryonakano.github.io/mushkinoko_ppa/debian ./" | sudo tee /etc/apt/sources.list.d/mushkinoko_ppa.list



3. カスタマイズしたパッケージをインストール

いよいよインストールです。
アップデート情報を更新して、インストールソースの情報を見てみてください。

~$ sudo apt update
~$ apt-cache policy base-files
base-files:
  インストールされているバージョン: 12.3
  候補:               12.3
  バージョンテーブル:
 *** 12.3 500
        500 http://deb.debian.org/debian bookworm/main amd64 Packages
        100 /var/lib/dpkg/status
     12.3 999
        500 https://ryonakano.github.io/mushkinoko_ppa/debian ./ Packages

先ほど設定した通り、PPAが追加されて、そちらの優先度が999になっているのがわかると思います。

この状態でbase-filesのインストールを指示すると、カスタマイズしたパッケージのほうがインストールされます。

~$ sudo apt install -y base-files

完了したら、設定アプリを開いたり、"neofetch"コマンドを実行してみてください。


「OS名」が「MashKinokoOS」になっています

カスタマイズした内容が反映されていると思います。

そして、aptで優先順位付けを行っているため、例えDebianオリジナルのbase-filesが修正されたとしても、アップデートが来ません。今回カスタマイズしたパッケージが保持されます。



まとめ

今回の一連の投稿では、以下の手順をご紹介しました。

  1. .debファイルをカスタマイズする(オリジナルに手を加える)

  2. カスタマイズしたパッケージのPPAを、GitHubでホスティングする

  3. ホスティングしたPPAから、パッケージをDebianにインストールする

ニッチな内容ではありますが、実はUbuntuベースの一部ディストリビューションは、この方法で独自のカスタマイズを施したパッケージを提供していたりします(例:elementary OSのリポジトリにも、base-files-patchedというブランチがあります)。

では、このあたりで。
読んでくださってありがとうございます。