見出し画像

.debファイルをカスタマイズして、GitHubでPPAをホストして、Debianにインストールする方法(その2: .debファイルのカスタマイズ)

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



.debファイルをカスタマイズするには

.debファイルをカスタマイズするには、大きく以下の手順に分けられます。

  1. DebianやUbuntuなどの公式Webサイトから、カスタマイズしたいパッケージのDebianソースファイルをダウンロードする

  2. ダウンロードしたソースファイルを展開して、カスタマイズを行う

  3. カスタマイズしたソースファイルから、新しい.debファイルを作成する

  4. (Debian向けの場合)圧縮形式をzstd以外のものに変更する

では、作業を行っていきます。



作業環境

  • カスタマイズ作業を行う環境: elementary OS(Ubuntuベース)

  • カスタマイズするパッケージ: base-files(Debian用)

今回は例として、構造が簡単かつ変化を感じやすい、base-filesというパッケージをカスタマイズしていきます。

このbase-filesというパッケージは、ディストリビューションの情報を保持していて、例えば"neofetch"コマンドや"cat /etc/os-release"コマンドを実行した際に表示されるディストリビューション名は、このパッケージが保持する情報を元にしています。



免責事項

今回の一連の投稿の内容は確認しながら執筆しておりますが、実際に実行される際は自己責任でお願いします。
(仮想環境など、汚れても構わない環境で行うことを推奨します)



1. カスタマイズしたいパッケージをダウンロード

今回はDebian向けのパッケージを作るので、Debianのパッケージサイトからダウンロードします。


「パッケージディレクトリを検索」というところで、パッケージ提供のターゲットとなるDebianのバージョンを「ディストリビューション」から選択し、検索欄にパッケージの名前を入力して、検索します。

記事執筆時点で、testingはコードネームbookwormでしたので、こちらのページがヒットしました。


開いたページの右端の「ソースパッケージをダウンロード」にある、「<パッケージ名>.tar.xz」のリンクを右クリックして、「名前を付けてリンク先を保存…」を選択します(Google Chromeの場合)。


ブラウザによっては安全にダウンロードできない、という警告が出るかもしれませんが、公式Webサイトからダウンロードしたパッケージなので安全です。ダウンロードを完了させます。

これで、カスタマイズ元のパッケージのダウンロードが完了しました。



2. ダウンロードしたソースファイルを展開して、カスタマイズを行う

続いて、ダウンロードしたファイルを展開します。

これから先の作業で大量にファイルができるので、新しいフォルダーを作って、その中に展開します。

~$ cd ~/Downloads
~/Downloads$ mkdir -p work
~/Downloads$ mv base-files_12.3.tar.xz work
~/Downloads$ cd work
~/Downloads/work$ tar -xvf base-files_12.3.tar.xz base-files-12.3/
~/Downloads/work$ cd base-files-12.3/
~/Downloads/work/base-files-12.3$ ls
debian  etc  licenses  motd  origins  share

これでカスタマイズの準備が完了しました。

では、カスタマイズを加えていきましょう。
(今回は説明を簡単にするため、1ファイルのみ、しかも必要最低限の部分のみ変更します)

etcディレクトリ内の、os-releaseファイルを開きます。
中身はこんな感じになっていると思います。

PRETTY_NAME="Debian #OSNAME# bookworm/sid"
NAME="Debian #OSNAME#"
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/"

これを、こんなふうに書き換えます。

PRETTY_NAME="MushKinokoOS 22.10 LTS (maitake)"
NAME="MushKinokoOS"
VERSION_CODENAME=maitake
ID=mushkinoko
ID_LIKE=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

(ちょうどキノコが旬の秋なので、適当にキノコ要素を散りばめました)

例えばこのPRETTY_NAMEの部分のテキストが、"neofetch"したり設定アプリを開いたときに表示されます。
各項目についての詳細は割愛します、気になる方はfreedesktop.orgの仕様書を読んでみてください。



3. カスタマイズしたソースファイルから、新しい.debファイルを作成する

カスタマイズが完了したら、このソースファイルから新しい.debファイルを作成します。

まずは.debファイルの作成に必要なツールのインストールから。

~/Downloads/work/base-files-12.3$ sudo apt install -y build-essential

完了したら、以下のコマンドを実行します。

~/Downloads/work/base-files-12.3$ debuild -us -uc

すると、コマンドがわーっと実行されて、親ディレクトリに.debファイルが作成されます。

~/Downloads/work/base-files-12.3$ cd ..
~/Downloads/work$ ls
base-files-12.3      base-files_12.3.tar.xz       base-files_12.3_amd64.buildinfo  base-files_12.3_amd64.deb
base-files_12.3.dsc  base-files_12.3_amd64.build  base-files_12.3_amd64.changes

このbase-files_12.3_amd64.debというファイルをインストールすれば、そのPCで"neofetch"を実行したり設定アプリを開いたりすると、さっき書き換えた内容(MashKinokoOS)が表示されるようになる、という仕組みです。
(ただし、今回の一連の投稿はこういった手動でのインストールはしません。後ほど、PPAを使ってインターネット上からこの.debファイルをダウンロードしてインストールできるようにします)



4. (Debian向けの場合)圧縮形式をzstd以外のものに変更する

前回の投稿でもご紹介したように、Debianのdpkgはzstdという圧縮形式に対応していないため、3.で作成した.debファイルをこのままインストールすると、エラーになります。

dpkg-deb: エラー: アーカイブ `/home/user/Downloads/base-files_12.3_amd64.deb' はメンバー 'control.tar.zst' の未知の圧縮を利用しています。終了します
dpkg: アーカイブ /home/user/Downloads/base-files_12.3_amd64.deb の処理
中にエラーが発生しました (--unpack):
dpkg-deb --control subprocess returned error exit status 2

ということで、以下の手順を参考にしつつ、圧縮形式をzstdから変更します。


まずは必要なツールをインストール。

~/Downloads/work$ sudo apt install -y binutils

先ほど作成した.debファイルを展開します。

~/Downloads/work$ ar x base-files_12.3_amd64.deb
~/Downloads/work$ unzstd control.tar.zst
~/Downloads/work$ unzstd data.tar.zst

展開したcontrol.tarとdata.tarを、xz形式で圧縮します。

~/Downloads/work$ xz control.tar
~/Downloads/work$ xz data.tar

.debファイルを再作成します。

~/Downloads/work$ rm base-files_12.3_amd64.deb
~/Downloads/work$ ar cr base-files_12.3_amd64.deb debian-binary control.tar.xz data.tar.xz
~/Downloads/work$ ls
base-files-12.3      base-files_12.3.tar.xz       base-files_12.3_amd64.buildinfo  base-files_12.3_amd64.deb  control.tar.zst  data.tar.zst
base-files_12.3.dsc  base-files_12.3_amd64.build  base-files_12.3_amd64.changes    control.tar.xz             data.tar.xz      debian-binary

これで、Debianにインストール可能な.debファイルが完成しました。

次回以降、こちらの.debファイルを使用していきます。
(ほかのファイルは削除してしまって構いません)



まとめ

今回の投稿では、.debファイルをカスタマイズする方法を書きました。

次回は、こちらのカスタマイズしたファイルを、GitHubでホスティングしたPPAに登録してみたいと思います。