oracle cloud infrastructure (OCI) のfree tier VM はswap前提だということ
https://blog.osakana.net/archives/14799
https://qiita.com/kobe_creation/items/edc02329b40a2207842f
基本、お二方の記載の通りです。
oracle cloud infrastructure (OCI)というクラウドサービスが無料枠が大きくて素晴らしいです。特にひと月あたり6000 OCPU, 18000GB RAM相当までのインスタンスは無料ということで有名かと思います。
しかし、それ以外にも無料枠(always free)で0.5 UCPU, 1GB RAMのインスタンス2個が無料です。1GB RAMということでちょっと工夫が必要になったので備忘録も兼ねて残しておきます。
defaultのパッケージマネージャが機能しない
oracle linux 9で先述の0.5 OCPU, 1GB RAMのインスタンスを立てました。RHEL系なのでパッケージマネージャとしてdnfが入っているのですが、dnf installをすると高確率でCPU, メモリ使用率が爆増して、その後プロセス自体がkillされます。oci-cli(ociのインスタンスをCLIで開始したり停止したりいろいろできる)は、dnfを経由せずにinstallできましたが、gitはどうしても入りませんでした。
そこで、先人の知恵を拝借して、4GBのswap領域を確保したところ、dnf installができるようになりました。
作りかた
# スワップ領域として使用する4GBのファイルを作成
sudo dd if=/dev/zero of=/swapfile bs=1G count=4
ここが結構時間かかります。
# rootユーザーのみが読み書きできるように設定します。
sudo chmod 600 /swapfile
# 作成したファイルをスワップ領域として使えるようにフォーマットします。
sudo mkswap /swapfile
すると、こんな感じの出力がきます。
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
no label, UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
# スワップ有効化
sudo swapon /swapfile
# 永続化
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
確認方法:
sudo swapon --show
下記のように表示されれば成功です
NAME TYPE SIZE USED PRIO
/swapfile file 4G 0B -2
これをやっておくと、もっさりした動作ですがdnf installができるようになります。うれしい!
microdnf
AIによると、dnfの簡易バージョンでmicrodnfというのがあり、コンテナなどで使われているそうです。結局、microdnfがプリインストールされていなければ、通常のdnfでこいつをinstallする必要があるので、swapの使用は不可避と思います。一度installしてしまえば、dnfの代わりにこちらを使ってもいいと思います。実際installしてsudo microdnf install
してみましたが、問題なく動作しました(通常のdnfとどちらが速いかは比較していません)。