PrePoMax on DEXCS2022

【2022/12/5】Cubic対応を追記しました。

構造解析を簡単に実行できるオープン系のツールとして、最近のイチ推しはPrePoMaxではないかと思っている。但し、PrePoMaxはWindows上で動くアプリなので、そのままDEXCS(OS はLinux)の上で動かすことは出来ない。しかし、Linuxには、wine というWindowsをエミュレートするソフトがあり、これを使えばPrePoMaxも動くということがわかっていた。とはいえ、これもやってみたところ最新版+DEXCS2022では一筋縄でいかなかった(後述)。

DEXCSも2022からは4GBのファイルサイズの制限が無くなったので、将来的には、このPrePoMaxも同梱したDEXCS for 何チャラ を考え中でもある。

そこで、ここではPrePoMaxの最新版(v1.3.5)を、DEXCS2022の上でインストールする方法、またisoイメージに同梱する方法についても取り纏めておくこととした。

なお、DEXCS2022 for OpenFOAM(R)には、FreeCADが同梱されており、このFEMモジュールにて簡単な構造解析もできるようになっている。しかしDEXCS2021に搭載したものと比較して、メッシュ作成にやや手こずるケースが多くなったように感じられた。具体的には、某大学で予定している演習問題の課題が、前年通りにできなくなった。そこでPrePoMaxと比べてどうなんだ?を調べようとしたのがそもそもの目的であったが、その答えは、本記事には含まれない。

 

問題は何か?

PrePoMaxがWindows上で動くソフトであると記したが、一つ要件があって、Microsoftの、.NET Framework 4.8 がインストールしておく必要があるという点である。 

1年前にDEXCS2021上に構築した際には4.6であったが、その時には、

				
					$ sudo apt install wine
$ sudo apt install winetricks
$ winetricks dotnet46
				
			

という手順でできた。1行目でwineをインストールして、2行目でwinetricksというパッケージインストーラーをインストール。最後にdotnet46(.NET Framework 4.6)をインストールするものである。いずれもインストールにはそこそこの時間を要して、最後のdotnet46にて、いくつかWarningは出ていたものの、最後まで進んで、PrePoMax も使えるようになっていた。

今回、DEXCS2022にてこれを実施したところ2行目までは問題無かったが、dotnet46の代わりに、dotnet48として実行したところ、

				
					Executing load_dotnet48 
------------------------------------------------------
warning: This package (dotnet48) is broken in wine-6.0.3. Broken since 5.18. See https://bugs.winehq.org/show_bug.cgi?id=49897 for more info. Use --force to try anyway.
------------------------------------------------------

				
			

となって、これ以上進めないのであった(ライセンスの同意画面にもたどり着けなかった)。因みに、dotnet48でなく、dotnet46にしても同じであった、DEXCS2021で実施した際とはOSが違う、またwineのバージョンも違うので、再現できなくとも仕方無いと諦めかけたが、ネットで調べると、.NET Framework のインストールについては色々情報があったので、あれこれ回り道もしたがようやくインストールに成功したので、以下に取り纏めておく。

.NET Framework 4.8 のインストール方法

結論はwine, winetricks ともに最新版を使えということなんだが、そのインストール方法に問題がある。成功例を先に記し、その後に回り道の失敗談も残しておく。

これならOK

				
					$ sudo dpkg --add-architecture i386 
$ sudo mkdir -pm755 /etc/apt/keyrings
$ sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
$ sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources
$ sudo apt update
$ sudo apt install --install-recommends winehq-devel
$ sudo apt install winetricks
$ sudo winetricks --self-update
$ winetricks dotnet48

				
			

この方法は、基本的にwine 本家の、Ubuntu – WineHQ Wiki によるものだが、一部これを意訳して紹介したサイトの情報を加味した結果である。

なお、wineの標準debパッケージがインストール済みの環境では、5行目を実行するとGPGエラーになるので、その場合は以下実行して、5行目以降を実行すればよい。

				
					
$ sudo sed -i s@/usr/share/keyrings/@/etc/apt/keyrings/@ /etc/apt/sources.list.d/winehq-jammy.sources

				
			

回り道その1

今となっては正確に何をやってしまったのか思い出せないのだが、当初は上に記したサイト情報の通りにやって、ある程度までうまく行った。但し、これはDEXCS2022の環境でなく、拙宅Linuxマシンで、OSは同じ(ubuntu 22.04)なんだが、DEXCS以外にも様々なアプリケーションが組み込まれた環境で実施していた。

ある程度までうまく行った、、、という意味は、最後の土壇場でPrePoMaxを起動すると、mscoree.dll が無いので、動かないというエラーメッセージが出た。これもmscoree.dllをインストールする方法など色々試行錯誤したが、最終的にmscoree.dll をDEXCS2021で使っていたものをそのままコピーして使ったら、問題なく動いた!という信じられないような綱渡りであった。

回り道その2

何はともあれ、上記の方法で出来たので、改めてDEXCS2022のクリーンな環境でやり直してみよう、、、となったのだが、これが最初で躓いてしまったのである。

参考にしたサイトの方法は、意訳した、、、と紹介したが、本家のやり方とは少し違っていた。

				
					$ sudo dpkg --add-architecture i386 
$ wget -nc https://dl.winehq.org/wine-builds/winehq.key
$ sudo mv winehq.key /usr/share/keyrings/winehq-archive.key
$ wget -nc https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources
$ sudo mv winehq-jammy.sources /etc/apt/sources.list.d/
$ sudo apt update

				
			

要するに、公開鍵winehq.keyの置き場所が違うのだが、これをクリーンなDEXCS2022で実施すると、、、

				
					W: GPG エラー: https://dl.winehq.org/wine-builds/ubuntu jammy InRelease: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 76F1A20FF987672F
E: リポジトリ https://dl.winehq.org/wine-builds/ubuntu jammy InRelease は署名されていません。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。

				
			

というメッセージで、ソースそのものをダウンロード出来ないのであった。

回り道その3

本家情報を改めて読み返して、公開鍵の置き場所が違うことに気づいて、本家情報通りにやり直したところ、ようやくwine本体のインストールに成功した。しかし、それでもなお、

				
					$ sudo dpkg --add-architecture i386 
$ sudo mkdir -pm755 /etc/apt/keyrings
$ sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
$ sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources
$ sudo apt update
$ sudo apt install --install-recommends winehq-devel
$ sudo apt install winetricks
$ winetricks dotnet48


(途中省略)

------------------------------------------------------
Executing load_dotnet48 
------------------------------------------------------
warning: This package (dotnet48) is broken in wine-7.18. Broken since 5.18. See https://bugs.winehq.org/show_bug.cgi?id=49897 for more info. Use --force to try anyway.
------------------------------------------------------

				
			

winetricksのアップデート

				
					$ sudo winetricks --self-update
				
			

も必要であるということであった。ここは意訳サイトさんに感謝です。

Cubicでのインストール問題

で、ここまで出来たら、当然次はisoイメージに同梱(Cubic上の仮想マシンにインストール)できるかどうかであったが、インストール最終段の

 

				
					winetricks dotnet48
				
			

において、GUI画面を使って操作するシーン(たとえば下図)

が出てくるので無理であろうことは予想でき、実際にやってみてその通りであった。

今の所、winetricks の最新版までをisoイメージに同梱して、起動後DEXCSセットアップの最終段で、上記コマンドを実行すればインストール出来る、というところまでは確認できている。但し、この方法でやるには、インターネット環境に接続していることが前提となる。

インターネットに接続できない環境でどうしたら良いのか?...ある程度、当たりはつけてあるが、本稿では今後の課題として残しておく。

【以下、2022/12/5追記】

Cubicの仮想マシンでは、加えて

				
					apt install mono-complete
				
			

としておいて、一旦isoイメージを作成し、そのisoイメージを使って新しく仮想マシンを立ち上げる。ユーザー名は定番のdexcsとしておく。この仮想マシンでPrePoMaxを起動しようとすると、.NetFrameworkが必要となって、インターネットに接続された環境であれば自動的にインストールが始まる。

ポイントは、ここでインストールされる実体は、ホームフォルダ直下、.wine という隠しディレクトリに全て収納されるということである。したがって、ここで作成された.wineフォルダそのものをCubeの仮想マシンの/etc/skel/下に収納してやれば動くのでないかと予想された。そこで実際にその通りにやって、isoイメージを作成。また新たに仮想マシンを作成(ユーザー名はdexcsと)したところ、今度はインストール無しですんなりとPrePoMaxが立ち上がることを確認できた。

問題は、ユーザー名がdexcsでない場合である。当然予想されたことであったが、すんなりとは動いてくれず、ユーザー名についてのカスタマイズが必要であった。少々難航したが最終的にはDEXCSセットアップ(setupDexcs.sh)にて処理できるようになった。

/opt/DEXCS/setup.list にユーザー名の変更に応じて、書き換えが必要な設定ファイルを定義しておくようになっており、3〜5行目を追加した。

				
					~/.FreeCAD/user.cfg
~/.TreeFoamUser/configTreeFoam
~/.wine/system.reg
~/.wine/user.reg
~/.wine/userdef.reg
				
			

setupDexcs.sh 中では、上記3つのファイルに対し、6行目で、ユーザー名を変換する。基本的にはこれで、とりあえずPrePoMaxを起動できるようにはなる。

				
					WHO=`whoami`
echo "#!/bin/bash" > /opt/DEXCS/startup1.sh
LIST=/opt/DEXCS/setup.list
while read i
do
	echo "sed 's/\\\\dexcs/\\\\$WHO/g' $i > /opt/DEXCS/temp" >> /opt/DEXCS/startup1.sh
	echo "sed 's/home\/dexcs\//home\/$WHO\//g' /opt/DEXCS/temp > $i" >> /opt/DEXCS/startup1.sh
	#echo "cp /opt/DEXCS/temp $i" >> /opt/DEXCS/startup1.sh
	echo "" >> /opt/DEXCS/startup1.sh
done < ${LIST}


mv $HOME/.wine/drive_c/users/dexcs $HOME/.wine/drive_c/users/$WHO 
rm $HOME/.wine/drive_c/users/$WHO/Desktop
ln -s $HOME/Desktop $HOME/.wine/drive_c/users/$WHO/Desktop
rm $HOME/.wine/drive_c/users/$WHO/Documents
ln -s $HOME/Documents $HOME/.wine/drive_c/users/$WHO/Documents
rm $HOME/.wine/drive_c/users/$WHO/Downloads
ln -s $HOME/Downloads $HOME/.wine/drive_c/users/$WHO/Downloads
rm $HOME/.wine/drive_c/users/$WHO/Music
ln -s $HOME/Music $HOME/.wine/drive_c/users/$WHO/Music
rm $HOME/.wine/drive_c/users/$WHO/Pictures
ln -s $HOME/Pictures $HOME/.wine/drive_c/users/$WHO/Pictures
rm $HOME/.wine/drive_c/users/$WHO/Videos
ln -s $HOME $HOME/.wine/drive_c/users/$WHO


				
			

しかし、これだけだとPrePoMaxを起動出来た後、PrePoMaxそのものの操作は問題なさそうだが、ファイルの入出力メニューを使用すると致命的エラーで落ちてしまう。.wineのフォルダ構成を調べたところ、ユーザー名を使ったフォルダ名が存在することがわかったので、これも変更してやる必要があった。この処理を13行目から25行目にて実行している。

Share

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください