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 root@10.0.0.5:/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の説明

推薦する

JS はデータ URL をどのように理解するのでしょうか?

目次概要データ URL の使用を開始するデータURL構文複数言語の文字列のBase64エンコードとデ...

MySQLのSeconds_Behind_Masterの詳細な説明

目次マスターの後ろの秒数オリジナルの実装最終マスタータイムスタンプマスターとのクロック差他の実行時間...

高同時実行シナリオにおける nginx 最適化の詳細な説明

日常の運用・保守作業では、nginx サービスが頻繁に使用され、nginx の高同時実行性によって生...

MySQL 完全崩壊: クエリフィルタ条件の詳細な説明

概要実際のビジネス シナリオ アプリケーションでは、ビジネス条件に基づいて対象データを取得およびフィ...

CSS3 で画像ドロワー効果を実装するためのサンプル コード

いつものように、まずは画像効果を投稿しましょう: このエフェクトの原理は非常にシンプルです。CSS3...

JS配列の組み込みトラバーサルメソッドとその違いについての簡単な説明

目次forEach() (ES6) メソッドmap() (ES6) メソッドflatMap() メソ...

MySQLクライアント認証後の接続失敗の問題に対する完璧なソリューション

MySQL 環境をローカル (192.168.1.152) にデプロイし、リモート クライアント 1...

ElementUI ページネーション コンポーネントの使い方 Vue でのページネーション

ElementUIページングコンポーネントPagination in Vueの使用は参考になります。...

CentOS 7 に Percona Server+MySQL をインストールする

1. 環境の説明(1) CentOS-7-x86_64、カーネルバージョン uname -r は、 ...

Linux インデックスノード inode の詳細な説明

1. inodeの紹介inode を理解するには、まずファイル ストレージから始める必要があります。...

WeChat アプレットのカスタム下部ナビゲーション バー コンポーネント

この記事の例では、WeChatアプレットの下部ナビゲーションバーコンポーネントの具体的な実装コードを...

Nginx に React プロジェクトをデプロイする方法の例

テストプロジェクト: react-demo react-demo プロジェクトをサーバーにクローンし...

Vueルーティングルーターの詳細な説明

目次ルーティングプラグインをモジュール方式で使用するルートの使用宣言型ナビゲーションプログラムによる...

MySQL開発標準と使用スキルの概要

1. 命名規則1. データベース名、テーブル名、フィールド名には小文字を使用し、アンダースコアで区切...