LoginSignup
2
1

UbuntuのRustでTauriを使おうと思ったら手こずった話

Last updated at Posted at 2023-11-13

タイトル通りです。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

をしてから、cargo tauri devを実行したら
Screenshot_20231113_215036.png

動いてくれました。ここまで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は便利で楽しくていいぜ...

参考記事一覧

それぞれの解決法を提供してくださってる方に感謝します。

2
1
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
2
1