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

推薦する

mysql5.7.24 バージョンのインストール手順と解凍時に発生した問題の概要

1. ダウンロード参考: 2. D:\MySQL\mysql-5.7.24 などの固定の場所に解凍し...

Web デザインのヒント: ページ レイアウトの簡単なルール

繰り返し: サイト全体で特定のページ デザイン スタイルを繰り返します。繰り返し要素としては、特定の...

Nginx の realip モジュールの使い方の基礎学習

序文nginx モジュールには、公式とサードパーティの 2 種類があります。nginx のインストー...

TomcatのmaxPostSize属性を設定する際に注意する必要がある問題を解決する

必要:近い将来、大容量ファイルのアップロード機能を実装します。フロントエンドフレームワークのアップロ...

リクエストを転送したり、静的リソースファイルにアクセスしたりする複数の場所への nginx の実装

この記事では主に、リクエストを転送したり、静的リソース ファイルにアクセスしたりする nginx の...

JavaScript オブジェクト指向クラス継承ケースの説明

1. オブジェクト指向のクラス継承これまでの章では、JavaScript のオブジェクト モデルがプ...

Zabbix WEB 監視実装プロセス図

Zabbix独自のWEBインターフェースを例に、Web監視の設定を行います。環境: zabbix4....

Windows での MySQL 8.0.15 の詳細なインストールと使用のチュートリアル

この記事では、MySQL 8.0.15の詳細なインストールと使用方法のチュートリアルを参考までに紹介...

VueはGraphVisを使用して無限に拡張された関係グラフを開発します

1. GraphVis 公式サイトにアクセスして、対応する js をダウンロードします。js の新し...

Xtrabackup を使用して MySQL をバックアップおよび復元する方法

目次1. バックアップ1.1 万全の準備1.2 追加の準備2 バックアップとリカバリ2.1 データの...

webkit-box-reflect を巧みに使用してさまざまな動的効果を実現する (要約)

かなり前の記事で、 -webkit-box-reflectプロパティについて説明しました。リフレクシ...

MySQL MHA の高可用性構成とフェイルオーバーの詳細な導入手順

目次1. MHAの紹介1. MHAとは何ですか? 2. MHAの構成3. MHAの特徴2. MySQ...

HTML で選択ドロップダウン ボックスのコンテンツが不完全に表示され、部分的にカバーされる問題の解決策

今日、問題が発生しました。クエリ バーのドロップダウン ボックスの内容が長すぎて、一部が隠れてしまっ...

CSSのさまざまな背景、使用シナリオ、テクニックの詳細な分析

この記事はGitHub https://github.com/qq449245884/xiaozhi...

MySql 5.7.17 無料インストール構成チュートリアルの詳細な説明

1. mysql-5.7.17-winx64.zip インストール パッケージをダウンロードします ...