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

Arch Linux WebサーバーにPerl 5.28をインストールする方法

Arch Linux WebサーバーにPerl 5.28をインストールする方法

前提条件最新のArch Linuxを実行するVultrサーバー(この記事を参照)。実行中のWebサーバー(ApacheまたはNginx Sudoアクセス):コマンドが必要

Arch LinuxにPostgreSQL 11.1をインストールする方法

Arch LinuxにPostgreSQL 11.1をインストールする方法

前提条件最新のArch Linuxを実行しているVultrサーバー(この記事を参照してください。)Sudoアクセス。rootとして実行する必要のあるコマンドには、先頭に#が付いています。

Arch LinuxでMumble Serverをセットアップする

Arch LinuxでMumble Serverをセットアップする

このチュートリアルでは、Arch LinuxでMumbleサーバー(Murmur)をセットアップする方法について説明します。このチュートリアルで行われることはすべて、rootユーザーとして行われます。インストールと

Arch LinuxでTeam Fortress 2サーバーをセットアップする

Arch LinuxでTeam Fortress 2サーバーをセットアップする

このチュートリアルでは、Arch LinuxでTeam Fortress 2サーバーをセットアップする方法について説明します。sudoアクセスを持つ非rootユーザーアカウントでログインしていると思います

Arch LinuxでMakepkgを使用する

Arch LinuxでMakepkgを使用する

makepkgを直接使用すると、システムを多少汚染します。base-develパッケージグループをインストールする必要があります。このように、デフォルトでは、依存関係はonlが必要です

Arch LinuxウェブサーバーにPython 3.7をインストールする方法

Arch LinuxウェブサーバーにPython 3.7をインストールする方法

前提条件最新のArch Linuxを実行するVultrサーバー(この記事を参照)。実行中のWebサーバー(ApacheまたはNginx Sudoアクセス):コマンドが必要

Arch LinuxでのSpigotサーバーのセットアップ

Arch LinuxでのSpigotサーバーのセットアップ

このチュートリアルでは、Arch LinuxでSpigotを使用してMinecraftサーバーをセットアップする方法について説明します。このチュートリアルでは、あなたが通常のユーザー(root以外)であり、

カウンターストライクのセットアップ:Arch LinuxでのGlobal Offensive(CSGO)サーバー

カウンターストライクのセットアップ:Arch LinuxでのGlobal Offensive(CSGO)サーバー

このチュートリアルでは、Arch LinuxでCounter-Strike:Global Offensiveサーバーをセットアップする方法について説明します。このチュートリアルは、標準的な使用法でログインしたことを前提としています

Arch LinuxにMariaDB 10.3またはMySQL 8.0をインストールする方法

Arch LinuxにMariaDB 10.3またはMySQL 8.0をインストールする方法

前提条件最新のArch Linuxを実行しているVultrサーバー(この記事を参照してください。)Sudoアクセス:rootとして実行する必要のあるコマンドには、先頭に#が付いています。

Arch LinuxにMongoDB 4.0をインストールする方法

Arch LinuxにMongoDB 4.0をインストールする方法

前提条件最新のArch Linuxを実行しているVultrサーバー(この記事を参照)Sudoアクセス:rootとして実行する必要のあるコマンドには、先頭に#が付いています。

VultrサーバーへのArch Linuxのインストール

VultrサーバーへのArch Linuxのインストール

Vultrは、実行できるようにする優れたテンプレートに加えて、独自のカスタムイメージを使用できるようにする素晴らしい機能を提供します

BtrfsスナップショットでArch Linuxをインストールする

BtrfsスナップショットでArch Linuxをインストールする

序文Arch Linuxは、最先端のテクノロジーと柔軟な構成で有名な汎用ディストリビューションです。Btrfsスナップショットを使用すると、

Arch LinuxウェブサーバーにPHP 7.3をインストールする方法

Arch LinuxウェブサーバーにPHP 7.3をインストールする方法

前提条件最新のArch Linuxを実行しているVultrサーバー(この記事を参照)。ApacheまたはNginx Sudoアクセスのいずれかを実行しているWebサーバー。コマンドが必要

Arch LinuxにNginx 1.14をインストールする方法

Arch LinuxにNginx 1.14をインストールする方法

前提条件最新のArch Linuxを実行しているVultrサーバー(この記事を参照してください。)Sudoアクセス。rootとして実行する必要のあるコマンドには、先頭に#が付いています。Th

Arch Linuxでのパッケージのビルド(AURを含む)

Arch Linuxでのパッケージのビルド(AURを含む)

Arch Linuxでは、公式リポジトリはコア、エクストラ、コミュニティです。これらのパッケージはすでにコンパイルされており、pacmanによってインストールされます。前方へ

Arch LinuxにApache 2.4をインストールする方法

Arch LinuxにApache 2.4をインストールする方法

前提条件最新のArch Linuxを実行しているVultrサーバー。詳細については、このガイドを参照してください。Sudoアクセス。root arとして実行する必要があるコマンド

Arch LinuxウェブサーバーでHTTPSを使用する方法

Arch LinuxウェブサーバーでHTTPSを使用する方法

前提条件最新のArch Linuxを実行するVultrサーバー(この記事を参照)。実行中のWebサーバー(ApacheまたはNginx Sudoアクセス)必要なコマンドt

Vultrサーバーへの2019 Arch Linuxのインストール

Vultrサーバーへの2019 Arch Linuxのインストール

はじめにArch Linuxは、人気のあるディストリビューションよりも小さいながらも強力です。その哲学はかなり異なり、利点と

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

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

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

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

最近、Appleは問題を修正するための補足アップデートであるmacOS Catalina 10.15.4をリリースしましたが、このアップデートにより、Macマシンのブリックにつながる問題がさらに発生しているようです。詳細については、この記事をお読みください

原子力が必ずしも悪ではないことを証明する5つの例

原子力が必ずしも悪ではないことを証明する5つの例

原子力は、過去の出来事のために私たちが決して尊重しないことを常に軽蔑していますが、それは必ずしも悪ではありません。詳細については、投稿をお読みください。

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

これを読んで、人工知能が小規模企業の間でどのように人気を博しているか、そして人工知能がどのように成長し、競合他社に優位に立つ可能性を高めているかを理解してください。

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

私たちのコンピューターは、ジャーナリングファイルシステムと呼ばれる組織化された方法ですべてのデータを保存します。これは、検索を押すとすぐにコンピューターがファイルを検索して表示できるようにする効率的な方法です。https://wethegeek.com/?p = 94116&preview = true

ビッグデータは人工知能をどのように変えていますか?

ビッグデータは人工知能をどのように変えていますか?

ビッグデータと人工知能は流行語ですが、それらがどのように相互に関連しているか知っていますか?さて、この記事を最後まで読んで、同じことを知ってください。

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartは、PHP、jQuery、およびHTML 5で記述された無料のオープンソースのショッピングカートプラットフォームです。シンプルで軽量、使いやすいeコマースソフトウォー

DebianでNFS共有をセットアップする

DebianでNFS共有をセットアップする

NFSはネットワークベースのファイルシステムであり、コンピューターはコンピューターネットワークを介してファイルにアクセスできます。このガイドでは、NFを介してフォルダーを公開する方法について説明します

Fedora 28にMatomo Analyticsをインストールする方法

Fedora 28にMatomo Analyticsをインストールする方法

別のシステムを使用していますか?Matomo(旧Piwik)は、Google Analyticsのオープンな代替手段であるオープンソースの分析プラットフォームです。Matomoのソースはoでホストされています

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

HTTPライブストリーミング(HLS)は、Apple Inc.によって実装された非常に堅牢なストリーミングビデオプロトコルです。HLSは、ファイアウォール、プロキシ、