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の説明

推薦する

HTML ファイルにファイルの内容を含める方法の概要

フォーラムでは、ネットユーザーから「HTML ファイル内の別の HTML ファイルの内容を読み取るこ...

CentOS7にPostgreSQL11をインストールする方法

CentOS 7にPostgreSQL 11をインストールする PostgreSQL: 世界で最も先...

DCL を使用して MySQL でユーザーを管理し、権限を制御する方法

DCL (データ制御言語): データベースのアクセス権とセキュリティ レベルを定義し、ユーザーを作成...

MySQL GRANT ユーザー認証の実装

承認とは、ユーザーに特定の権限を付与することです。たとえば、新しく作成したユーザーに、すべてのデータ...

MySQL の order by ステートメントの最適化方法の詳細な説明

この記事では、ORDER BY文の最適化について学びます。その前に、インデックスの基礎的な理解が必要...

MySQL の結合クエリとサブクエリの問題

目次複数テーブル結合の基本構文クロス結合と直積現象クロスコネクトデカルト積現象内部結合外部結合左外部...

WeChatアプレットのスクロールビューが左右連動効果を実現

WeChatアプレットはスクロールビューを使用して左右のリンクを実現します。参考までに、具体的な内容...

JavaScript 非同期プログラミングにおける Promise の初期の使用法の詳細な説明

1. 概要Promise オブジェクトは、ES6 で提案された非同期プログラミングの仕様です。非同期...

Linux inotifyリアルタイムバックアップの実装方法の詳細説明

リアルタイム レプリケーションは、企業データをバックアップする最も重要な方法です。主に、ユーザーが送...

Vueコンポーネント通信のさまざまな方法の詳細な説明

目次1. 父から息子へ2. 息子から父へ3. 親子関係のないコンポーネントの値の転送4. ヴュークス...

dockerエラーの原因分析 終了しました (1) 4分前

Dockerエラー1. 原因を確認するdocker ログ ネクサス2. エラーの原因OpenJDK ...

JavaScript サンドボックスの探索

目次1. シナリオ2. サンドボックスの基本機能3. iframeの実装4. Webワーカーの実装5...

MySQL 権限とデータベース設計のケーススタディ

権限とデータベース設計ユーザー管理SQLyogを使用してユーザーを作成し、権限を付与する基本コマンド...

MySQL監視ツールmysql-monitorの詳細な説明

1. 概要mysql-monitor MYSQL 監視ツール、最適化ツール、1 つの Java Sp...

xshellリモート接続の自動切断の問題の解決方法の詳細な説明

xshell を使用したリモート接続システムの自動切断の問題の解決策: 1. サーバー構成サーバーは...