方法1、
ローカルisoミラーを使用してローカルyumウェアハウスを作成します。この方法はお勧めしません。yumサーバーがパブリックネットワークに接続できない環境でのみ使用されます。結局、isoミラーのパッケージは非常に限られています。
puttyのアップロードツールを使用して、完全なcentosオペレーティングシステムをアップロードします
G:\centos>pscp "CentOS-7.3-x86_64-DVD-1611 (1).iso" [email protected]:/root/
[email protected]'s password:
CentOS-7.3-x86_64-DVD-161 | 961092 kB | 11175.5 kB/s | ETA: 00:04:56 | 22%
mount -o loop CentOS-7.3-x86_64-DVD.iso /mnt
mkdir /centos7.3
cp -r /mnt/Packages/*.rpm /centos7.3/
yum install -y createrepo
createrepoを使用してインデックスを作成します
createrepo /centos7.3
インデックスを更新
createrepo --update /centos7.3
yumキャッシュデータをクリーンアップします
yum clean all
yum makecache
システムのデフォルトのyumソースを変更する
vi /etc/yum.repos.d/CentOS-Base.repo
[ base]
name=CentOS-$releasever - Base
baseurl=file:///centos7.3
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7.3
テスト環境Centos7.3
この記事に関連するfpmの知識については、[FPMを使用したrpmパッケージの作成](http://mp.weixin.qq.com/s?__biz=MzUxNzgwOTQyMQ==&mid=2247483775&idx=1&sn=c08d52afb4ba735286815f6cf28d35e1&chksm=f993351dcee4bc0bba192f24f5e729aa052210bac8771e4df4e7a8633a3619c68d10983138f5&scene=21#wechat_redirect)を参照してください。
方法1、
ローカルisoミラーを使用してローカルyumウェアハウスを作成します。この方法はお勧めしません。yumサーバーがパブリックネットワークに接続できない環境でのみ使用されます。結局、isoミラーのパッケージは非常に限られています。
mount -o loop CentOS-7.3-x86_64-DVD.iso /mnt
mkdir /centos7
cp -r /mnt/Packages/*.rpm /centos7/
createrepoを使用してインデックスを作成します
createrepo /centos7
インデックスを更新
createrepo --update /centos7
yumキャッシュデータをクリーンアップします
yum clean all
次に、yum makecache #updatecacheを使用します
システムのデフォルトのyumソースを変更する
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
vi /etc/yum.repos.d/CentOS-Base.repo
[ base]
name=CentOS-$releasever - Base
baseurl=file:///centos7
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
次に、テストするntpdateパッケージをインストールします
yum install ntpdateは、以下に示すように、ローカルのyumソースが正常にインストールされていることがわかります。
方法2、
rsyncを使用して、パブリックネットワーク上のyumリポジトリと同期します。この方法は、特にネットワークが不安定で簡単に中断される場合に推奨されます。rsyncは高速の増分バックアップツールであるため、最後に中断されたファイルから同期を継続できます。欠点は、多くのポータルyumソースがrsync同期をサポートしていないことです。
パブリックネットワークのyumソースのリポジトリファイルはここから直接ダウンロードされるため、createrepoを使用してインデックスを作成する必要はなく、同期直後に使用できます。
基本パッケージと関連するリポジトリファイル
/usr/bin/rsync -avrtzH --delete--delay-updates rsync://rsync.mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages//var/www/html/centos/7/os/x86_64/Packages/>/tmp/rsyncbase.log 2>&1/usr/bin/rsync -avrtzH --delete--delay-updates rsync://rsync.mirrors.ustc.edu.cn/centos/7/os/x86_64/repodata//var/www/html/centos/7/os/x86_64/repodata/>/tmp/rsyncbaserepo.log 2>&1
パッケージと関連するリポジトリファイルを更新します
/usr/bin/rsync -avrtzH --delete--delay-updates rsync://rsync.mirrors.ustc.edu.cn/centos/7/updates/x86_64/Packages//var/www/html/centos/7/updates/x86_64/Packages/>/tmp/rsyncupdate.log 2>&1/usr/bin/rsync -avrtzH --delete--delay-updates rsync://rsync.mirrors.ustc.edu.cn/centos/7/updates/x86_64/repodata//var/www/html/centos/7/updates/x86_64/repodata/>/tmp/rsyncupdaterepo.log 2>&1
epel拡張パック
/usr/bin/rsync -avrtzH --delete--delay-updates --exclude=SRPMS/--exclude=aarch64/--exclude=ppc64/--exclude=ppc64le/--exclude=x86_64/debug/ rsync://rsync.mirrors.ustc.edu.cn/epel/7//var/www/html/epel/7/>/tmp/rsyncepel.log 2>&1
パラメータの説明-a、-archiveアーカイブモード。これは、ファイルを再帰的に転送し、すべてのファイルの所有権を保持することを意味します
v、-verbose冗長モード出力
r、-再帰モードの再帰プロセスサブディレクトリ
t、-timesはファイルの時間情報を保持します
z、-compress送信中にバックアップされたファイルを圧縮します
H、-hard-linksはハードリンクを保持します
方法3、
reposyncを使用してパブリックネットワークのyumソースと同期します
これがテスト用のAlibabaCloudのepelソースです
1、 これで、AlibabaCloudイメージソースリポジトリファイルがローカルに送信されます。
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
2、 httpdサービスをインストールして、ストレージyumソースを提供します。
[ root@localhost~] yum install httpd -y
デフォルトの構成を使用します。特別なニーズがある場合は、構成ファイル/etc/httpd/conf/httpd.confを変更できます。
httpデフォルトのホームディレクトリ/ var / www / html
3、 yum-utilsをインストールして、reposyncサービスを提供します
yum install yum-utils -y
4、 指定されたウェアハウスIDをローカルyumソースとして選択します。
yum repolistコマンドを実行して、yumウェアハウスIDを表示します
epelをローカルyumソースとして使用し、/ var / www / htmlをyumウェアハウスのルートディレクトリとして使用します
reposync -r epel -p /var/www/html
コマンドの実行後、AlibabaCloudのepelソースはローカルの/ var / www / htmlに同期されます。epelディレクトリはrpmパッケージを格納するために/ var / www / htmlに自動的に作成されます。最初の同期には、さらに時間がかかる場合があります。長い、約1Wのマルチrpmパッケージ。
5、 createrepoコマンドは、/ var / www / html / epelの下にrpmパッケージのローカルYUMウェアハウスを作成します。目的は、repodataディレクトリを生成し、インデックス情報を自動的に作成することです。
[ root@localhost ~]# createrepo -pdo /var/www/html/epel/ /var/www/html/epel/
他のイントラネットの他のサーバーにログインし、yumソースサーバーと通信できるようにします。リポジトリファイルを書き込みます。
vim /etc/yum.repos.d/epel-7.リポジトリの内容は以下のとおりです
[ epel]
name=local epel
baseurl=http://yumソースサーバーIP/epel
enabled=1
gpgcheck=0
yum clean all、yum makecacheを実行して、yumキャッシュをクリアおよび更新します
6、 ローカルのyumソースをAlibabaCloudミラーソースと同期できるようにするために、スクリプトのタイミングタスクを使用して同期できます。
vim /root/yum-update.sh
#! /bin/bash
datetime=`date +"%Y-%m-%d"`
exec >/var/log/epel.log #同期ログ出力
reposync -d -r epel -p /var/www/html/ #ミラーソースの同期
if[ $?-eq 0];then
createrepo --update /var/www/html/epel #新しいrpmが追加されるたび,Epelインデックス情報を更新する必要があります
echo "SUCESS: $datetime epel update successful"else
echo "ERROR: $datetime epel update failed"
fi
crontab -e
3 * * 6 /bin/bash/root/yum-update.sh
独自の構成要件に属するカスタマイズされたyumウェアハウスを作成します
上記で説明したのは、パブリックyumソースからローカルに移動する方法です。必要に応じてtarパッケージを使用してコンパイルおよびインストールし、fpmツールを使用してrpmインストールパッケージを生成し、最後に生成されたrpmパッケージを独自のyumウェアハウスに配置します。
fpmツールをインストールする
yum install -y ruby rubygems ruby-devel rpm-build
gem sources --remove https://rubygems.org/
gem sources -a https://mirrors.aliyun.com/rubygems/
gem install fpm -v 1.4.0
最初にnginxを手動でコンパイルする必要があります
groupadd nginx
useradd -g nginx -s /sbin/nologin nginx
mkdir /var/log/nginx&&chown -R nginx:nginx /var/log/nginx
mkdir /usr/local/www&&chown -R nginx:nginx /usr/local/www
wget http://nginx.org/download/nginx-1.14.0.tar.gz
. /configure --prefix=/usr/local/nginx --user=nginx --group=nginx \
- - with-http_ssl_module \
- - with-http_stub_status_module \
- - with-http_flv_module \
- - with-http_gzip_static_module
make
make install DESTDIR=/tmp/nginx #インストールファイルのコピーを生成し、にインストールします/tmp/nginx
make install
rpmパッケージを生成するために必要な4つのスクリプト
rpmパッケージのプレインストールスクリプト
[ root@localhost scripts]# cat install_nginx_before.sh
#! /bin/bash
date=`date +%Y%m%d%H%M%S`[[-n `ps aux|grep sbin/nginx|grep -v grep`]]&& killall -9 nginx
if[-f /usr/local/nginx/conf/nginx.conf ];then
mv -f /usr/local/nginx/conf/nginx.conf /tmp/nginx.conf-${date}
fi
if[-d /usr/local/nginx ];then
rm -rf /usr/local/nginx
fi
[[- n `getent group nginx`]]|| groupadd nginx
[[- n `getent passwd nginx`]]|| useradd nginx -g nginx -s /sbin/nologin
exit 0
rpmインストールスクリプト
[ root@localhost scripts]# cat install_nginx_after.sh
#! /bin/bash
log="/var/log/nginx"
web="/usr/local/www"if[-d "$log"];then
rm -rf "$log"
mkdir "$log"else
mkdir "$log"
fi
if[-d "$web"];then
rm -rf "$web"
mkdir "$web"else
mkdir "$web"
fi
chown -R nginx.nginx /var/log/nginx
chown -R nginx.nginx /usr/local/www
exit 0
rpmパッケージをアンインストールする前のスクリプト
[ root@localhost scripts]# cat uninstall_nginx_before.sh
#! /bin/bash
[[- n `ps aux|grep sbin/nginx|grep -v grep`]]&& killall -9 nginx
exit 0
rpmパッケージのアンインストール後のスクリプト
[ root@localhostscripts]# cat uninstall_nginx_after.sh
#! /bin/bash
rm -rf/usr/local/nginx
rm -rf /usr/local/www
rm -rf /var/log/nginx
userdel -r nginx
exit 0
fpmコマンドパッケージ
fpm -s dir -t rpm -n nginx_test -v 1.14.0-d "pcre-devel,openssl-devel >= 1:1.0.2k-8"--pre-install /tmp/scripts/install_nginx_before.sh --post-install /tmp/scripts/install_nginx_after.sh --pre-uninstall /tmp/scripts/uninstall_nginx_before.sh --post-uninstall /tmp/scripts/uninstall_nginx_after.sh -C /tmp/nginx/
生成されたrpmをプライベートウェアハウスにコピーします
cp nginx_test12-1.14.0-1.x86_64.rpm /var/www/html/private
createrepoを使用してインデックスを作成します
createrepo /var/www/html/private/
最後に、クライアントマシンのyumウェアハウス構成ファイルを見てみましょう。ここでは、例として192.168.10.59がyumウェアハウスです。
基地の地元の倉庫
[ root@localhost tmp]#cat /etc/yum.repos.d/CentOS-Base.repo
[ base]
name=CentOS-$releasever- Base
baseurl=http://192.168.10.59/centos/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[ updates]
name=CentOS-$releasever- Updates
baseurl=http://192.168.10.59/centos/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
epelの地元の倉庫
[ root@localhost tmp]#cat /etc/yum.repos.d/epel.repo
[ epel]
name=Extra Packagesfor Enterprise Linux $releasever - $basearch
baseurl=http://192.168.10.59/epel/7/x86_64/
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=http://mirrors.sohu.com/RPM-GPG-KEY-EPEL-$releasever
**最後に、rpmパッケージのプライベートyumウェアハウスはfpm **を介して生成されます。
[ root@localhost tmp]#cat /etc/yum.repos.d/private.repo
[ private]
name=private - Base
baseurl=http://192.168.10.59/private/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
最初にyumcleanをすべて実行してから、yummakecacheを実行します
yum repolistコマンドを実行して、yumウェアハウスIDを表示します
yum installnginx_test12を実行します
nginx_test12テストパッケージがyumを介して正常にインストールできることがわかります。
https://blog.csdn.net/u013127762/article/details/54314550
http://blog.51cto.com/gdlwolf/1729020
http://www.mamicode.com/info-detail-1839438.html
Recommended Posts