====== Fedora 31 に scilab をインストール ====== [[https://www.scilab.org/|Scilab]] からバイナリ(scilab-6.0.2.bin.linux-x86_64.tar.gz)をダウンロード、展開して、"bin/scilab" を起動すると、次のような selinux 回りの警告がでる。動作はするが、なかなかうざい。 /usr/bin/chcon: '/usr/local/scilab-6.0.2/bin/scilab-bin' のコンテキストを `unconfined_u:object_r:execmem_exec_t:s0' に変更できません: 許可されていない操作です Error: Cannot chcon 'scilab-bin' /usr/bin/chcon: '/usr/local/scilab-6.0.2/bin/scilab-cli-bin' のコンテキストを `unconfined_u:object_r:execmem_exec_t:s0' に変更できません: 許可されていない操作です Error: Cannot chcon 'scilab-cli-bin' Fedora 31 には scilab のパッケージが一応あるので、 sudo dnf install scilab でインストールしようとすると、 エラー: 問題: conflicting requests - nothing provides jeuclid needed by scilab-6.0.2-2.fc31.x86_64 - nothing provides jrosetta needed by scilab-6.0.2-2.fc31.x86_64 (try to add '--skip-broken' to skip uninstallable packages) が表示され、jeuclid と jrosetta が Fedora 31 のレポジトリにないために、インストールに失敗する。rpmfind.net で jeuclid と jrosetta を検索し、パッケージをダウンロードしてインストールする。足りないパッケージがあると表示されるので、その都度、入れていく。 sudo rpm -ivh jeuclid-3.1.3-23.fc26.noarch.rpm sudo rpm -ivh jrosetta-1.0.4-14.fc26.noarch.rpm しかるのちに scilab をインストール。 sudo dnf install scilab コンソールからscilabを起動すると、次のエラーメッセージがでる。 警告: Javaパッケージ '/usr/share/java/lucene/lucene-core.jar' が見つかりません。 警告: Javaパッケージ '/usr/share/java/lucene/lucene-core.jar' が見つかりません。 警告: Javaパッケージ '/usr/share/java/lucene/lucene-queryparser.jar' が見つかりません。 警告: Javaパッケージ '/usr/share/java/saxon/saxon.jar' が見つかりません。 警告: Javaパッケージ '/usr/share/java/ecj.jar' が見つかりません。 Javaライブラリのロードでいくつかの問題が発生しました。 これは、一貫性がない挙動をするかもしれません。 どうぞ SCI/etc/classpath.xml を確認してください。 足りないパッケージをさらに追加する。 dnf whatprovides /usr/share/java/lucene/lucene-core.jar で必要なパッケージ名が "lucene-7.7.0-2.fc31.noarch" と分かる。 sudo dnf install lucene lucene-queryparser saxon ecj.jar は'/usr/share/java/ecj/ecj.jar' にあるので、'/usr/share/scilab/etc/classpath.xml'の該当個所を書き換える。 --- classpath.xml.orig 2020-02-01 01:37:50.491042675 +0900 +++ classpath.xml 2020-02-01 01:38:15.476129522 +0900 @@ -147,7 +147,7 @@ The option is "disableUnderMode" and can - + これで scilab がGUIも含めて動作し、日本語表示もOK。 追記:java-1.8.0-openjdk{,-headless}-1.8.0.242.b08-0.fc31.x86_64 では "Main Scilabクラスにアクセスできませんでした。" とのメッセージが出て、scilab を起動できない。過去のバージョンは dnf --showduplicates list java-1.8.0-openjdk でわかる。次のコマンドでダウングレードする。 sudo dnf downgrade java-1.8.0-openjdk{,-headless}-1.8.0.222.b10-1.fc31 これらのパッケージをアップデートの対象から外すには、次のファイルに記述する。 [main] excludepkgs=java-1.8.0-openjdk* この設定の下で、強制的にアップデートする場合は、次のコマンド sudo dnf update --disableexcludes=all なお、"ldd /usr/bin/scilab-bin" を実行すると、"lib{java,jvm,verify}.so" が not found となっている。これらは次のパスにある。いずれも、"java-1.8.0-openjdk-headless-1.8.0.222.b10-1.fc31" のファイルである。 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-1.fc31.x86_64/jre/lib/amd64/libjava.so /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-1.fc31.x86_64/jre/lib/amd64/server/libjvm.so /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-1.fc31.x86_64/jre/lib/amd64/libverify.so "1.8.0.222.b10-1" → "1.8.0.242.b08-0" の変更では、"jre/bin/{clhsdb,hsdb}" が消えている。 JDK-8226870 removed clhsdb and hdsdb from the JRE bin directory, so we should do likewise. Add alternatives support for these two new SDK binaries. JDK-8226870 を検索して見てみたが、あまり関係はなさそう。