GNU/Linux >> Linux の 問題 >  >> Debian

ソースからDebianパッケージを構築する方法

このステップバイステップガイドでは、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パッケージを構築する方法を学ぶことです。

必要なビルドツールをインストールする

ソースからバイナリパッケージをビルドするには、最初に必要なビルドツールをインストールする必要があります。バイナリパッケージをビルドするコマンドラインツールによっては、次のパッケージのいずれかをインストールする必要がある場合があります。

  1. dpkg-dev
  2. 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つの方法で行うことができます:

  1. "dpkg-buildpackage"の使用 コマンド
  2. "debuild"の使用 コマンド
  3. ソースをダウンロードして直接ビルドします

方法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パッケージに変換する方法

これがお役に立てば幸いです。


Debian
  1. DebianパッケージアーカイブDEBからファイルを抽出する方法

  2. Debian11BullseyeにRPMパッケージをインストールする方法

  3. Debian – Debianでパッケージのソースリポジトリを知る方法は?

  1. Debian9でソースからBrotli圧縮ツールをコンパイルする方法

  2. Debian10からDebian11にアップグレードする方法

  3. CheckInstallを使用してソースからパッケージを構築する方法

  1. Debian9にYarnをインストールする方法

  2. Debian –「安定した」Debianを実行しているコンピュータに「不安定な」Debianからいくつかのパッケージをインストールする方法は?

  3. Debian でフリーでないパッケージを有効にするにはどうすればよいですか?