LoginSignup
0
0

More than 1 year has passed since last update.

nwdiagをRaspberry pi上で実行する際のエラー対処

Last updated at Posted at 2023-01-12

発見契機

自宅内の装置が増えてきて管理が煩雑になってきたので、あるフォーマットに則って記載したテキストから、自動でネットワーク構成図を出力してくれるnwdiagを導入してみた。
その際、ちょっとしたエラーが発生したため備忘録として残す。

nwdiag実行装置

Raspberry pi 3 Model B

エラー内容

pipでnwdiagを導入後任意の構成図ファイルである「sample.nwdiag」を構成図に変換しようとしたところ、下記のエラーが発生した。

user1@nuc:~/nwdiag $ pip install nwdiag
Defaulting to user installation because normal site-packages is not writeable
(略)
Installing collected packages: webcolors, Pillow, funcparserlib, blockdiag, nwdiag
Successfully installed Pillow-9.4.0 blockdiag-3.0.0 funcparserlib-1.0.1 nwdiag-3.0.0 webcolors-1.12
user1@nuc:~/nwdiag $
user1@nuc:~/nwdiag $ nwdiag sample.nwdiag
Traceback (most recent call last):
  File "/home/hub/.local/bin/nwdiag", line 5, in <module>
    from nwdiag.command import main
  File "/home/hub/.local/lib/python3.7/site-packages/nwdiag/command.py", line 18, in <module>
    from blockdiag.utils.bootstrap import Application
  File "/home/hub/.local/lib/python3.7/site-packages/blockdiag/utils/bootstrap.py", line 24, in <module>
    from blockdiag.utils import images
  File "/home/hub/.local/lib/python3.7/site-packages/blockdiag/utils/images.py", line 23, in <module>
    from PIL import Image
  File "/home/hub/.local/lib/python3.7/site-packages/PIL/Image.py", line 103, in <module>
    from . import _imaging as core
ImportError: libopenjp2.so.7: cannot open shared object file: No such file or directory

ここのサイトを参照し、エラーで表示されていたlibopenjp2.so.7:を補えそうなlibopenjp2-7-devを追加した。
その後、再度実行したところ問題なくpng形式でネットワーク構成図を出力できた。

user1@nuc:~/nwdiag $ sudo apt install libopenjp2-7-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libopenjp2-7
The following NEW packages will be installed:
  libopenjp2-7 libopenjp2-7-dev
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 183 kB of archives.
After this operation, 568 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
(略)
Processing triggers for libc-bin (2.28-10+rpt2+rpi1+deb10u1) ...
user1@nuc:~/nwdiag $ nwdiag sample.nwdiag
user1@nuc:~/nwdiag $ ls
sample.nwdiag  sample.png
user1@nuc:~/nwdiag $

必要ライブラリの検索方法

今回はGoogle検索から解決方法を上手く見つけ出したが、地道に一つずつ確認する場合は下記の手段で探す。

  1. 不足ライブラリの情報を確認
    ImportError: libopenjp2.so.7: cannot open shared object file: No such file or directoryとあるので、libopenjp2に目星をつけて検索
  2. aptでインストール可能なライブラリを検索
    下記のようにapt searchで検索する。
    yumなどの管理ソフトを使っているなら、それに合わせたライブラリ検索コマンドを実行する。
    下記実行時にはすでにapt install libopenjp2-7-devを実行済みだったため[installed]が記載されている。
    user1@nuc:~/nwdiag $ apt search libopenjp2
    Sorting... Done
    Full Text Search... Done
    libopenjp2-7/oldstable,now 2.3.0-2+deb10u2 armhf [installed,automatic]
      JPEG 2000 image compression/decompression library
    
    libopenjp2-7-dev/oldstable,now 2.3.0-2+deb10u2 armhf [installed]
      development files for OpenJPEG, a JPEG 2000 image library
    
    libopenjp2-tools/oldstable 2.3.0-2+deb10u2 armhf
      command-line tools using the JPEG 2000 library
    
    user1@nuc:~/nwdiag $
    
  3. 共有ライブラリの不足であれば、大体-devが入っているライブラリを導入すれば解決。念のためパッケージ名下の説明文はよく読むこと

さいごに

テキストベースで綺麗にネットワーク構成図が生成されるので、pythonを使って装置から情報取得&文字列操作でnwdiag用のファイルを自動出力&nwdiag実行と、一連の流れを自動化できそうな気配。
テキストからグラフィカルなものへ変換できる系は色々なツールへ発展させられそうで楽しい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0