このステップバイステップガイドでは、Debian、Ubuntu、およびLinuxMintなどの他のAPTベースのシステムでソースからdebianパッケージを構築する方法を見てみましょう。
DebianおよびUbuntuのようなDebianベースのシステムはAdvancedPackage Toolを使用します 、または APT つまり、コマンドラインからソフトウェアをインストール、更新、アップグレード、および削除するためのものです。
通常、APTパッケージマネージャーは、リポジトリのリストを/etc/apt/sources.list
という名前のファイルに保存します。 接尾辞が.list
のファイル ディレクトリ/etc/apt/sources.list.d/
の下 。
パッケージをインストールするとき、 apt
コマンドは、これらのリポジトリから指定されたパッケージのバイナリバージョンまたはプリコンパイル済みバージョンを取得します。
バイナリパッケージのインストールに加えて、APTではパッケージのソースコードをダウンロードすることもできます。そのため、ソースにいくつかの機能を追加し、ソースコードからパッケージをビルドして、最後に変更されたバージョンのパッケージをインストールできます。
ソースからパッケージを作成する必要があるのはなぜですか?
ソースからパッケージをビルドする理由はたくさんあります。これが私が今考えることができるいくつかの理由です:
- ソースコードを調べてバグを見つけます。
- 現在積極的に開発されていないパッケージに新機能を追加します。
- ソースからパッケージの最新バージョンをインストールします。通常、公式リポジトリのパッケージは少し古い可能性があります。
- さらに重要なのは、ソースからDebianパッケージを構築する方法を学ぶことです。
必要なビルドツールをインストールする
ソースからバイナリパッケージをビルドするには、最初に必要なビルドツールをインストールする必要があります。バイナリパッケージをビルドするコマンドラインツールによっては、次のパッケージのいずれかをインストールする必要がある場合があります。
- dpkg-dev
- devscripts
これらのパッケージは、ソースコードからバイナリパッケージを構築するための多数のツールを提供します。
"dpkg-dev"
をインストールするには 、実行:
$ sudo apt install dpkg-dev
"devscripts"
をインストールするコマンド パッケージは次のとおりです:
$ sudo apt install devscripts
ソースリポジトリを有効にする
ソースリポジトリが有効になっていることを確認してください。
これを行うには、/etc/apt/sources.list
を開きます ファイル:
$ sudo vim /etc/apt/sources.list
以下のような行が表示されます:
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://in.archive.ubuntu.com/ubuntu focal main restricted # deb-src http://in.archive.ubuntu.com/ubuntu focal main restricted [...]
上記のファイルでは、1つまたは2つのハッシュ(#)で始まるすべての行は、情報提供のみを目的とした単なるコメントです。そして、ハッシュのない行はaptリポジトリです。 。
aptリポジトリでは、「deb」で始まる行はバイナリパッケージに関連しており、ユーザーはaptパッケージマネージャーを使用してインストールできます。また、「deb-src」で始まる行は、ソースパッケージを基準にしています。これは開発者にとって便利です。デフォルトでは、「deb-src」はソースリストでコメント化されています。
ソースパッケージをダウンロードするには、「deb-src」行のコメントを解除する必要があります。 #を削除します 行のコメントを解除する記号。コメントを外すと、リポジトリの行は次のようになります。
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://in.archive.ubuntu.com/ubuntu focal main restricted deb-src http://in.archive.ubuntu.com/ubuntu focal main restricted [...]
ファイルを保存して閉じます。コマンドを使用してリポジトリリストを更新します:
$ sudo apt update
ソースパッケージのダウンロード
"apt source
を使用してパッケージのソースをダウンロードします 指図。たとえば、次のコマンドは、 "Hello World!"
のソースコードをダウンロードします。 プログラム:
$ apt source hello
出力例:
Reading package lists... Done Need to get 734 kB of source archives. Get:1 http://in.archive.ubuntu.com/ubuntu focal/main hello 2.10-2ubuntu2 (dsc) [1847 B] Get:2 http://in.archive.ubuntu.com/ubuntu focal/main hello 2.10-2ubuntu2 (tar) [726 kB] Get:3 http://in.archive.ubuntu.com/ubuntu focal/main hello 2.10-2ubuntu2 (diff) [6560 B] Fetched 734 kB in 2s (336 kB/s) dpkg-source: info: extracting hello in hello-2.10 dpkg-source: info: unpacking hello_2.10.orig.tar.gz dpkg-source: info: unpacking hello_2.10-2ubuntu2.debian.tar.xz

ご覧のとおり、HelloWorldプログラムのソースコードをダウンロードしました。
$ ls hello-2.10 hello_2.10-2ubuntu2.debian.tar.xz hello_2.10-2ubuntu2.dsc hello_2.10.orig.tar.gz
ソースコードの実際の内容を表示する:
$ ls hello-2.10/ ABOUT-NLS ChangeLog INSTALL NEWS README-release aclocal.m4 configure debian lib man tests AUTHORS ChangeLog.O Makefile.am README THANKS build-aux configure.ac doc m4 po COPYING GNUmakefile Makefile.in README-dev TODO config.in contrib hello.1 maint.mk src
パッケージのビルド依存関係をインストールする
次に、そのパッケージの依存関係もインストールする必要があります。これを行うには、次を実行します:
$ sudo apt build-dep hello

これで、パッケージのソースコードがダウンロードされ、このパッケージのビルドに必要な依存関係がインストールされました。次に、ソースコードを変更します。
Debianパッケージのソースコードを変更する
パッケージソースを含むディレクトリにCdします。私たちの場合、それは hello-2.10 です 。
$ cd hello-2.10
必要に応じてコードを変更します。コードはファイル"hello.c"
にあります "src"
の下 ディレクトリ。
$ vi src/hello.c
コードを微調整したり、変更を加えたりします。コードの編集が完了したら、ファイルを保存して閉じます。
今こそ、実際の.debパッケージをビルドするときです。
ソースからDebianパッケージをビルドする
ソースコードをダウンロードして変更しました。ソースからパッケージをビルドしましょう。これは3つの方法で行うことができます:
-
"dpkg-buildpackage"
の使用 コマンド -
"debuild"
の使用 コマンド - ソースをダウンロードして直接ビルドします
方法1-dpkg-buildpackageを使用する:
"dpkg-dev"
がインストールされていることを確認してください パッケージ。
次に、次のコマンドを実行して、ソースからパッケージをビルドします。
$ dpkg-buildpackage -rfakeroot -b -uc -us
ここで
-
dpkg-buildpackage
-ソースからバイナリまたはソースパッケージをビルドするコマンド。 -
-rfakeroot
-ルート権限をシミュレートするためのfakeroot環境を作成します(所有権と権限の問題を回避するため)。 -
-b
-バイナリパッケージのみをビルドします。 -
-uc
-変更ログに暗号で署名しないでください。つまり、.buildinfo
に署名しないでください および.changes
ファイル -私たちコード>
-ソースパッケージに署名しないでください。
ソースツリーのメインディレクトリで上記のコマンドを実行していることを確認してください。そうしないと、機能しません。
ビルドが成功すると、次のようなメッセージが表示されます。
[...] dpkg-deb: building package 'hello' in '../hello_2.10-2ubuntu2_amd64.deb'. dpkg-deb: building package 'hello-dbgsym' in 'debian/.debhelper/scratch-space/build-hello/hello-dbgsym_2.10-2ubuntu2_amd64.deb'. Renaming hello-dbgsym_2.10-2ubuntu2_amd64.deb to hello-dbgsym_2.10-2ubuntu2_amd64.ddeb dpkg-genbuildinfo --build=binary dpkg-genchanges --build=binary >../hello_2.10-2ubuntu2_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included)

おめでとう!ソースから.debパッケージを正常にビルドしました。ここで、親ディレクトリに戻ると、新しく作成された.debファイルが表示されます。
$ cd ..
$ ls
出力例:
hello-2.10 hello_2.10-2ubuntu2.dsc hello_2.10-2ubuntu2_amd64.deb hello-dbgsym_2.10-2ubuntu2_amd64.ddeb hello_2.10-2ubuntu2_amd64.buildinfo hello_2.10.orig.tar.gz hello_2.10-2ubuntu2.debian.tar.xz hello_2.10-2ubuntu2_amd64.changes
方法2-デビルドを使用する
"devscripts"
がインストールされていることを確認してください パッケージ。
次に、ソースツリーから次のコマンドを実行してバイナリパッケージをビルドします。
$ debuild -b -uc -us
ビルドが成功すると、結果の .deb
パッケージは親ディレクトリに保存されます。
方法3-直接ダウンロードしてビルドする
これは、上記の2つの方法よりも簡単で簡単な方法です。このメソッドでは、パッケージのソースコードをダウンロードし、 "-compile"
を渡します。 以下の単一のコマンドラインでバイナリをビルドするオプション:
$ sudo apt-get source --compile hello
上記のコマンドは、 "hello"
のソースコードをダウンロードします .deb
をプログラムしてビルドします パッケージ化して、現在のディレクトリに保存します。
.debファイルをインストールする
.deb
がある場所に移動します ファイルが保存され、次のようにインストールされます:
$ sudo dpkg -i hello_2.10-2ubuntu2_amd64.deb
依存関係が欠落しているというエラーメッセージが表示された場合は、次を実行します。
$ sudo apt install -f
ご覧のとおり、Linuxでソースからdebianパッケージを構築するのは非常に簡単です!
関連記事:
- CheckInstallを使用してソースからパッケージを構築する方法
- 複数のプラットフォーム用のLinuxパッケージを簡単に構築する方法
- システムにすでにインストールされているDebianバイナリパッケージを再作成する
- Alienを使用してLinuxパッケージを変換する方法
- DEBパッケージをArchLinuxパッケージに変換する方法
これがお役に立てば幸いです。