![見出し画像](https://assets.st-note.com/production/uploads/images/89123025/rectangle_large_type_2_adcd501efaf901f2d4a36f6de5c6ab25.png?width=1200)
.debファイルをカスタマイズして、GitHubでPPAをホストして、Debianにインストールする方法(その2: .debファイルのカスタマイズ)
こちらの投稿の続きです。
.debファイルをカスタマイズするには
.debファイルをカスタマイズするには、大きく以下の手順に分けられます。
DebianやUbuntuなどの公式Webサイトから、カスタマイズしたいパッケージのDebianソースファイルをダウンロードする
ダウンロードしたソースファイルを展開して、カスタマイズを行う
カスタマイズしたソースファイルから、新しい.debファイルを作成する
(Debian向けの場合)圧縮形式をzstd以外のものに変更する
では、作業を行っていきます。
作業環境
カスタマイズ作業を行う環境: elementary OS(Ubuntuベース)
カスタマイズするパッケージ: base-files(Debian用)
今回は例として、構造が簡単かつ変化を感じやすい、base-filesというパッケージをカスタマイズしていきます。
このbase-filesというパッケージは、ディストリビューションの情報を保持していて、例えば"neofetch"コマンドや"cat /etc/os-release"コマンドを実行した際に表示されるディストリビューション名は、このパッケージが保持する情報を元にしています。
免責事項
今回の一連の投稿の内容は確認しながら執筆しておりますが、実際に実行される際は自己責任でお願いします。
(仮想環境など、汚れても構わない環境で行うことを推奨します)
1. カスタマイズしたいパッケージをダウンロード
今回はDebian向けのパッケージを作るので、Debianのパッケージサイトからダウンロードします。
「パッケージディレクトリを検索」というところで、パッケージ提供のターゲットとなるDebianのバージョンを「ディストリビューション」から選択し、検索欄にパッケージの名前を入力して、検索します。
![](https://assets.st-note.com/img/1665908162424-zc4XbffeyK.png?width=1200)
記事執筆時点で、testingはコードネームbookwormでしたので、こちらのページがヒットしました。
開いたページの右端の「ソースパッケージをダウンロード」にある、「<パッケージ名>.tar.xz」のリンクを右クリックして、「名前を付けてリンク先を保存…」を選択します(Google Chromeの場合)。
![](https://assets.st-note.com/img/1665908283193-sViokD0XDV.png)
ブラウザによっては安全にダウンロードできない、という警告が出るかもしれませんが、公式Webサイトからダウンロードしたパッケージなので安全です。ダウンロードを完了させます。
![](https://assets.st-note.com/img/1665908452609-f7ID7iK1qj.png)
これで、カスタマイズ元のパッケージのダウンロードが完了しました。
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に登録してみたいと思います。