Armadilloフォーラム

pythonインストール

inokuchi

2024年6月10日 15時37分

python3.12.1と下記ライブラリをインストールして使用したいと考えてますが、問題はありますでしょうか。
(ライブラリ)
fastapi,uvicorn[standard],pyserial,jinja2,numpy,scipy

併せてインストール方法をご教示いただけますか。

コメント

at_shinya.koga

2024年6月10日 16時02分

アットマークテクノの古賀です。

inokuchiさん:
>python3.12.1と下記ライブラリをインストールして使用したいと考えてますが、問題はありますでしょうか。
>(ライブラリ)
>fastapi,uvicorn[standard],pyserial,jinja2,numpy,scipy

基本的には、問題ないと思います。
ただし、numpy については、インストール時に g++ のバージョン 11 以上が必要かも知れません。その場合、G3L でお使いの Linux のカーネルが 4.9 であれば、 6.1 にアップデートするか、または g++ 11 か g++12 をソースからビルドしてインストールする必要があると思います。
 https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g3…

>併せてインストール方法をご教示いただけますか。

ひとまず、このフォーラムの、以下の質問スレッドを参考にしてくださいませ:

 Linux-4.9 at33にpython3.8.2をインストール
 https://armadillo.atmark-techno.com/forum/armadillo/20430

inokuchi

2024年6月17日 14時06分

> アットマークテクノの古賀です。
>
> 基本的には、問題ないと思います。
> ただし、numpy については、インストール時に g++ のバージョン 11 以上が必要かも知れません。その場合、G3L でお使いの Linux のカーネルが 4.9 であれば、 6.1 にアップデートするか、または g++ 11 か g++12 をソースからビルドしてインストールする必要があると思います。
>  https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g3…

下記方法でビルドしようとしましたが、うまくビルド出来ていないようでした。
①wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-12.2.0/gcc-12.2…
②tar xvf gcc-12.2.0.tar.gz
③cd gcc-12.2.0
④./contrib/download_prerequisites
⑤cd ..
⑥mkdir build
⑦cd build
⑧../gcc-12.2.0/configure --prefix=/usr/local/bin/gcc-12.2.0 --enable-languages=c,c++,objc,fortran --disable-multilib --disable-bootstrap
⑨make
⑩make install
ビルド方法に問題はありますか。ターミナルの出力の一部が残っていたので添付します。

またカーネル6.1は4.9で入っていたアップデートなど全てを網羅していると思っているのですが、
カーネルを4.9から6.1にアップデートした時の弊害等はありますか。
>
> >併せてインストール方法をご教示いただけますか。
>
> ひとまず、このフォーラムの、以下の質問スレッドを参考にしてくださいませ:
>
>  Linux-4.9 at33にpython3.8.2をインストール
>  https://armadillo.atmark-techno.com/forum/armadillo/20430

ファイル ファイルの説明
ログ(一部).txt

at_shinya.koga

2024年6月17日 17時17分

アットマークテクノの古賀です。

inokuchiさん:
>>ただし、numpy については、インストール時に g++ のバージョン 11 以上が必要かも知れません。その場合、G3L でお使いの Linux のカーネルが 4.9 であれば、 6.1 にアップデートするか、または g++ 11 か g++12 をソースからビルドしてインストールする必要があると思います。
>> https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g3…
>
>下記方法でビルドしようとしましたが、うまくビルド出来ていないようでした。
>①wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-12.2.0/gcc-12.2…
>②tar xvf gcc-12.2.0.tar.gz
>③cd gcc-12.2.0
>④./contrib/download_prerequisites
>⑤cd ..
>⑥mkdir build
>⑦cd build
>⑧../gcc-12.2.0/configure --prefix=/usr/local/bin/gcc-12.2.0 --enable-languages=c,c++,objc,fortran --disable-multilib --disable-bootstrap
>⑨make
>⑩make install
>ビルド方法に問題はありますか。ターミナルの出力の一部が残っていたので添付します。

添付して頂いたログを見たところ、gcc をビルドする際に、コンパイラ(インストール済みのバージョンの gcc)がメモリ不足でエラー終了しているようです。

cc1plus: out of memory allocating 64746880 bytes after a total of 88494080 bytes
make[2]: *** [Makefile:1143: gimple-match.o] Error 1
make[2]: Leaving directory '/root/build/gcc'
make[1]: *** [Makefile:4632: all-gcc] Error 2
make[1]: Leaving directory '/root/build'
make: *** [Makefile:1042: all] Error 2

カーネル 6.1 用のユーザーランド (bookworm) であれば、gcc のバージョンが 12 ですから、カーネルとユーザーランドの組み合わせを 6.1 + bookworm に書き換えて頂くのが簡単だと思います。
 https://packages.debian.org/bookworm/gcc

>またカーネル6.1は4.9で入っていたアップデートなど全てを網羅していると思っているのですが、
>カーネルを4.9から6.1にアップデートした時の弊害等はありますか。

カーネルをアップデートする時は、ユーザーランド(ルートファイルシステム)を bookworm にしてください:
 https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g3…
 https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g3…

なお、最初に頂いた質問で、python3.12.1 をインストールしたいとのことでしたが、bookworm 用の python パッケージのバージョンは 3.11.x ですから、カーネルとユーザーランドを 6.1 + bookworm に書き換えても、python3.12.1 を apt でインストールすることは、できません。
以下の質問スレッドのコメントのように、python3.12.1 のソースをダウンロードしてビルドしないといけません。

>>>併せてインストール方法をご教示いただけますか、。
>>
>>ひとまず、このフォーラムの、以下の質問スレッドを参考にしてくださいませ:
>>
>> Linux-4.9 at33にpython3.8.2をインストール
>> https://armadillo.atmark-techno.com/forum/armadillo/20430

もし、python のバージョンが 3.11.x でもよいのであれば、numpy や scipy などのライブラリも、Debian パッケージを apt でインストールすればよいのですが:
 https://packages.debian.org/bookworm/python/python3-numpy
 https://packages.debian.org/bookworm/python/python3-scipy

さて、カーネルとユーザーランドを 6.1 + bookworm に書き換えた場合は、以下の手順で、python3.12.1 と、対応するバージョンの numpy をインストールできると思います:

1.) python のビルドに必要なパッケージを apt でインストール

# apt update && apt upgrade
# apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev curl libbz2-dev

2.) python3.12.1 のソースアーカイブをダウンロード
  https://www.python.org/ftp/python/3.12.2/

3.) ソースアーカイブを tar zxf で展開して、できたディレクトリ(Python-3.12.2)に cd で移動して configure を実行

4.) make でビルド

5.) make altinstall でインストール

6.) numpy パッケージのビルドに必要なパッケージを apt でインストール

# apt install git cmake ninja-build

7.) pip3.12 を使って numpy をインストール

# pip3.12 install numpy

以上、参考になりましたら幸いです。

inokuchi

2024年6月17日 19時35分

> アットマークテクノの古賀です。
>
> inokuchiさん:
> >>ただし、numpy については、インストール時に g++ のバージョン 11 以上が必要かも知れません。その場合、G3L でお使いの Linux のカーネルが 4.9 であれば、 6.1 にアップデートするか、または g++ 11 か g++12 をソースからビルドしてインストールする必要があると思います。
> >> https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g3…
> >
> >下記方法でビルドしようとしましたが、うまくビルド出来ていないようでした。
> >①wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-12.2.0/gcc-12.2…
> >②tar xvf gcc-12.2.0.tar.gz
> >③cd gcc-12.2.0
> >④./contrib/download_prerequisites
> >⑤cd ..
> >⑥mkdir build
> >⑦cd build
> >⑧../gcc-12.2.0/configure --prefix=/usr/local/bin/gcc-12.2.0 --enable-languages=c,c++,objc,fortran --disable-multilib --disable-bootstrap
> >⑨make
> >⑩make install
> >ビルド方法に問題はありますか。ターミナルの出力の一部が残っていたので添付します。
>
> 添付して頂いたログを見たところ、gcc をビルドする際に、コンパイラ(インストール済みのバージョンの gcc)がメモリ不足でエラー終了しているようです。
>

> cc1plus: out of memory allocating 64746880 bytes after a total of 88494080 bytes
> make[2]: *** [Makefile:1143: gimple-match.o] Error 1
> make[2]: Leaving directory '/root/build/gcc'
> make[1]: *** [Makefile:4632: all-gcc] Error 2
> make[1]: Leaving directory '/root/build'
> make: *** [Makefile:1042: all] Error 2
> 

>
> カーネル 6.1 用のユーザーランド (bookworm) であれば、gcc のバージョンが 12 ですから、カーネルとユーザーランドの組み合わせを 6.1 + bookworm に書き換えて頂くのが簡単だと思います。
>  https://packages.debian.org/bookworm/gcc
>
> >またカーネル6.1は4.9で入っていたアップデートなど全てを網羅していると思っているのですが、
> >カーネルを4.9から6.1にアップデートした時の弊害等はありますか。
>
> カーネルをアップデートする時は、ユーザーランド(ルートファイルシステム)を bookworm にしてください:
>  https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g3…
>  https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g3…

カーネルとユーザーランド(ルートファイルシステム)のアップデートを取説に載っていた下記方法でしてみましたがアップデートできていません。
SDブートで起動しているからだと思うのですが、アップデート方法をご教示ください。
・カーネルアップデート
1.wgetでカーネルイメージをインストール
2.mount -t vfat /dev/mmcblk2p1 /mnt
3.cp uImage-x1-[version] /mnt/uImage
4.umount /mnt
・ユーザーランド(ルートファイルシステム)アップデート
1.wgetでルートファイルシステムをインストール
2.mkfs.ext4 /dev/mmcblk2p2
3. mount -t ext4 /dev/mmcblk2p2 /mnt
4.tar zxf debian-bookworm-armhf_aiotg3l_[version].tar.gz -C /mnt
5.umount /mnt

> なお、最初に頂いた質問で、python3.12.1 をインストールしたいとのことでしたが、bookworm 用の python パッケージのバージョンは 3.11.x ですから、カーネルとユーザーランドを 6.1 + bookworm に書き換えても、python3.12.1 を apt でインストールすることは、できません。
> 以下の質問スレッドのコメントのように、python3.12.1 のソースをダウンロードしてビルドしないといけません。
>
> >>>併せてインストール方法をご教示いただけますか、。
> >>
> >>ひとまず、このフォーラムの、以下の質問スレッドを参考にしてくださいませ:
> >>
> >> Linux-4.9 at33にpython3.8.2をインストール
> >> https://armadillo.atmark-techno.com/forum/armadillo/20430
>
> もし、python のバージョンが 3.11.x でもよいのであれば、numpy や scipy などのライブラリも、Debian パッケージを apt でインストールすればよいのですが:
>  https://packages.debian.org/bookworm/python/python3-numpy
>  https://packages.debian.org/bookworm/python/python3-scipy
>
> さて、カーネルとユーザーランドを 6.1 + bookworm に書き換えた場合は、以下の手順で、python3.12.1 と、対応するバージョンの numpy をインストールできると思います:
>
> 1.) python のビルドに必要なパッケージを apt でインストール
>

> # apt update && apt upgrade
> # apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev curl libbz2-dev
> 

>
> 2.) python3.12.1 のソースアーカイブをダウンロード
>   https://www.python.org/ftp/python/3.12.2/
>
> 3.) ソースアーカイブを tar zxf で展開して、できたディレクトリ(Python-3.12.2)に cd で移動して configure を実行
>
> 4.) make でビルド
>
> 5.) make altinstall でインストール
>
> 6.) numpy パッケージのビルドに必要なパッケージを apt でインストール
>

> # apt install git cmake ninja-build
> 

>
> 7.) pip3.12 を使って numpy をインストール
>

> # pip3.12 install numpy
> 

>
> 以上、参考になりましたら幸いです。

ATDEの方は後日確認してみます。

at_shinya.koga

2024年6月18日 5時55分

アットマークテクノの古賀です。

inokuchiさん:
>カーネルとユーザーランド(ルートファイルシステム)のアップデートを取説に載っていた下記方法でしてみましたがアップデートできていません。
>SDブートで起動しているからだと思うのですが、アップデート方法をご教示ください。
>・カーネルアップデート
>1.wgetでカーネルイメージをインストール
>2.mount -t vfat /dev/mmcblk2p1 /mnt
>3.cp uImage-x1-[version] /mnt/uImage
>4.umount /mnt
>・ユーザーランド(ルートファイルシステム)アップデート
>1.wgetでルートファイルシステムをインストール
>2.mkfs.ext4 /dev/mmcblk2p2
>3. mount -t ext4 /dev/mmcblk2p2 /mnt
>4.tar zxf debian-bookworm-armhf_aiotg3l_[version].tar.gz -C /mnt
>5.umount /mnt

/dev/mmcblk2p1 と /dev/mmcblk2p2 は、マニュアルの「ソフトウェアを最新の状態に更新する」に記載している「ソフトウェアと書き込み先の対応」に記載しているように、eMMC のパーティションです:
 https://manual.atmark-techno.com/armadillo-iot-g3l/armadillo-iotg-g3l_p…
ですので、今回行われた書込みにより、eMMC のカーネルイメージとルートファイルシステムが書き換えられています。
SD のパーティションは、マニュアルの「SDブートの実行」の節の末尾にある「ログイン後のdfコマンド実行結果」を見ると分かりますが、eMMC の場合の /dev/mmcblk2p2 が SD の場合の /dev/mmcblk0p2 に対応します:
 https://manual.atmark-techno.com/armadillo-iot-g3l/armadillo-iotg-g3l_p…

なお、ルートファイルシステムをアップデートする場合、マニュアルの「ルートファイルシステムの書き換え」で説明しているように、マウントしているルートファイルシステムを書き換えできませんので、ブートディスクの SD のルートファイルシステムを書き換える時は、SD を ATDE にマウントして、ATDE から書き込んでください:
 https://manual.atmark-techno.com/armadillo-iot-g3l/armadillo-iotg-g3l_p…
または、一旦 eMMC ブートして SD のルートファイルシステムを書き換えてもよいですが、お手元の Armadillo は eMMC のカーネルとルートファイルシステムを書き換えていますので、eMMC ブートへ切り替える前に、この後述べるように DTB とブートローダーも書き換えてください。

6.1 + bookworm へのアップデートについて、書き漏らしていましたので補足します。

>>>またカーネル6.1は4.9で入っていたアップデートなど全てを網羅していると思っているのですが、
>>>カーネルを4.9から6.1にアップデートした時の弊害等はありますか。
>>
>>カーネルをアップデートする時は、ユーザーランド(ルートファイルシステム)を bookworm にしてください:
>> https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g3…
>> https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g3…

カーネルをアップデートする際に、DTB も書き換えてください。
また、ブートローダーイメージは、カーネル 4.9 と 6.1 で共通ですが、最新の at25 に更新することをお勧めします:
 https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g3…
 https://armadillo.atmark-techno.com/news/20240228/software-update-aiotg…
 https://armadillo.atmark-techno.com/news/20240329/software-update-aiotg…

inokuchi

2024年6月17日 17時27分

加えて1点質問があるのですが、いまSDブートでarmadilloを起動しているのですが、そのブートディスクをATDEで起動してインストール作業をしたいと考えているのですが可能でしょうか。
可能であればやり方をご教授いただけますか。

at_shinya.koga

2024年6月17日 18時10分

アットマークテクノの古賀です。

inokuchiさん:
>加えて1点質問があるのですが、いまSDブートでarmadilloを起動しているのですが、そのブートディスクをATDEで起動してインストール作業をしたいと考えているのですが可能でしょうか。
>可能であればやり方をご教授いただけますか。

実際に試したことはないのですが、QEMU と chroot を組み合わせ、ブートディスクを QEMU の armhf エミュレータのルートファイルシステムにしてインストールする、という方策が使えるかも知れません。
これについては、弊社ブログの以下の記事が参考になると思います:

 Armadillo-800シリーズ: ATDEでArmadilloのDebian(armhfアーキテクチャ)を動かしてみる
 https://armadillo.atmark-techno.com/blog/53/1088

このブログ記事で説明しているように、ATDE に qemu-user-static パッケージをインストールした後、以下を行ってみてください:

1.) ブートディスクを ATDE にマウントする。

2.) ATDE の /usr/bin/qemu-arm-static を、(1) でマウントしたディレクトリの下の usr/bin/ にコピーする。

3.) (1) でマウントしたディレクトリを引数にして chroot を実行する。

いかがでしょうか?

inokuchi

2024年6月18日 13時04分

> アットマークテクノの古賀です。
>
> inokuchiさん:
> >加えて1点質問があるのですが、いまSDブートでarmadilloを起動しているのですが、そのブートディスクをATDEで起動してインストール作業をしたいと考えているのですが可能でしょうか。
> >可能であればやり方をご教授いただけますか。
>
> 実際に試したことはないのですが、QEMU と chroot を組み合わせ、ブートディスクを QEMU の armhf エミュレータのルートファイルシステムにしてインストールする、という方策が使えるかも知れません。
> これについては、弊社ブログの以下の記事が参考になると思います:
>
>  Armadillo-800シリーズ: ATDEでArmadilloのDebian(armhfアーキテクチャ)を動かしてみる
>  https://armadillo.atmark-techno.com/blog/53/1088
>
> このブログ記事で説明しているように、ATDE に qemu-user-static パッケージをインストールした後、以下を行ってみてください:
>
> 1.) ブートディスクを ATDE にマウントする。
>
> 2.) ATDE の /usr/bin/qemu-arm-static を、(1) でマウントしたディレクトリの下の usr/bin/ にコピーする。
>
> 3.) (1) でマウントしたディレクトリを引数にして chroot を実行する。
>
> いかがでしょうか?

上記方法をためし、root@atde5:/# uname -mを実行するとarmv7lと出力されたので、出来たと思います。

カーネルは4.9を使うように指示があったので、g++をソースからビルドしたいと思うのですが、やり方をご教授いただけますか。
ATDEでブートディスクを起動したら出来るかなと思い、まずpythonをビルドしようとしたのですが、configを実行した際に、どこかのファイルに
アクセスできずエラーが出ました。
このやり方ではできないのでしょうか。

at_shinya.koga

2024年6月18日 13時34分

アットマークテクノの古賀です。

inokuchiさん:
>カーネルは4.9を使うように指示があったので、g++をソースからビルドしたいと思うのですが、やり方をご教授いただけますか。

こちらのスレッドで、「カーネル 4.9 を使ってください」とコメントしていないと思いますが、どのコメントを指していらっしゃるでしょうか?
FAQ の「Armadillo-IoT ゲートウェイ G3L メンテナンスポリシー」に記載していますように、Linux 4.9 は、既に新規開発非推奨としています。
 https://armadillo.atmark-techno.com/faq/software-maintenance-policy-aio…
python3.12.1 のように新しいパッケージをお使いになるのであれば、カーネル 6.1 + bookworm に移行することをお勧めします。

>ATDEでブートディスクを起動したら出来るかなと思い、まずpythonをビルドしようとしたのですが、configを実行した際に、どこかのファイルに
>アクセスできずエラーが出ました。
>このやり方ではできないのでしょうか。

エラーの内容が分かりませんので、コメントするのが難しいです。エラーメッセージの内容を教えていただけますか。
また、python の configure を実行する際に、ソースアーカイブをダウンロードして configure を実行するまでの間に実行されたコマンドの一覧も、教えてくださいませ。

inokuchi

2024年6月20日 10時45分

inokuchiです。
>
> こちらのスレッドで、「カーネル 4.9 を使ってください」とコメントしていないと思いますが、どのコメントを指していらっしゃるでしょうか?
> FAQ の「Armadillo-IoT ゲートウェイ G3L メンテナンスポリシー」に記載していますように、Linux 4.9 は、既に新規開発非推奨としています。
>  https://armadillo.atmark-techno.com/faq/software-maintenance-policy-aio…
> python3.12.1 のように新しいパッケージをお使いになるのであれば、カーネル 6.1 + bookworm に移行することをお勧めします。

社内でそのような意見がありました。紛らわしくてすみません。
いまはdebian10とdebian12の両方で環境を構築して動作確認をしようとしています。
debian10に関してはg++のアップデートがarmadilloのメモリ不足によりできなかったため、SDのブートディスクをATDEで起動すると
PCのメモリに依存してビルド出来ると思い、ビルドを行おうとしたがうまくいってない状況です。
debian12で環境設定をしましたが、仮想環境でpip3.12 install scipyでscipyをインストールしようとしましたがうまくいきませんでした。
コンソールの出力があるので添付します。
エラー内容はメモリ不足によるものに見えるのですが合っているでしょうか。
そして、どのようにしたらscipyをインストールできるでしょうか。

>
> エラーの内容が分かりませんので、コメントするのが難しいです。エラーメッセージの内容を教えていただけますか。
> また、python の configure を実行する際に、ソースアーカイブをダウンロードして configure を実行するまでの間に実行されたコマンドの一覧も、教えてくださいませ。

(エラー内容)
./configure: 1: ./configure: cannot create /dev/null: Permission denied
./configure: 69: ./configure: cannot create /dev/null: Permission denied
./configure: 73: ./configure: cannot create /dev/null: Permission denied
./configure: 73: ./configure: cannot open /dev/null: Permission denied

(実行コマンド)
root@armadillo apt update && apt upgrade
root@armadillo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev curl libbz2-dev
root@armadillo wget https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tgz
root@armadillo tar zxf Python-3.12.1.tgz
atmark@atde8 sudo cp /usr/bin/qemu-arm-static /media/atmark/81cf88ba-4bc5-4591-8252-bf7167da4525/usr/bin
atmark@atde8 sudo chroot /media/atmark/81cf88ba-4bc5-4591-8252-bf7167da4525
root@atde8 cd root/Python-3.12.1
root@atde8 ./configure

以上、よろしくお願いいたします。

ファイル ファイルの説明
scipyインストール.txt