こんにちは!
BFT名古屋支店の佐野です。
今回はRHEL 6系インスタンスにgcloud CLIを導入するために必要なものと、gcloud CLIそのものを実際に導入してみるお話です。
実際に行なった手順を解説も踏まえてお話していきます。
なお、この記事は前に書いた「【GCP】プライベートな場所のRHEL 6系インスタンスにgcloud CLIをインストールした話とその方法 その①(前提編)」の続きです。
導入や手順の前提となるものはそちらに記載していますので、そちらも併せてお読みください。
はじめに
前回の記事のおさらいですが、RHEL 6系のインスタンスにgcloud CLIを導入するためには以下の流れで各種インストールとビルドを行なう必要があります。 この記事ではこれを順に解説していきます。
- 依存関係にあるRPMパッケージをインストール
- バージョンが1.0.2または1.1以上のOpenSSLをソースパッケージからビルド
- バージョンが3.7.2以上のSQLiteをソースパッケージからビルド
- バーションが3.5~3.9のPython3をソースパッケージからビルド
- gcloud CLIをインストール
なお、依存関係のRPMパッケージの内容やソースパッケージのダウンロード元は前回の記事を参照ください。
ソースパッケージや依存関係にあるRPMパッケージを配置し、RPMパッケージをインストールする
cloud CLIをインストールするインスタンスに/tmpディレクトリを作成し、teratermのSSL SCP機能などを使って必要なRPMパッケージやソースパッケージを配置します。
その後、以下のコマンドを実行します。
cd /tmp/ sudo rpm -ivh --force *.rpm
このコマンドを実行すると、/tmp配下のRPMパッケージをインストールできます。
必要なRPMパッケージをインストールしたら、次はOpenSSLのビルドです。
OpenSSL をインストールする
先の手順で/tmpにOpenSSLソースパッケージを配置しましたが、まずはこれをOpenSSLをインストールする場所に移動します。
既に/tmpが作業ディレクトリとなっているはずなので、以下のコマンドで/tmpから/srcにパッケージを移します。
(コマンドはOpenSSLのバージョンが1.1.1cの場合です)
sudo mv openssl-1.1.1c.tar.gz -t /usr/local/src/
続いて作業ディレクトリを/srcに移し、tarコマンドを使ってソースパッケージを展開しましょう。
cd /usr/local/src/ sudo tar xvzf openssl-1.1.1c.tar.gz
展開するとOpenSSLのディレクトリができているので、作業ディレクトリをそちらに移します。
cd openssl-1.1.1c/
その後、configureスクリプトを実行してMakeファイルを作成します。
この時にオプションとして/usr/local配下へインストールすること、シェアードライブラリとしてコンパイルすること、またコンパイルにzlibを使うことを指定します。
sudo ./config --prefix=/usr/local/openssl-1.1.1c shared zlib
Makeファイルが作成できたら、そのままmakeコマンドを実行してビルドします。
(make install までしっかり実行しましょう)
make depend sudo make sudo make install
これでmakeコマンドによってOpenSSLがインストールされました。
念のため、ここでちゃんと/usr/localに入ったかを確認しておきましょう。
ls -la /usr/local/openssl-1.1.1c/
意図したとおりに入っていることを確認したら、今度はインストールしたOpenSSLが使えるように設定していきます。
まずは共通ライブラリの設定ファイルを作成します。
sudo vi /etc/ld.so.conf.d/openssl-1.1.1c.conf
viエディタに入ったら、以下の内容を追加して保存します。
/usr/local/openssl-1.1.1c/lib
保存したら共通ライブラリの更新を忘れずに行ないます。
sudo ldconfig
共通ライブラリを更新したらOpenSSLのディレクトリリストとライブラリを確認します。
ldconfig -p | grep -i libssl
上手く更新できていれば、以下のようにlibssl.coが追加されています。
(以下はopenssl-1.1.1cを入れた場合の結果)
libssl3.so (libc6,x86-64) => /usr/lib64/libssl3.so libssl.so.10 (libc6,x86-64) => /usr/lib64/libssl.so.10 libssl.so.1.1 (libc6,x86-64) => /usr/local/openssl-1.1.1c/lib/libssl.so.1.1 libssl.so (libc6,x86-64) => /usr/local/openssl-1.1.1c/lib/libssl.so
これでインストールしたOpenSSLが使えるようになったはずなので、一度フルパスで実行してみましょう。
試しにバージョン確認を行なって動作をテストします。
インストールしたOpenSSLのバージョンが表示されたら、問題なくインストールができています。
/usr/local/openssl-1.1.1c/bin/openssl version
インストールは完了しましたが、このままだとフルパスによる実行でしかこのOpenSSLを使うことができません。
またこの状態だとPythonのビルド時に組み込まれないので、パスを通す必要があります。
まずは以下のようにシンボリックリンクを作成します。
(/usr/local/lib/pkgconfigが無い場合は最初に作成しておきます)
sudo mkdir /usr/local/lib/pkgconfig // /usr/local/bin sudo ln -s /usr/local/openssl-1.1.1c/bin/c_rehash /usr/local/bin/ sudo ln -s /usr/local/openssl-1.1.1c/bin/openssl /usr/local/bin/ // /usr/local/include sudo ln -s /usr/local/openssl-1.1.1c/include/openssl /usr/local/include/ // /usr/local/lib sudo ln -s /usr/local/openssl-1.1.1c/lib/engines-1.1 /usr/local/lib/ sudo ln -s /usr/local/openssl-1.1.1c/lib/libcrypto.a /usr/local/lib/ sudo ln -s /usr/local/openssl-1.1.1c/lib/libcrypto.so /usr/local/lib/ sudo ln -s /usr/local/openssl-1.1.1c/lib/libcrypto.so.1.1 /usr/local/lib/ sudo ln -s /usr/local/openssl-1.1.1c/lib/libssl.a /usr/local/lib/ sudo ln -s /usr/local/openssl-1.1.1c/lib/libssl.so /usr/local/lib/ sudo ln -s /usr/local/openssl-1.1.1c/lib/libssl.so.1.1 /usr/local/lib/ // /usr/local/lib/pkgconfig sudo ln -s /usr/local/openssl-1.1.1c/lib/pkgconfig/libcrypto.pc /usr/local/lib/pkgconfig/ sudo ln -s /usr/local/openssl-1.1.1c/lib/pkgconfig/libssl.pc /usr/local/lib/pkgconfig/ sudo ln -s /usr/local/openssl-1.1.1c/lib/pkgconfig/openssl.pc /usr/local/lib/pkgconfig/
シンボリックリンクを作成したらbash_profileファイルに環境変数を設定します。 まずはvimでbash_profileを開きます。
sudo vim ~/.bash_profile
その後、openssl-1.1.1cの場合は以下のように設定します。
# OpenSSL OPENSSL_INC=/usr/local/openssl-1.1.1c/include/openssl OPENSSL_ENGINE_LIB=/usr/local/openssl-1.1.1c/lib/engines-1.1 export CPATH=$OPENSSL_INC:$CPATH export LD_LIBRARY_PATH=/usr/local/lib:$OPENSSL_ENGINE_LIB:$LD_LIBRARY_PATH export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
bash_profileファイルを変更したら、以下のコマンドを実行して忘れず更新をかけておきましょう。
sudo source ~/.bash_profile
最後にOpenSSLのバージョンをコマンドで確認します。
パスが通っていれば今回インストールしたバージョンが表示されます。
openssl version
SQLite をインストールする
続いてSQLiteのインストールを行ないます。 基本的な手順はOpenSSLの時と同じで、まずは/tmpに移動し、その後/usr/local/srcにソースパッケージを移動します。
sudo mv sqlite-autoconf-3410200.tar.gz -t /usr/local/src/
そしてまた作業ディレクトリを/srcに移し、tarコマンドを使ってソースパッケージを展開します。
cd /usr/local/src/ sudo tar xvzf sqlite-autoconf-3410200.tar.gz
展開したら、SQLiteのディレクトリができているので、作業ディレクトリをそちらに移します。
cd sqlite-autoconf-3410200
その後、configureスクリプトを実行してMakeファイルを作成します。
オプションはインストール場所の指定(/usr/local配下)の他、BSD libeditを利用する「--enable-editline」、readlineを利用する「--enable-readline」、拡張セッションを有効にする「--enable-session」そしてデバッグ機能を有効にする「--enable-debug」を指定します。
sudo ./configure --prefix=/usr/local/sqlite/3_41_2 --enable-editline --enable-readline --enable-session --enable-debug
Makeファイルを作成したら、makeコマンドを実行してビルドします。
make install も忘れずに。
sudo make sudo make install
これでインストールしたSQLiteが使えるようになっているはずです。
OpenSSLの時と同じように一度フルパスでバージョン確認を行なってみましょう。
インストールしたSQLiteのバージョンが表示されたら、問題なくインストールができています。
/usr/local/sqlite/3_41_2/bin/sqlite3 -version
フルパスで使えることを確認したら、次はパスを通していきます。
まずは共通ライブラリを作成します。
sudo vi /etc/ld.so.conf.d/usr_local_lib.conf
viエディタに入ったら、以下の内容を追加して保存します。
/usr/local/lib
保存後、共通ライブラリの更新を行ってください。
sudo ldconfig
共通ライブラリの設定を行ったら、次はシンボリックリンクを作成します。
以下のコマンドを上から順に実行していきます。
// /usr/local/bin sudo ln -s /usr/local/sqlite/3_41_2/bin/sqlite3 /usr/local/bin/ // /usr/local/include sudo ln -s /usr/local/sqlite/3_41_2/include/sqlite3.h /usr/local/include/ sudo ln -s /usr/local/sqlite/3_41_2/include/sqlite3ext.h /usr/local/include/ // /usr/local/lib sudo ln -s /usr/local/sqlite/3_41_2/lib/libsqlite3.a /usr/local/lib/ sudo ln -s /usr/local/sqlite/3_41_2/lib/libsqlite3.la /usr/local/lib/ sudo ln -s /usr/local/sqlite/3_41_2/lib/libsqlite3.so /usr/local/lib/ sudo ln -s /usr/local/sqlite/3_41_2/lib/libsqlite3.so.0 /usr/local/lib/ sudo ln -s /usr/local/sqlite/3_41_2/lib/libsqlite3.so.0.8.6 /usr/local/lib/ // /usr/local/lib/pkgconfig sudo ln -s /usr/local/sqlite/3_41_2/lib/pkgconfig/sqlite3.pc /usr/local/lib/pkgconfig/
シンボリックリンクも作成したら、SQLiteのバージョンをコマンドで確認してみましょう。
パスが通っていれば今回インストールしたバージョンが表示されます。
sqlite3 -version
Python 3.8.1 をインストールする
ここまでで必要なRPMパッケージと、OpenSSLおよびSQLiteのソースパッケージの導入を終えています。
それらが前提となるPython3を、ここから入れていきます。
まずはOpenSSLやSQLiteの時と同様に/tmpに戻り、その後/usr/local/srcにソースパッケージを移動します。
cd /tmp/ sudo mv Python-3.8.1.tar.xz -t /usr/local/src/
そして作業ディレクトリを/usr/local/srcに移し、Puthon3ソースパッケージを展開します。
cd /usr/local/src/ sudo tar -Jxvf Python-3.8.1.tar.xz
展開したら、Python3のディレクトリができているので、作業ディレクトリをそちらに移しましょう。
そしてここはPython3だけの手順。Modules配下のSetupファイルをviコマンドで開きます。
cd Python-3.8.1/ sudo vi Modules/Setup
Setupファイルを開いたら「# socket line above, and possibly edit the SSL variable:」直下の文章のコメントアウトを外し、以下のように変更して保存します。
なお「SSL=」の部分はOpenSSLをインストールした場所を指定します。
この記事の手順に従っているなら、「/usr/local」を設定することになります。
# Socket module helper for SSL support; you must comment out the other # socket line above, and possibly edit the SSL variable: SSL=/usr/local _ssl _ssl.c \ -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ -L$(SSL)/lib -lssl -lcrypto
その後、configureスクリプトを実行してMakeファイルを作成します。
オプションはインストール場所の指定(/usr/local配下)の他、コンパイルした時に最適化を行なう「--enable-optimizations」、SQLiteを有効にする「--enable-loadable-sqlite-extensions」を指定します。
sudo ./configure --prefix=/usr/local/python3 --enable-optimizations --enable-loadable-sqlite-extensions
Makeファイルを作成したら、makeコマンドを実行してビルドします。
ここでもmake install までの実行を忘れないようにしましょう。
sudo make sudo make install
インストールしたら次はパスを通します。
Python3の場合はシンボリックリンクを作成するだけでパスが通ります。
sudo ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3 sudo ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3
シンボリックリンクを作成したら、Python3のバージョンを確認して、パスが通っていることを確かめましょう。
python3 --version
これでPython3がインストールできたので、いよいよ本題のgcloud CLIのインストールに入ります。
gcloud CLI をインストールする
最初は今までに入れてきたソースパッケージと同じです。
まずは/tmpに移動し、その後/usr/local/srcにソースパッケージを移動しましょう。
sudo mv google-cloud-cli-421.0.0-linux-x86_64.tar.gz -t /usr/local/src/
パッケージを移動したら作業ディレクトリも/usr/local/srcに移し、gcloudCLIのソースパッケージを展開します。
cd /usr/local/src/ sudo tar -xf google-cloud-cli-421.0.0-linux-x86_64.tar.gz
展開するとgcloud CLI(google-cloud-sdk)のディレクトリができているので、作業ディレクトリをそちらに移します。
cd google-cloud-sdk
作業ディレクトリをgoogle-cloud-sdkに移したら、gcloud CLIのインストールスクリプトを起動します。
install.sh
スクリプトを起動するとインストールが進んでいきます。
その最中に以下の質問が入るので、以下のように回答します。
Do you want to help improve the Google Cloud CLI (y/N)? y Do you want to continue (Y/n)? Y Enter a path to an rc file to update, or leave blank to use [<ホームディレクトリ>/.bashrc]:<何も入力せずEnter>
質問に答えていくとインストールが完了します。
インストールの最中にパスが作られるのですが、インストールが終わった段階だと環境変数が更新されていないので、以下のコマンドで更新を行ないます。
source ~/.bashrc
環境変数を更新したら、改めてgcloud CLIのバージョンを確認し、インストールとパスの構築が完了していることを確認します。
gcloud --version
これで無事、RHEL 6にgcloud CLIを導入することができました!
あとはgcloud initを実行してgcloud CLIを初期化したり、その他の方法でgcloud CLIへ権限を付与するなど設定を行なっていきましょう。
さいごに
ほとんどすべてを手作業でインストールすることになった今回の件。
必要なものや手順さえ揃えられれば割とすんなりできるものですが、そこに至るまでがなかなかに大変でした。
もし同じような状況になっている方に、この記事の内容や手順が役立てば幸いです。
それでは今回はここまで。次回の記事もお楽しみに!