タイトル通りです。Rustは動く前提で話を進めます。では解決した方法だけ先にドン。
20231119追記 Appimageが書き出せなかったので追記。
解決方法
それぞれ何を参考にしたかを下に載せてます
cargo install tauri-cli
↑ https://tauri.app/v1/guides/getting-started/setup/vite/#create-the-rust-project を参考にしました。
sudo apt install libsoup2.4-dev
sudo apt-get install javascriptcoregtk-4.1 libsoup-3.0 webkit2gtk-4.1 -y
↑ https://github.com/tauri-apps/tauri/issues/3701 にあったものを参考にさせていただきました。
追記20240115 環境構築し直したら"webkit2gtk-4.1" が "libwebkit2gtk-4.0-dev"になってました。webkit2gtk-4.1が無かったらsearchコマンドとかでwebkit2gtk*を探してやってください。
sudo apt-get install libjavascriptcoregtk-4.0-dev
↑ BingのAIくんに教えてもらいました。
sudo apt-get install libssl-dev
↑これはいらない気がする
sudo apt install libwebkit2gtk-4.0-dev
↑自力で探しました。
sudo apt install build-essential
↑gccとかしか入れてないならいるかも
追記:AppImageが書き出せないときの対処
rm src-tauri/target
場合によっては
sudo apt-get install librsvg2-dev
↑ https://github.com/tauri-apps/tauri/issues/3278 より
環境
- (ほぼKubuntuの)Ubuntu 22.04.3 LTS & Windows 11(バージョンわすれた)
- Visual Studio Code
- Rust 1.73.0
背景
rustでもGUI作れるのかーと思い、Tauriを使ってみようと思ったのです。で、早速サンプルを動かそうとしました。tauriはパッケージの管理方法をnpmとかyarnとかから選べるわけですが、cargoにするとフレームワークが使えません...
が、僕はフレームワークなんて言うのはjQueryすら知らない系の人間なので「Cargoでいっかー」と思ってcargoを選んだのです。まあcargo選んでる日本語サイトありませんでしたが...。で、cargo tauri dev
してみるとどうでしょう。
動きません。そもそもサンプルが動かせません。これがcargoにしたためか他の原因があるのかわからなかったので、とりあえずcargoで動かす方法を探してみました。
エラーたち
tauriがない
まず出てきたのはこいつです。
cargo tauri dev error: no such command: `tauri`
えぇ?!tauriがないって?!って思いました。サンプルプロジェクトの作成に使ったはず...と思ったら、インストールしていたのはcargo install create-tauri-app
で、create-tauri-app
でした。cliツールとかじゃなくて雛形の作成マンでした。
cargo install tauri-cli
で解決。
libsoupとか各種Cライブラリがない
Cライブラリを要求してきました。githubで同じことで躓いていた方がいたのでそれを参考にして解決。
sudo apt install libsoup2.4-dev
と
sudo apt-get install javascriptcoregtk-4.1 libsoup-3.0 webkit2gtk-4.1 -y
を入れたら...解決してませんでした。
error: failed to run custom build command for webkit2gtk-sys v0.18.0
が出現。あれ?でもさっき確かに「webkit2gtk-4.1」をインストールしましたよね?devが後ろについてるパッケージもいるのか?と思い、sudo apt search webkit2gtk-4.0
をしてみると...
$ sudo apt search webkit2gtk-4.0
Sorting... Done
Full Text Search... Done
libwebkit2gtk-4.0-37/jammy-updates,jammy-security,now 2.42.1-0ubuntu0.22.04.1 amd64 [installed]
Web content engine library for GTK
libwebkit2gtk-4.0-dev/jammy-updates,jammy-security 2.42.1-0ubuntu0.22.04.1 amd64
Web content engine library for GTK - development files
ビンゴでした。で、早速
sudo apt install libwebkit2gtk-4.0-dev
動いてくれました。ここまで10分くらいしかかかってないのでラッキーでハッピーです。
ビルドしてみる
せっかくなのでリリース向けのビルドしてみることに。cargo tauri build
でできます...
が、サンプルプロジェクトの場合は/src-tauri/tauri.conf.json
をいじらなくてはビルドができないようになっています。
Error You must change the bundle identifier in `tauri.conf.json > tauri > bundle > identifier`. The default value `com.tauri.dev` is not allowed as it must be unique across applications.
単純にjson内のbundleからidentifierを適当に変えます。今回はtestにしてみました。
そしてもう一度 cargo tauri build
をすればビルドできます。
なんか Error failed to bundle project: error running appimage.sh
とか言う苦情が出ますが無視です。これにてビルドもできました。
これはちょっとした雑談なのですが、rustの諸々の便利さはいい意味でイカれてますよね。今回もリリース用のビルドがcargo tauri build
だけでできるのはもちろん、クロスコンパイルの性能とかもイカれてます。rustup target list
から一覧を確認できますが、linuxからwindowsにビルドができるだけでも最高です。
tauriでも、cargo tauri build -t x86_64-pc-windows-gnu
でできます。
少し前に僕は「linuxからwinにGUIアプリ作りてー」という適当な理由でCとGTKを使って試したことがありますが、一日stack overflowをさまよって、結局出来ませんでした。あの日の自分にこのことを教えてやりたい。
追記 AppImageが書き出せない
debやexeなら書き出しができるのに、何故かAppImageだけ
Error failed to bundle project: error running appimage.sh
というエラーが出て使えませんでした。
結論から言うと書き出したものが溜まってると書き出せないことがあるみたいです。
rm src-tauri/target
消し方は何でも構わないので消してやりましょう。cliから消すときは自分がどこにいるかお忘れなく。
また、場合によってはこれをインストールする必要があるようです。
sudo apt-get install librsvg2-dev
結論
Rustは便利で楽しくていいぜ...
参考記事一覧
それぞれの解決法を提供してくださってる方に感謝します。