Arch LinuxでのDevtoolsの使用

Devtoolsパッケージは、もともとは信頼されたユーザーが公式リポジトリ用のパッケージを適切に作成するために作成されました。ただし、AURパッケージをビルドするために、あるいは修正された公式パッケージを作成するために、一般ユーザーも使用できます。

AURの入手など、AURの一般的な理解と使用については、このガイドを参照しくださいPKGBUILD。このドキュメントは、パッケージをコンパイルするために選択した方法である場合、Devtoolsに固有の手順のみを示しています。

Devtoolsは、にある個別のクリーンなArchインストールを維持します。これには/var/lib/archbuild/<TARGET>/root、パッケージグループbaseとのみが含まれますbase-devel。このクリーンインストールが存在しない場合は、自動的に作成されます。存在する場合は、その中のパッケージを自動的に更新します。Devtoolsを使用してパッケージをビルドする場合、このクリーンインストールのコピーから開始し、必要なパッケージをコピーのみにインストールし、ソースコードをパッケージにコピーし、コンパイルとパッケージ化を実行し、結果のパッケージのみをコピーします。公式リポジトリにあるものと同じ形式。

makepkg直接実行するよりもDevtoolsに利点があります。利点の1つは、base-devel作成するパッケージをコンパイル���るのに必要な他のパッケージであり、メインシステムで実行することはありません。これは定期的にアップグレードする必要のあるパッケージが少なく、心配することです。このプロセスは、主にArchパッケージのメンテナーにとってのメリットですPKGBUILDが、メンテナーがメインシステムに既にインストールしているという依存関係がリストに含まれていない場合など、が正しくない場合に簡単に明らかになります。また、パッケージのビルドが高速なマシンを使用し、ビルドしたマシンのインストールを汚染することなく、パッケージを実行する低速のマシンに結果のパッケージをコピーすることもできます。

主な欠点は、クリーンルートが常にそこにあり、約800MBを必要とし、通常、1つのコピーがより多くのスペースを占めることです。/var/lib/archbuild/Btrfsを使用する場合、クリーンルートのコピーはBtrfsスナップショットから始まるため、これらのファイルがスペースを2倍にしないことに注意してください。クリーンルートは、パッケージが作成されるたびに再インストールされないように、常にそこに保持されます。

Devtoolsを使用したコンパイル

Devtoolsをインストールします。

# pacman -S devtools

パッケージをビルドするために、Devtoolsにarchbuildはが含まれていますが、これを直接実行することはありません。また、のシンボリックリンクも含まれてい{extra, gnome-unstable, kde-unstable, staging, testing}-x86_64-buildます。実行に使用されているシンボリックリンクはarchbuild、によって検査され、使用するターゲットを決定します。これらの不安定/ステージング/テストリポジトリを使用して実行できます。これらのリポジトリには、公式リポジトリにリリースされたものよりも新しいバージョンがある場合があります。AUR以外のパッケージの公式リポジトリを使用するには、のあるディレクトリPKGBUILD、たとえばによって作成されたディレクトリでgit clone、次のコマンドを実行します。

$ extra-x86_64-build

注: このガイドの残りの部分では単にを参照しextra-x86_64-buildます。

実行が完了すると、結果は次のようになります。

  • /var/lib/archbuild/extra-x86_64/root- クリーンなchroot。パッケージグループbaseとのみを使用した最新のインストールbase-develです。
  • /var/lib/archbuild/extra-x86_64/<USERNAME>-これにはビルドchrootが含まれます。これは、クリーンなchrootのコピーであり、ビルドされるパッケージのビルドまたは実行に必要な依存関係、およびそのソースコード、コンパイル結果、パッケージが含まれています。
  • 現在のディレクトリには、パッケージとビルドログファイル、およびダウンロードされたソースコードが含まれます。

最後に、「Checking PKGBUILD」と「Checking <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz」に気付くでしょう。これらの後の行はから出力されnamcap、不正なPKGBUILDファイル、パッケージが使用していないように見える依存関係、パッケージが使用しているように見える依存関係などの問題を自動的に探します。誤検知はによって生成されることがよくありますがnamcap、調査するものを提供するための優れたツールです。パッケージが正しく機能している場合、パッケージnamcapを調べて変更が行われる必要があることを確認しない限り、出力についてメンテナに警告することはお勧めできません。

を使用pacmanしてパッケージをインストールできます。これにより、パッケージが公式リポジトリまたはローカルリポジトリにある限り、パッケージの実行に必要な依存関係がインストールされます。

ここで説明されているようにローカルリポジトリを使用するか、ファイルを直接インストールします。

# pacman -U <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz

extra-x86_64-buildこのパッケージまたは別のパッケージで今すぐ実行するか、後でいつでも実行する場合、必要に応じてクリーンなchrootを更新し、ビルドchrootを削除して、クリーンなchrootの新しいコピーにし、同じプロセスを実行します。ディレクトリに前回からソースコードがダウンロードされている場合は、それが使用されます。パッケージが開発用AURパッケージの場合、再クローンではなく、新しい変更を取得します。

内部的にはextra-x86_64-buildが実行されmakechrootpkg、内部的にはが呼び出されますmakepkg。のオプションextra-x86_64-buildは次のとおりです。

  • -c:クリーン/var/lib/archbuild/extra-x86_64/なchrootとすべてのビルドchrootディレクトリーを含むディレクトリー全体を削除して再作成することにより、chrootをクリーンアップします。これが必要になることはめったにありません。クリーンなchrootが破損した場合、またはDevtoolsが下位互換性を損なう方法でアップグレードされた場合のみです。
  • -r <dir>/var/lib/archbuild/extra-x86_64/chrootを含めるのとは別のディレクトリを使用してください。

extra-x86_64-buildafter への引数--makechrootpkg、内部で使用されるときにに渡されます。いくつかの引数は常に自動的にからextra-x86_64-buildに渡されmakechrootpkgます。これらの自動引数は-r <value given to extra-x86_64-build -r option if given, /var/lib/archbuild/extra-x86_64 otherwise> -c -nです。彼らmakechrootpkgはビルドchrootを削除してクリーンなchrootの新しいコピーにし、namcapビルドが成功した場合はパッケージで実行するように指示します。に渡すことができる一般的に使用されるオプションmakechrootpkg-l <copy name>です。これは、の代わりにビルドchrootに付けるディレクトリ名です。これは、<USERNAME>複数のコピーを維持したり、複数のパッケージを同時にコンパイルしたりするのに役立ちます。

makechrootpkgafter への引数--makepkg、パッケージをビルドするために内部で使用されるときにに渡されます。makepkgによって初めて実行されmakechrootpkg、必要に応じてソースファイルをダウンロードし、整合性チェックを実行するために、独自の変更不可能なオプションを使用して実行されます。したがって、この実行では何も転送できません。これはmakepkg、パッケージをビルドするために2回実行され、ビルドのchroot内で、パッケージのビルドと使用に必要な欠落している依存関係を自動的にインストールするように指示するmakepkg引数を常に自動的に渡します。に加えてファイル、バージョン管理システムの場合はソースコードを更新せず、ソースファイルの検証チェックを実行しません。--syncdeps --noconfirm --log --holdver --skipintegmakepkgpacmanstdout

次のフォームを使用して、これらを一緒にチェーンできます。

$ extra-x86_64-build <DEVTOOLS-OPTIONS> -- <MAKECHROOTPKG-OPTIONS> -- <MAKEPKG-OPTIONS>

/var/lib/archbuild一時ディレクトリのように扱うことができることに注意してください。複数のVultrハードドライブがある場合は、ここにRAID0(ストライプ)ファイルシステムをマウントする価値があります。RAMが大量にある場合は、RAMでバックアップされたファイルシステムをマウントすることもできますtmpfs。ビルドされたパッケージは、実行したディレクトリにコピーされます。必要にextra-x86_64-build応じて、この時点でを削除できます/var/lib/archbuild。新しいクリーンルートを作成する必要があるため、次の実行は遅くなります。または、/var/lib/archbuild/<USERNAME>次のDevtoolsの実行で自動的に削除される前に、ビルドchrootから余分なスペースを取り戻すために削除することもできます。したがって、ここにマウントされたRAID0ファイルシステムで障害が発生した場合でも、失われる可能性が最も高いのはコンパイル中です。

Devtools設定ファイル

Devtools構成ファイルに関して注意すべき点がいくつかあります。彼らはに位置している/usr/share/devtools/ような、makepkg-x86_64.confpacman-extra.conf

  • およびの/etcようなファイルについては、ファイルをその場で安全に編集できます。パッケージがアップグレードされても、変更は上書きされません。むしろ、末尾がで終わる新しい構成ファイル(前のバージョンから変更されている場合)を保存します。ただし、Devtools構成ファイルはユーザーが編集することを意図していないため、Devtoolsがアップグレードされると、警告なしにこれらのファイルへの変更が完全に上書きされます。この動作への変更が提案され、拒否されました。これにより、パッケージがすべて同じコンパイル設定で公式リポジトリに送信されるようになるためです。makepkg.confpacman.conf.pacnew/usr/share/
  • 、、およびの値はMAKEFLAGSPACKAGERではなく{SRC,SRCPKG,PKG,LOG}DESTから取得されます。/etc/makepkg.conf/usr/share/devtools/makepkg-x86_64.conf

ローカルリポジトリ

ビルドした他のパッケージに依存するパッケージをpacmanビルドする場合は、ローカルリポジトリを使用する必要があります。これにより、ビルドchroot内で実行すると、依存関係が検出されます。

ローカルリポジトリをセットアップするには、このガイドの「ローカルリポジトリ」セクションを参照してください

カスタムターゲットを作成します。

# ln -s archbuild /usr/bin/custom-x86_64-build
# cp /usr/share/devtools/pacman-{extra,custom}.conf

編集/usr/share/devtools/pacman-custom.confし、最後に以下を追加します。

[archLocalRepo]
SigLevel = Optional TrustAll
Server = file:///archLocalRepo

編集して/etc/pacman.conf、以下を追加します。これにより、ディレクトリがchrootにバインドマウントされます。

CacheDir    = /var/cache/pacman/pkg/ /archLocalRepo/

今、使用extra-x86_64-buildする代わりにこれを使用してください:

$ custom-x86_64-build

常にカスタムターゲットを使用/var/lib/archbuild/extra-x86_64-build/する場合は、chrootがにあるため、ディレクトリが存在する場合は削除できます/var/lib/archbuild/custom-x86_64-build/

パッケージの高速化

スレッド化されたパッケージを有効にするに/usr/share/devtoolsは、公式にはサポートされていない構成ファイルを編集する必要があるため、Devtoolsがアップグレードされるたびにこの変更を実行する必要があります。

Devtoolsは、パッケージ全体をアーカイブ形式に結合します。デフォルトで.tar.xzは、xz圧縮に単一のスレッドを使用します。

マルチCPUシステムでは、をxz編集し/usr/share/devtools/makepkg-x86_64.confて次の行を変更することにより、複数のスレッドの使用を許可できます。

COMPRESSXZ=(xz -c -z -)

仮想コアと同じ数のスレッドを許可するには:

COMPRESSXZ=(xz -c -z - --threads=0)

システム全体のパフォーマンスへの影響を減らすために、すべてではなく複数の仮想コアを使用できるようにするには、特定の数を追加します。

COMPRESSXZ=(xz -c -z - --threads=21)

使用している仮想コアの数より多くのスレッドを指定すると、パフォーマンスが低下します。

パッケージファイルのサイズが(大きくなる可能性がある)気にならない場合は/usr/share/devtools/makepkg-x86_64.conf、を編集して圧縮を無効にし、次の行を変更します。

PKGEXT='.pkg.tar.xz'

次のように変更します。

PKGEXT='.pkg.tar'


Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。