CloudShell上でdyneinを利用しようとしたがうまく行かなかった。それらを対処した手順を残しておく。(2024-02-17)
実行したコマンドを載せていますが、自己責任で実行をお願いします。
dynein
Rustで記載されたDynamoDBのCLIツール。少ない記述でDynamoDBを操作することが出来る。例えば、下記の記載で現在参照中のテーブルに対して、primary keyがabc
であるものを検索される。
dy get abc
dyneinをCloudShellにインストールする
CloudShellでは、永続的なストレージとして扱えるのはホームディレクトリのみとなっている。そのため、公式手順のままインストールをしてしまうと、CloudShellが再起動されるたびに再インストールが必要となる。
これを回避するため、ホームディレクトリ直下にtools
というフォルダを作成し、そのフォルダをインストール場所として作業を進めていく。
dyneineをインストールする
基本的には公式の手順に従って進めていくが、ファイルの配置場所はホームディレクトリ配下に変更する。フォルダ構成などはパッケージをインストールした時と同じ形にしたいため、ひとまず適当なパッケージをインストールする。また、公式の手順の実施のみではlibssl.so.1.1
が存在せず、エラーとなってしまうため、こちらも合わせて配置する。
適当なパッケージをインストール
適当なパッケージをインストールしていく。ここでは nkf (Network Kanji Filter) を選択した。下記コマンドでインストールする。
cd ~
mkdir -p tools
# フォルダ指定でインストール
sudo dnf install -y --installroot=/home/cloudshell-user/tools nkf
# パスを通す
cp .bashrc .bashrc_bk # 念のためにバックアップを取っておく
cat .bashrc | sed '$aexport PATH=$PATH:/home/cloudshell-user/tools/bin' > .bashrc_tmp
mv .bashrc_tmp .bashrc
source .bashrc
下記のようなフォルダが作成されていることが確認できる。
ls tools/
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
Unicodeエスケープ文字列が変換できることを確認する。
echo "\u65e5\u672c\u8a9e" | sed 's/\\\u\(....\)/\&#x\1;/g' | nkf --numchar-input -w
日本語 # 出力
下記記事を参照
dyneinをインストールする
公式の手順に従ってインストールする。配置場所のみ変更する。
curl -O -L https://github.com/awslabs/dynein/releases/latest/download/dynein-linux.tar.gz
tar xzvf dynein-linux.tar.gz
sudo mv dy ~/tools/usr/local/bin/
# パスを通す
cd ~
cat .bashrc | sed '$aexport PATH=$PATH:/home/cloudshell-user/tools/usr/local/bin' > .bashrc_tmp
mv .bashrc_tmp .bashrc
source .bashrc
下記コマンドでdyneinがインストールされたことを確認する。現在の状態ではlibssl.so.1.1
が存在しないためエラーとなる。
dy --help
dy: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
OpenSSL 1.1.1をインストールする
libssl.so.1.1
は OpenSSL 1.1.1 に存在するファイルのようだ。amazon-linux-2023では、OpenSSL 3.0.8 がインストールされており、OpenSSL 1.1.1 はインストールされていない。サポートは終了しているため好ましくないが、インストールしていく。
# ビルドに必要なパッケージをインストール
sudo dnf install -y gcc perl-FindBin perl-open perl-YAML perl-YAML-Tiny perl-File-HomeDir perl-Unicode-LineBreak perl-lib perl-File-Compare perl-File-Copy
# インストール
curl -O -L https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar xzvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
sudo ./config --prefix=/home/cloudshell-user/tools/usr/local/ssl
sudo make
sudo make install
# パスを通す
cd ~
cat .bashrc | sed '$aexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/cloudshell-user/tools/usr/local/ssl/lib' > .bashrc_tmp
mv .bashrc_tmp .bashrc
source .bashrc
下記コマンドを実行する。バージョンが表示されれば問題なくインストールされている。CloudShellを再起動した場合でも問題なく実行できることを確認する。
dy --version
dynein 0.2.1 # 出力
利用したファイルは削除しておく。
cd ~
rm dynein-linux.tar.gz
rm openssl-1.1.1w.tar.gz
rm -rf openssl-1.1.1w/
参考ページ