在离线环境中安装yum仓库和ruby
背景和概述
我目前在某家SI公司工作,我觉得SIer处理的项目经验上来说,更多是基于脱机环境开发的。
如果在这种离线环境下进行环境构建,可能会发生以下情况。(考虑到安全性等各种背景情况,故选择此离线环境。)
- 業務上必要なツールをシェルで作りがちになる。yumの便利なパッケージやらRubyやらPythonやらの便利なライブラリを利用すれば、再発明が必要ないのにそもそものライブラリが入っていなかったり。枷になることが多い。。
我觉得在这个没有网络的环境下,有很多人感到困扰。对于没有环境搭建技能的应用负责人来说,可能无法解决这个问题,导致生产力下降,产生不必要的工作。
本文中記述了在离线环境下搭建yum仓库并使Ruby可用的步骤说明。需要注意的是,在搭建离线环境之前,需要在可连接互联网的环境中下载所需资源。
[环境]
-
- オフライン環境(以下、オフラインマシン)
CentOS7
Nginx, Vim, dstat, sysstatをインストール
Rubyをインストール
インターネットにつながる環境(以下、オンラインマシン)
CentOS7 (Vagrantで構築)
何もインストールされていないような状態から以降の手順を実施してください。
步骤1:在在线机器上下载yum资料库。
通过连接到互联网的在线设备下载资源。目的是将yum存储库的资源整理在一起。稍后将整理好的资源带到离线设备上。
# yumリポジトリ構築用ディレクトリ。ここにyumリポジトリ構築用のライブラリをダウンロードします。
mkdir yum_repo
# vim, dstat,sysstatのライブラリをダウンロード。
sudo yum install -y vim dstat sysstat --downloadonly --downloaddir=yum_repo
# Nginxのライブラリダウンロード
cat <<EOF | sudo tee /etc/yum.repos.d/nginx.repo > /dev/null
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/x86_64
gpgcheck=0
enabled=1
EOF
sudo yum install -y nginx --downloadonly --downloaddir=yum_repo
重点在于–downloadonly –downloaddir=yum_repo这部分。这个操作是下载库文件而不是进行安装。
一旦您下载了所需的资料,就可以构建yum软件仓库。
# yumリポジトリ構築
sudo yum -y install createrepo
sudo createrepo --simple-md-filenames yum_repo
biến môi trường môi trường xanh
tar cvfz yum_repo.tar.gz yum_repo
在这里创建的yum_repo.tar.gz将在第3步中使用。
第二步:在在线机器上下载Ruby资源。
我們將在連接到互聯網的在線機器上下載Ruby資源,目的是為了整合這些資源並稍後將其轉移到離線機器上。
# インストールに必要なライブラリをインストール
sudo yum install -y git
sudo yum install -y bzip2 gcc openssl-devel readline-devel zlib-devel
# 注意事項) ここでユーザを作っていますが、
# このユーザはオフラインマシンでRubyを利用するユーザと合わせてください。
# 以下の例では、`sample`ユーザとしています。
sudo useradd sample
sudo su - sample
git clone https://github.com/rbenv/rbenv.git rbenv
mkdir rbenv/plugins
git clone https://github.com/rbenv/ruby-build.git rbenv/plugins/ruby-build
chmod -R 777 $HOME/rbenv
export RBENV_ROOT="${HOME}/rbenv"
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init -)"
rbenv install 2.5.0
rbenv global 2.5.0
gem source --add http://rubygems.org
# ここは必要に応じて変えてください。
# 筆者の場合は、オフライン環境で構成管理をしたかったため、下記の資材をダウンロードしています。
gem install bundler
gem install itamae -v "1.9.11"
gem install capistrano -v "3.10.2"
gem install serverspec -v "2.41.3"
gem install cassandra-driver -v "3.2.2"
gem install parallel -v "1.12.1"
gem install rspec -v "3.7.0"
我会稳固它。
tar cvfz rbenv.tar.gz rbenv
在这里创建的rbenv.tar.gz将在第4步中使用。
步骤3. 在离线机器上创建yum存储库。
这个任务将在离线机器上执行。
请将在步骤1中创建的yum_repo.tar.gz文件传输到离线机器上,并执行以下命令。
# /etc/yum.repos.d/配下のrepoファイルを無効化しておきます。
for f in /etc/yum.repos.d/CentOS-*repo; do sudo mv $f{,.back}; done
sudo yum clean all
# yum_repoを/usr/share/resources配下に解凍します。
sudo mkdir -p /usr/share/resources
sudo tar xvfz yum_repo.tar.gz -C /usr/share/resources
# repoファイルを作成します。
cat << EOF | sudo tee /etc/yum.repos.d/local.repo > /dev/null
[local-repository]
name=Headway repository
baseurl=file:///usr/share/resources/yum_repo
gpgcheck=0
enabled=1
EOF
我已经成功在离线机器上构建了仓库。
请使用”yum install”命令确认是否已成功构建。
sudo yum install vim nginx sysstat dstat
第四步骤:让离线计算机能够使用Ruby。
# sampleユーザでRubyを使えるようにします。
# このユーザは手順3に合わせてください。
sudo su - sample
# rbenv.tar.gzを解凍してください。
tar xvfz rbenv.tar.gz -C ~/
chown -R sample:sample ~/rbenv
# sampleユーザのbash_profileにRubyの環境変数を追加してください。
echo 'export RBENV_ROOT="$HOME/rbenv"' >> ~/.bash_profile
echo 'export PATH="$RBENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
一旦完成设置后,建议您尝试用sample用户来确认Ruby是否可用。
$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]
$ itamae version
Itamae v1.9.11
$ cap -V
Capistrano Version: 3.10.2 (Rake Version: 12.3.0)
以上是在离线环境下构建yum软件源并使Ruby可用的步骤。希望对您有所帮助,这些步骤可以应用到其他场景中。