以前の記事でubuntu 24.04でBlink.jlが使えないことに対する,簡易的な対応方法を書きましたが, その後調査して,本来の対策方法が分かったのでここに記します。
と言いつつも,Blink.jlのイシューに先に方法を書きましたが…
まずは,次のような関数を作成します。
using Blink function make_electron_profile(filename) text = """ abi <abi/4.0>, include <tunables/global> $(Blink.AtomShell.electron()) flags=(unconfined) { userns, # Site-specific additions and overrides. See local/README for details. include if exists <local/electron> } """ open(filename, "w") do io print(io, text) end println("copy to /etc/apparmore.d/") end
そして,次のような感じでBlinkのelectron用のapparmorプロファイルのファイルを作成します。
make_electron_profile("my_blink_electron")
そして/etc/apparmore.d/の下にこのプロファイルをコピーします。
しかし,通常/etc/の下はrootの権限がないと書き込めないのでシェル上で
sudoを使ってコピーします。
sudo cp my_blink_electron /etc/apparmore.d/
そして,PCをリスタートすれば特に何のソース変更もなくwin = Window()が使えるようになるはずです。
前回の方法ではセキュリティが弱くなるので,
こっちの方法が本来のやり方なのですが,Blink.jlのモジュールの開発者側では手を出しづらい
(スーパーユーザー権限が必要なので)方法です。
また,前回の方法でも私のように,Plots.jl + Interact.jl + Blink.jlの組み合わせでローカルのモジュールでしか 表示しないケースではそれほど問題にはならないかと思います。
なお,julia言語のパッケージのelectronモジュールのバージョンが変わればプロファイルも変更する必要がありますが,
私がJulia言語を使い始めて(2020年頃)からはelectronのバイナリは一回しか変更されていないので,
そう簡単に変わることもないかもしれません。