Centos 用の rpm パッケージのカスタマイズと yum リポジトリの構築に関するチュートリアル

Centos 用の rpm パッケージのカスタマイズと yum リポジトリの構築に関するチュートリアル

1 yumでソフトウェアをインストールしたときにダウンロードしたrpmパッケージを保存します

yum 設定ファイルを変更するだけです。ダウンロードしたrpmパッケージは/var/cache/yum/ディレクトリに自動的に保存されます。

[root@swag ~]# sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf
[root@swag ~]# yum install sl -y
[root@swag ~]# ツリー /var/cache/yum/x86_64/6/epel/
/var/cache/yum/x86_64/6/epel/
├── 83f14a3d88054141092be5da12eb18cb1baabd7d52e1ae38bfc98d3d5005490c-プライマリ.sqlite
├── キャッシュクッキー
├── パッケージ
│ └── sl-5.02-1.el6.x86_64.rpm
└──repomd.xml

1 つのディレクトリ、4 つのファイル

2 Nginxをコンパイルしてインストールする

# tar.gz パッケージをダウンロード
cd /home/oldboy/tools
wget -q http://nginx.org/download/nginx-1.6.3.tar.gz
# 依存パッケージをYumでインストール
yum インストール openssl openssl-devel -y
yum インストール pcre pcre-devel -y
rpm -qa pcre pcre-devel
# ユーザー追加 www
ユーザー追加 www -s /sbin/nologin -M
# コンパイルしてインストール
tar -xf nginx-1.6.3.tar.gz
nginx-1.6.3をインストールします
./configure --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --prefix=/application/nginx-1.6.3/
作成 && インストール
# ソフトリンクを作成する
ln -s /application/nginx-1.6.3/ /application/nginx
# nginxを起動する
/application/nginx/sbin/nginx
# ポート80をチェック
lsof -i :80

3 fpmツールをインストールする

まず依存パッケージをインストールします

yum -y install zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel

ruby をダウンロードしてください。fpm は ruby​​ で書かれているので、システム環境に ruby​​ が必要です。テスト中に問題が発生する可能性があるため、yum を使用して Ruby をインストールすることはお勧めしません。

[root@swag tools]# wget https://ruby.taobao.org/mirrors/ruby/ruby-2.3.0.tar.gz
[root@swag tools]# tar -xf ruby​​-2.3.0.tar.gz
[root@swag tools]# cd ruby​​-2.3.0
[root@swag ruby​​-2.3.0]# ./configure
[root@swag ruby​​-2.3.0]# make && make install
[root@swag ruby​​-2.3.0]# ruby​​ ​​-v
ruby 2.3.0p0 (2015-12-25 リビジョン 53290) [x86_64-linux]
[root@swag ~]# whereis gem
宝石: /usr/local/bin/gem
[root@swag ~]# /usr/local/bin/gem fpmをインストール
[root@swag ~]# fpm -v
1.9.3
# Alibaba Cloud の Rubygems リポジトリを追加します。デフォルトのソースは外部ソースであり、ダウンロード速度が遅いです。追加する前にネイティブ Ruby リポジトリを削除してください。[root@swag ~]# gem ソース
*** 現在の情報源 ***
https://rubygems.org/ 
[root@swag ~]# gem ソース --remove https://rubygems.org/
https://rubygems.org/ がソースから削除されました
# Ali ウェアハウスを追加 [root@swag ~]# gem ソース -a http://mirrors.aliyun.com/rubygems/
http://mirrors.aliyun.com/rubygems/ をソースに追加しました
[root@swag ~]# gem ソース
*** 現在の情報源 ***

http://mirrors.aliyun.com/rubygems/

fpm共通パラメータ
-s: ソースタイプを指定する
-t: ターゲットタイプ、つまり作成するパッケージを指定します
-n: パッケージ名を指定します
-v: パッケージのバージョン番号を指定します
-C: パッケージの相対パスを指定します
-d: 依存するパッケージを指定する
-f: 2回目のパッケージ化中にディレクトリ内に同じ名前のインストールパッケージが存在する場合は上書きされます
-p: 出力インストールパッケージのディレクトリ。現在のディレクトリに置きたくない場合は、指定する必要があります。
--post-install: パッケージのインストール後に実行されるスクリプト。--offer-install と同じ
--pre-install: パッケージのインストールが完了する前に実行されるスクリプト。--before-install と同じ
--post-uninstall: パッケージがアンインストールされた後に実行されるスクリプト。--offer-remove と同じ
--pre-uninstall: パッケージをアンインストールする前に実行するスクリプト。--before-remove と同じ

fpm でサポートされるソース タイプ パッケージ
dir: ディレクトリを必要なタイプにパッケージ化します。これは、ソースコードのコンパイルやソフトウェアパッケージのインストールに使用できます。
rpm: rpmを変換
gem: ruby​​gem パッケージを変換する
python: Python モジュールを対応する型にパッケージ化する

fpm でサポートされるターゲット タイプ パッケージ
rpm: rpm パッケージに変換する
deb: deb パッケージに変換する
solaris: solaris パッケージに変換する
puppet: puppet パッケージに変換する

4 Nginx のパッケージ化

[root@swag tools]# wget https://ruby.taobao.org/mirrors/ruby/ruby-2.3.0.tar.gz
[root@swag tools]# tar -xf ruby​​-2.3.0.tar.gz
[root@swag tools]# cd ruby​​-2.3.0
[root@swag ruby​​-2.3.0]# ./configure
[root@swag ruby​​-2.3.0]# make && make install
[root@swag ruby​​-2.3.0]# ruby​​ ​​-v
ruby 2.3.0p0 (2015-12-25 リビジョン 53290) [x86_64-linux]
[root@swag ~]# whereis gem
宝石: /usr/local/bin/gem
[root@swag ~]# /usr/local/bin/gem fpmをインストール
[root@swag ~]# fpm -v
1.9.3
# Alibaba Cloud の Rubygems リポジトリを追加します。デフォルトのソースは外部ソースであり、ダウンロード速度が遅いです。追加する前にネイティブ Ruby リポジトリを削除してください。[root@swag ~]# gem ソース
*** 現在の情報源 ***
https://rubygems.org/ 
[root@swag ~]# gem ソース --remove https://rubygems.org/
https://rubygems.org/ がソースから削除されました
# Ali ウェアハウスを追加 [root@swag ~]# gem ソース -a http://mirrors.aliyun.com/rubygems/
http://mirrors.aliyun.com/rubygems/ をソースに追加しました
[root@swag ~]# gem ソース
*** 現在の情報源 ***

[root@swag tools]# wget https://ruby.taobao.org/mirrors/ruby/ruby-2.3.0.tar.gz
[root@swag tools]# tar -xf ruby​​-2.3.0.tar.gz
[root@swag tools]# cd ruby​​-2.3.0
[root@swag ruby​​-2.3.0]# ./configure
[root@swag ruby​​-2.3.0]# make && make install
[root@swag ruby​​-2.3.0]# ruby​​ ​​-v
ruby 2.3.0p0 (2015-12-25 リビジョン 53290) [x86_64-linux]
[root@swag ~]# whereis gem
宝石: /usr/local/bin/gem
[root@swag ~]# /usr/local/bin/gem fpmをインストール
[root@swag ~]# fpm -v
1.9.3
# Alibaba Cloud の Rubygems リポジトリを追加します。デフォルトのソースは外部ソースであり、ダウンロード速度が遅いです。追加する前にネイティブ Ruby リポジトリを削除してください。[root@swag ~]# gem ソース
*** 現在の情報源 ***
https://rubygems.org/ 
[root@swag ~]# gem ソース --remove https://rubygems.org/
https://rubygems.org/ がソースから削除されました
# Ali ウェアハウスを追加 [root@swag ~]# gem ソース -a http://mirrors.aliyun.com/rubygems/
http://mirrors.aliyun.com/rubygems/ をソースに追加しました
[root@swag ~]# gem ソース
*** 現在の情報源 ***

5 その他の機械テスト

# scp rpm パッケージを転送します [root@swag ~]# scp nginx-1.6.3-1.x86_64.rpm [email protected]:/home/oldboy/tools

# テスト [root@swag3 tools]# yum localinstall nginx-1.6.3-1.x86_64.rpm -y

6 ヤム倉庫建設

createrepoをインストールする

[root@swag2 ~]# yum install createrepo -y

yumリポジトリディレクトリを作成し、repodataインデックスファイルを初期化します。

[root@swag2 ~]# mkdir -p /application/yum/centos6.9/x86_64/
[root@swag2 ~]# cd /application/yum/centos6.9/x86_64/ # カスタマイズされた rpm パッケージをこのディレクトリにコピーします [root@swag2 x86_64]# createrepo -pdo /application/yum/centos6.9/x86_64/ /application/yum/centos6.9/x86_64/

yumサービスを提供する

# ここでは Python を使用して Web サービスを提供しています。Apache や nginx を使用して Web サービスを提供することもできます [root@swag2 x86_64]# python -m SimpleHTTPServer 80 &>/dev/null & # Python の httpd モジュール [root@swag2 x86_64]# lsof -i :80
コマンド PID ユーザー FD タイプ デバイス サイズ/オフ ノード名
python 24680 ルート 3u IPv4 32493 0t0 TCP *:http (LISTEN)

新しいrpmパッケージが追加された場合は、更新する必要があります。

[root@swag2 x86_64]# createrepo --update /application/yum/centos6.9/x86_64/

クライアントはyumソースを修正する

cat >>/etc/yum.repo.d/<<EOF
[のみ]
name=サーバー
ベースURL=http://10.0.0.7    
# baseurl は yum リポジトリの IP を指定します。ポート 80 でない場合は、ポート enabled=1 を追加します。
gpgcheck=0
終了
# クライアントは nginx インストールを例に挙げます# ローカルキャッシュをクリアします[root@swag4 ~]# yum clean all
# ローカルの yum ソースリストを表示します [root@swag4 ~]# yum --enablerepo=only --disablerepo=base,extras,updates,epel list  
# ここで、--enablerepo は local.repo ファイルでのみ定義されていることに注意してください
# 例として nginx をインストールします#
yum --enablerepo=local --disablerepo=base、extras、updates、epel で nginx -y をインストールします

yum の使い方

# パッケージをインストールせずにダウンロードのみする
1. yumdownloader pcre-devel openssl-devel
2. yum --downloadonly pcre-devel openssl-devel

# yum ローカルインストール rpm パッケージ yum localinstall pcre-devel openssl-devel
# yum はソフトウェア パッケージをインストールするためにいくつかのソースを有効にし、いくつかのソースを無効にします yum --enablerepo=local --disablerepo=base,extras,updates,epel install pcre-devel openssl-devel
# GPG チェックなしの Yum インストール
yum インストール --nogpgcheck pcre-devel openssl-devel
# yum の履歴を表示
# 有効なソフトウェアリポジトリを一覧表示する yum repolist
yum repolist all # 無効になっているものも含め、すべてのソフトウェアリポジトリを一覧表示します

トラブルシューティング

# クライアントに nginx をインストールするときに次のエラーが報告された場合は、依存パッケージが不足していることが原因です。ダウンロードして yum リポジトリを更新してください。
Yum リポジトリ: createrepo --update /application/yum/centos6.9/x86_64/
クライアント: yum clean all

エラー: パッケージ: nginx-1.6.3-1.x86_64 (のみ)
必要条件: pcre-devel
エラー: パッケージ: nginx-1.6.3-1.x86_64 (のみ)
必要条件: openssl-devel

# 設定ファイルが正しく記述されているかどうかに注意してください

7 パブリックネットワークの yum ソースのミラーリングと同期

上記は作成した rpm パッケージを yum ソースに配置するだけです。しかし、別の要件があります。通常、ソフトウェアのインストールはパブリック ネットワークからダウンロードされるため、帯域幅が消費されます。そのため、パブリック ネットワークの yum ソースのリポジトリを直接使用できます。

アップストリームの yum ソースは rsync プロトコルをサポートしている必要があります。そうでない場合、rsync を同期に使用できません。 http://mirrors.ustc.edu.cn/status/

# CentOS 公式標準ソース: rsync://mirrors.ustc.edu.cn/centos/
# epel ソース: rsync://mirrors.ustc.edu.cn/epel/
# 同期コマンド:
# rsync を使用して yum ソースを同期します。帯域幅、ディスク、ダウンロード時間を節約するために、ここでは CentOS6 の rpm パッケージのみを同期します。この方法では、すべての rpm パッケージが 21G しか占有せず、完全な同期には約 300G が必要です。
# ベース ソースを同期します。ヒント: インストール システムの CD イメージには約 3G の rpm パッケージが含まれているため、再度ダウンロードする必要はありません。
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/os/x86_64/ /data/yum_data/centos/6/os/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/extras/x86_64/ /data/yum_data/centos/6/extras/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/updates/x86_64/ /data/yum_data/centos/6/updates/x86_64/
# epel ソース /usr/bin/rsync -av --exclude=debug rsync://mirrors.ustc.edu.cn/epel/6/x86_64/ /data/yum_data/epel/6/x86_64/
# イントラネット yum ソース メソッドの使用# イントラネット DNS を自分で構築できます。イントラネット DNS がない場合は、ホスト解決を使用できます。
エコー '192.168.0.200 mirrors.aliyun.com' >>/etc/hosts
# 結果表示 [root@swag5 data]# du -sh yum_data  
21G yum_データ
[root@swag5 データ]# ツリー -L 3 yum_data/
yum_data/
├── セントス
│ ├── 6
│ │ ├── 番外編
│ │ ├── os
│ │ └── アップデート
│ └── RPM-GPG-KEY-CentOS-6
├── エペル
│ └── 6
│ └── x86_64

要約する

上記は、Centos の rpm パッケージをカスタマイズし、yum リポジトリを構築する方法に関するチュートリアルです。お役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • Centos6.5 の rpm パッケージから mysql5.7 をインストールするときに発生する初期化エラーの解決策
  • CentOS 7 で rpm パッケージを使用して MySQL 5.7.18 をインストールする
  • CentOS7 は rpm パッケージを使用して mysql 5.7.18 をインストールします
  • CentOS 7 で RPM パッケージを使用して MySQL 5.7.9 をインストールするチュートリアル
  • CentOS 7 で YUM ローカル リポジトリを構築するための詳細な手順

<<:  MySQL クラスタの詳細な説明: 1 つのマスターと複数のスレーブのアーキテクチャ実装

>>:  一目でわかる$nextTickの説明

推薦する

Mybatis+mysqlはストアドプロシージャを使用してシリアル番号実装コードを生成します。

同時操作によるデータの重複を避けるために、データベースを操作するときにストアドプロシージャを使用して...

IDEA 2020.3.1 で Tomcat をデプロイし、最初の Web プロジェクトを作成するプロセスの詳細な説明

目次Tomcat の紹介Tomcat の展開Web プロジェクトの作成tomcatの設定プロジェクト...

MySQL データ型における DECIMAL の使用法の詳細な説明

MySQL データ型における DECIMAL の使用法の詳細な説明MySQL のデータ型には、INT...

HTML フォーム コンポーネントのサンプル コード

HTML フォームは、さまざまな種類のユーザー入力を収集するために使用されます。次のコードは、HTM...

ランダム点呼 Web ページを実装するための JavaScript

JavaScriptは、参考のためにランダムな点呼Webページを作成します。具体的な内容は次のとお...

CSSで背景ぼかしを設定する方法

ページを作成するときに、ページの見栄えを良くするために、背景画像を設定する必要があることがよくありま...

Bootstrap Webページレイアウトグリッドの実装

目次1. Bootstrapグリッドシステムの仕組み1.1 12グリッドシステム1.2 Bootst...

MySQLストアドプロシージャの原理と使用法の詳細な説明

この記事では、例を使用して、MySQL ストアド プロシージャの原理と使用方法を説明します。ご参考ま...

Nginx の純粋な構成でリアルタイム ログ レポートを実現するためのアイデアと方法

目次序文実装のアイデア実装手順1. Nginxをコンパイルする2. 設定ファイルは以下のとおりです要...

Raspberry PiにDockerをインストールする方法

Raspberry Pi は ARM アーキテクチャをベースとしているため、Docker のインスト...

MySQL 結合バッファの原理

目次1. MySQL 結合バッファ2. JoinBufferCacheストレージスペースの割り当て3...

Centos は chrony 時間同期サーバー プロセス図を構築します

私の環境: 3 centos7.5 1804マスター 192.168.100.140ノード1 192...

dockerでsshd操作を有効にする

まず、docker に openssh-server をインストールします。インストールが完了したら...

MySQL を暗号化および復号化するいくつかの方法 (要約)

目次前面に書かれた双方向暗号化エンコード/デコードAES_ENCRYPT/AES_DECRYPT D...

MySQL 5.7.21 のインストールと設定のチュートリアル

mysql5.7.21の簡単なインストール構成は次のとおりです。 1. MySQLのインストール1....