Armadilloフォーラム

ABOS上でのPerlプログラム実行はできますか?

takeshi-unima

2024年12月25日 16時43分

==========
製品型番:Armadillo-640
Debian/ABOSバージョン:3.20.3-at.5
カーネルバージョン:5.10.230-0-at
3G/LTE モジュール情報 (Debianのみ):
その他:
==========

ABOSコンテナ上でPerlスクリプトを動作させることはできますか?

コメント

太田です。

ABOSDEではPerlのプロジェクトはございませんが、原理的には可能です。
動作確認はしていないので、もし何か試している途中でお困りの際は再度お問い合わせ頂ければ幸いです。

よろしくお願いいたします。

> 太田です。
>
> ABOSDEではPerlのプロジェクトはございませんが、原理的には可能です。
> 動作確認はしていないので、もし何か試している途中でお困りの際は再度お問い合わせ頂ければ幸いです。
>
> よろしくお願いいたします。

太田様返信ありがとうございます。
そもそもこれほどまでに基本的なことを公開の場で質問するのも不勉強を晒すようでお恥ずかしい話なのですが
まず「原理的には可能」という意味をどう汲み取ればよいのかわかりません。宇宙エレベーターのような類の実現不可能性についてのお話ということでしょうか?
「何かを試す」もなにも、ABOSDEでPerlを扱うにあたり何かを試すための取っ掛かりがなにもなくて困っております。
基本的にABOSはPython、シェル、Cを使えるとの記述をマニュアル(armadillo-640_product_manual_ja-4.16.0)の中に見ておりそれについては承知しております。
が、一方でこれまでPerlでプログラムを書いてきており、従来Debian環境で作成した既存のPerlスクリプト&モジュールをすべてPythonに書き換える面倒を回避して利用したいと考えております。
なにか非公式な裏技的なことでABOSでPerlを実行可能な環境を構築可能なのか、もしそうであればその方法を知りたいと考えています。
もしそれが宇宙エレベーターを作るような不確実性を伴う難易度の高い方法であるなら諦めます。
ABOSの恩恵を受けられなくはなりますがABOSはきっぱり諦めて従来通りのOS環境のほうがPerlを利用する分には簡便でしょうか?
その判断がつかなくてまた困っています。

太田です。

Armadillo Base OS はコンテナによるアプリケーション運用を推奨しております。
以下のURLは Armadillo Base OS についてマニュアルに記載がありますのでよろしければご参照ください。

https://manual.atmark-techno.com/armadillo-640/armadillo-640_product_ma…

例えば以下の方法により、Armadillo Base OS上で作成したコンテナ内でperlを実行することができます。
ここでは、ABOSDEのshell scriptsのプロジェクトをベースに作成したプロジェクト名を my_project とします。
ABOSDEのshell scriptsのプロジェクトによる開発の流れはこちらに記載がありますのでご参照頂ければと思います。

https://manual.atmark-techno.com/armadillo-640/armadillo-640_product_ma…

コンテナ内のOSは debian:bullseye-slim です。(config/Dockerfileに記述されています)

以下、作成した my_project 内において編集した点をまとめました。

1. my_project/packages.txtに以下のように編集

# packages that can be installed with `apt install` are
# listed here by line and installed in the container.
bash
perl

2. my_project/app/src/main.shの内容を全て削除して以下のように編集

#!/usr/bin/env bash
 
# 必要であれば前処理
perl /vol_app/src/main.pl

3. my_project/app/src/main.plを作成し、以下の内容を記述

#!/usr/bin/env perl
 
open(fh,"> /vol_data/data.txt");
print fh "test\n";
close(fh);

ここでは、コンテナ内の/vol_dataにdata.txtを作成して test という文字列を追記しています。
コンテナ内の/vol_data はArmadillo Base OS 上の /var/app/volumes/my_project にマウントされています。

4. my_project/config/ssh_config の Hostname x.x.x.x の x.x.x.x の部分に Armadillo のIPアドレスを記述

5. [Setup environment] を実行

6. [Generate development swu] を実行
4、5、6の流れは上記に貼ったURLのマニュアルの「CUI アプリケーションの開発」の節をご参照ください。

7. 作成された my_project/development.swu を Armadillo にインストール
SWUイメージのインストール方法はマニュアルのこちらをご参考にしてください。

https://manual.atmark-techno.com/armadillo-640/armadillo-640_product_ma…

または、ArmadilloにSWUイメージを scp などで配置できるのであれば以下のコマンドでもインストールできます。

armadillo:~# ls                                                                 
development.swu  test.txt                                                       
armadillo:~# swupdate -i development.swu                                        

8. コンテナ内でperlのスクリプトが実行されたか確認
デフォルトでは、コンテナ内の /vol_data は Armadillo base OS の /var/app/volumes/my_project にマウントされています。
my_project/config/app.confの以下の記載で明示的にマウントしております。

add_volumes /var/app/volumes/{{PROJECT}}:/vol_data

そのため、main.plが実行された data.txt は /var/app/volumes/my_project に作成されているはずです。

armadillo:~# cat /var/app/volumes/my_project/data.txt                           
test

上記の方法で、Armadillo Base OS 上のコンテナ内でperlを実行することが可能であることはお確かめいただけますでしょうか?
どうぞよろしくお願いいたします。