Armadilloフォーラム

Armadillo-X2にpersist_file -aで旧バージョンのパッケージをインストールする方法

yamada_masa

2024年9月17日 17時03分

●目的
Armadillo-X2にpersist_file -aで旧バージョンのパッケージをインストールする。

●質問
persist_file -a にて旧パッケージをインストールする方法をご教示願えますでしょうか。
apkコマンドを利用する手順と同じく、/etc/apk/repositoriesを編集したが期待した動作になりませんでした。
persist_file -aの場合、参照するファイルが異なるのでしょうか。

●再現手順
1./etc/apk/repositories にインストールしたいパッケージが存在するリポジトリ(v3.5)を追記
2.persist_file -a update を実行
3.v3.5のリポジトリで更新されない。(persist_file -a updateの実行結果)
4.persist_file -a list | less を実行するもv3.5のパッケージが表示されない。

●期待した動作
persist_file -a updateにて旧バージョンのパッケージリストに更新されない。
また、persist_file -a list | lessでもv3.5のパッケージが表示されない。

上記動作後下記を行う予定です。
旧バージョンのパッケージを確認し、persist_file -a add で旧バージョンのパッケージをインストールする。

●実行結果
/etc/apk/repositories の内容(最下段2行が追記箇所)

/var/app/volumes # cat /etc/apk/repositories
@atmark https://download.atmark-techno.com/alpine/v3.20/atmark
#https://download.atmark-techno.com/alpine/v3.20/atmark
#https://dl-cdn.alpinelinux.org/alpine/v3.20/main
#https://dl-cdn.alpinelinux.org/alpine/v3.20/community
https://dl-cdn.alpinelinux.org/alpine/v3.5/main
https://dl-cdn.alpinelinux.org/alpine/v3.5/community

persist_file -a updateの実行結果

/var/app/volumes # persist_file -a update
fetch https://download.atmark-techno.com/alpine/v3.20/atmark/aarch64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.20/main/aarch64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.20/community/aarch64/APKINDEX.tar.gz
atmark [https://download.atmark-techno.com/alpine/v3.20/atmark]
v3.20.3-41-g15f51a1ed0f [https://dl-cdn.alpinelinux.org/alpine/v3.20/main]
v3.20.3-40-g6357f8cdcd6 [https://dl-cdn.alpinelinux.org/alpine/v3.20/community]
OK: 24143 distinct packages available
Install succeeded, but might not work in the running system
Please reboot if installed program does not work
コメント

at_dominique.m…

2024年9月17日 17時25分

yamada_masaさん

お世話になっています、
マルティネです。

以下で返事しますが、persist_file -a は開発・デバグ用のコマンドで、実際に開発したソフトウェアで使用することを推奨できません。
Armadillo Base OS を更新すると persist_file -a でインストールしたソフトウェアがなくなりますので、開発したアプリケーションが追加ソフトウェアに依存すると何かアップデートの対策が必要になります(ご自身で base os の更新 swu を用意するなど)。

手間を考えたら、最初からパッケージを追加しないで、完全に管理できてるコンテナの中にその古いソフトウェアを運用していただいた方が最善だと考えています。

> apkコマンドを利用する手順と同じく、/etc/apk/repositoriesを編集したが期待した動作になりませんでした。
> persist_file -aの場合、参照するファイルが異なるのでしょうか。

persist_file -a は、 /etc/apk/repositories ではなく、rootfs に保存されている /live/rootfs/etc/apk/repositories を使っています。
persist_file /etc/apk/repositories で一度そのファイルを永続化してから persist_file -a を使うと反映されると思います。

よろしくお願いします

マルティネさん

ご教示ありがとうございます。
下記を実施し期待する動作となりました。
> persist_file -a は、 /etc/apk/repositories ではなく、rootfs に保存されている /live/rootfs/etc/apk/repositories を使っています。
> persist_file /etc/apk/repositories で一度そのファイルを永続化してから persist_file -a を使うと反映されると思います。

実行結果

/var/app/volumes # cat /etc/apk/repositories
@atmark https://download.atmark-techno.com/alpine/v3.20/atmark
#https://download.atmark-techno.com/alpine/v3.20/atmark
#https://dl-cdn.alpinelinux.org/alpine/v3.20/main
#https://dl-cdn.alpinelinux.org/alpine/v3.20/community
https://dl-cdn.alpinelinux.org/alpine/v3.5/main
https://dl-cdn.alpinelinux.org/alpine/v3.5/community
/var/app/volumes # persist_file /etc/apk/repositories
/var/app/volumes # persist_file -a update
fetch https://download.atmark-techno.com/alpine/v3.20/atmark/aarch64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.5/main/aarch64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.5/community/aarch64/APKINDEX.tar.gz
atmark [https://download.atmark-techno.com/alpine/v3.20/atmark]
v3.5.3-49-ged4ea0821f [https://dl-cdn.alpinelinux.org/alpine/v3.5/main]
v3.5.3-44-g08ec10f083 [https://dl-cdn.alpinelinux.org/alpine/v3.5/community]
OK: 8066 distinct packages available
Install succeeded, but might not work in the running system
Please reboot if installed program does not work

Armadillo Base OSの運用についてご教示ありがとうございます。
過去資産なのど背景があるためコンテナ化は見送りとなっておりますが、今後のプランとしてArmadillo Base OSを活用すべくコンテナ化も検討しておりますので、その際はまた質問させていただくことも出てくると思いますのでよろしくお願いいたします。