Rpmは、 RPM Package Managerの頭字語です。 :これは、FedoraやRed HatEnterpriseLinuxなどのすべてのRedHatファミリーのディストリビューションで使用されている低レベルのパッケージマネージャーです。
rpmパッケージは、このパッケージ管理システムを使用してインストールすることを目的としたソフトウェアを含むパッケージであり、rpmパッケージは通常、ソフトウェアリポジトリを介して配布されます。このチュートリアルでは、カスタムrpmリポジトリを作成する方法と、それをソフトウェアソースとして使用するようにディストリビューションを構成する方法を学習します。
このチュートリアルでは、学習します :
- rpmリポジトリを作成する方法
- リポジトリをソフトウェアソースとして使用する方法
使用されるソフトウェア要件と規則
カテゴリ | 使用する要件、規則、またはソフトウェアバージョン |
---|---|
RedHatファミリーの配布 | |
dnf、createrepo | |
リポジトリを構成するための管理者権限 | |
#–指定されたlinux-commandを、rootユーザーとして直接、または sudo を使用してroot権限で実行する必要があります。 command $ –指定されたlinux-commandsを通常の非特権ユーザーとして実行する必要があります |
ソフトウェアのインストール
このチュートリアルのために、IP 192.168.0.39
を使用してローカルマシン上にカスタムリポジトリを作成します httpサーバーとして使用します。このマシンで最初に行う必要があるのは、 createrepo
をインストールすることです。 パッケージ。リモートマシンにインストールされているディストリビューションは、パッケージが利用可能である限り、rpmベースのディストリビューションである必要はありません。たとえば、この場合、サーバーにインストールされているシステムはDebianであるため、パッケージをインストールするには、次のコマンドを実行する必要があります。
$ sudo apt-get update && sudo apt-get install createrepo
前に述べたように、特定の例では、カスタムリポジトリでホストされているソフトウェアにHTTPプロトコル経由でアクセスできるようにする必要があるため、HTTPサーバーをインストールする必要があります。この場合、Apacheを使用します。 Debianにインストールするだけで、実行するだけです:
$ sudo apt-get install apache2
パッケージがインストールされると、いくつかの非常に簡単な手順でrpmリポジトリを作成できます。
リポジトリの作成
デフォルトのApacheVirtualHost DocumentRoot
ApacheがDebianにインストールされたときに作成されるのは/var / www / html
。この時点で、リポジトリ用のVirtualHostを作成するか、デフォルトのディレクトリの一部としてリポジトリディレクトリを作成するかを選択できます。
簡単にするために、このチュートリアルでは後者のオプションについて説明します。
$ sudo mkdir /var/www/html/repo
リポジトリ
上記のコマンドで作成したディレクトリ、デフォルトのVirtualHost DocumentRoot 、パッケージをホストし、リポジトリのベースになります。それをよりよく構造化するために、ディストリビューション、そのバージョン、および利用可能にしたいパッケージのアーキテクチャにちなんで名付けられたいくつかのサブディレクトリを作成したいと思います。たとえば、 Fedora 33 x68_64
のリポジトリを使用するとします。 、次のコマンドを実行する必要があります:
$ sudo mkdir -p /var/www/html/repo/fedora/releases/33/x86_64
次のステップは、リポジトリにデータを入力することです。私たちがしなければならないのは、利用可能にしたいパッケージを適切なリポジトリディレクトリ内に配置することだけです。この場合、例として、ソースからVSCodeエディターをコンパイルして取得したパッケージをリポジトリに追加します。このパッケージは、 code-1.56.0-1617183449.el8.x86_64.rpm
と呼ばれます。 。コピーすると、ファイル構造は次のようになります。
repo └── fedora └── releases └── 33 └── x86_64 └── code-1.56.0-1617183449.el8.x86_64.rpm
リポジトリにデータが入力されたら、 createrepo
を実行するだけです。 パッケージを含むディレクトリ内のコマンド。この場合、次のように実行します:
$ sudo createrepo /var/www/html/repo/fedora/releases/33/x86_64
このコマンドは、 repodata
という名前のディレクトリ内にリポジトリメタデータを作成します 、宛先ディレクトリに含まれているパッケージに基づいており、リポジトリが新しいパッケージで更新されるか、古いパッケージが削除されるたびに再起動する必要があります。コマンドを起動すると、ディレクトリ構造は次のようになります。
repo └── fedora └── releases └── 33 └── x86_64 ├── code-1.56.0-1617183449.el8.x86_64.rpm └── repodata ├── 22ab1d1d123bb7d7cde556bf8a8ac4daf9cdb75572f40ebdd2f399908cb7f6b9-other.xml.gz ├── 26ed9b63868b2e0263dfa817e21921c4e7542c1be9f6b7875381bba6bd78d1c6-primary.sqlite.bz2 ├── 50fc300a761812761cf9a8413a619da23cf336d49999753568ce19a97c025d44-other.sqlite.bz2 ├── a523f54b5fcd0720c182969f991f51e125728a361f31237725dc9418d5e126ea-primary.xml.gz ├── af2fa9ea5deaffca5ffc9f3e524155defa8cfa5656962845a45c8b0e984f3e19-filelists.sqlite.bz2 ├── f95849cf860f1184b97d30000ea1f9f1c35edd6d625dcd387453187510dd4a18-filelists.xml.gz └── repomd.xml
リポジトリが正常に作成されました。次に、ソフトウェアソースとして使用するようにディストリビューションを構成する必要があります。
ソフトウェアソースとしてのリポジトリの追加
rpmベースのディストリビューションに移動して、カスタムリポジトリをソフトウェアソースとして使用するためにそれを構成する方法を見てみましょう。リポジトリー構成ファイルは、 /etc/yum.repos.d
の下にあります。 ディレクトリであり、
.repo
が必要です。 拡大。ディレクトリ内を見ると、既存のものを確認できます。
$ ls /etc/yum/repos.d fedora-cisco-openh264.repo fedora-updates-testing-modular.repo fedora-modular.repo fedora-updates-testing.repo fedora.repo rpmfusion-free.repo fedora-updates-modular.repo rpmfusion-free-updates.repo fedora-updates.repo rpmfusion-free-updates-testing.repo
それでは、カスタムリポジトリ構成を作成しましょう。ファイル内に、最小限の情報セットとして、以下を提供する必要があります。
- リポジトリID
- リポジトリ名
- リポジトリbaseurl
- リポジトリのステータス
- パッケージのgpg署名を確認するかどうか
このような情報は、 ownrepo.repo
というファイルに保存されます。 、その内容は次のとおりです:
[ownrepo] name=Own repository baseurl=http://192.168.0.39/repo/fedora/releases/$releasever/$basearch enabled=1 gpgcheck=0
括弧内に報告された定義( [ownrepo]
)はリポジトリIDであり、すべてのリポジトリ定義で一意である必要があります。 name
を使用 キーリポジトリの人間が読める名前を文字列として提供しました。これはオプションです。名前が指定されていない場合、リポジトリIDは名前としても使用されます。
baseurl
を使用 キーリポジトリのURLのリストを指定します。 URLは、スペースまたはコンマで区切る必要があります。この例では、単一のURLを提供しましたが、2つの変数を使用していることがわかります。
- $ releasever
- $ basearch
最初のものの拡張、 $ releasever
、オペレーティングシステムのリリースバージョン(この場合は 33
)になります 、リポジトリをFedora33システムにインストールしているため。 2番目の変数$basearch
、は、システムの基本アーキテクチャを表す文字列で展開されます。この場合は、 x86_64
です。 。
有効コード> キーにはブール値が必要です リポジトリをアクティブと見なすかどうかを決定する値。最後に使用したキーは
gpgcheck
です。 :ブール値も必要であり、リポジトリからインストールされたパッケージに対してgpg署名チェックを実行する必要があるかどうかを判断するために使用されます。この例では、リポジトリは個人使用のみを目的としているため、チェックを無効にしました。
リポジトリが構成されたので、 code
のインストールを試みることができます 実行するだけで、そこからパッケージ化できます:
$ sudo dnf install code Own repository 451 kB/s | 13 kB 00:00 Dependencies resolved. ================================================================================================================== Package Architecture Version Repository Size ================================================================================================================== Installing: code x86_64 1.56.0-1617183449.el8 ownrepo 100 M Transaction Summary ================================================================================================================== Install 1 Package Total download size: 100 M Installed size: 294 M Is this ok [y/N]:
プロンプトに肯定的な回答を提供して確認すると、パッケージがシステムにインストールされます。
結論
この記事では、 createrepo
を使用してカスタムrpmリポジトリを作成するのがいかに簡単かを学びました。 ユーティリティ、およびソフトウェアソースを使用するためにディストリビューションにdnf構成ファイルを作成する方法を見ました。リポジトリ構成で使用できる
キーの最小限のサブセットを見ました。より詳細なリストについては、公式のdnfドキュメントを参照してください。