Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

libwebkit2gtk-4.0 not available in Ubuntu 24 & Debian 13 repositories #9662

Open
happybeing opened this issue May 5, 2024 · 63 comments
Open
Labels
platform: Linux priority: 1 high status: needs triage This issue needs to triage, applied to new issues type: bug

Comments

@happybeing
Copy link

happybeing commented May 5, 2024

Describe the bug

The Tauri v1 pre-requisite libwebkit2gtk-4.0-dev is not available in Ubuntu 24 repositories. This causes an error when installing the pre-requisites specified here, and when running cargo tauri dev on Ubuntu 24.

Note: libwebkit2gtk-4.1-dev is available but doesn't help with Tauri 1.

Reproduction

Run:

sudo apt update
sudo apt install libwebkit2gtk-4.0-dev \
    build-essential \
    curl \
    wget \
    file \
    libssl-dev \
    libgtk-3-dev \
    libayatana-appindicator3-dev \
    librsvg2-dev

reports:

E: Unable to locate package libwebkit2gtk-4.0-dev
E: Couldn't find any package by glob 'libwebkit2gtk-4.0-dev'

And cargo tauri dev:

The following warnings were emitted during compilation:

warning: [email protected]: 

error: failed to run custom build command for `javascriptcore-rs-sys v0.4.0`

Caused by:
  process didn't exit successfully: `/home/mrh/src/safe-browser/awe/src-tauri/target/debug/build/javascriptcore-rs-sys-855dc84908b0218c/build-script-build` (exit status: 1)
  --- stdout
  cargo:rerun-if-env-changed=JAVASCRIPTCOREGTK_4.0_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:warning=
  pkg-config exited with status code 1
  > PKG_CONFIG_PATH=/home/mrh/.gvm/pkgsets/go1.15/global/overlay/lib/pkgconfig: PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 pkg-config --libs --cflags javascriptcoregtk-4.0 javascriptcoregtk-4.0 >= 2.24

  The system library `javascriptcoregtk-4.0` required by crate `javascriptcore-rs-sys` was not found.
  The file `javascriptcoregtk-4.0.pc` needs to be installed and the PKG_CONFIG_PATH environment variable must contain its parent directory.
  PKG_CONFIG_PATH contains the following:
      - /home/mrh/.gvm/pkgsets/go1.15/global/overlay/lib/pkgconfig
      - 

  HINT: you may need to install a package such as javascriptcoregtk-4.0, javascriptcoregtk-4.0-dev or javascriptcoregtk-4.0-devel.

warning: build failed, waiting for other jobs to finish...

Workaround

I worked around this by adding the following line to /etc/apt/sources.list:

deb http://gb.archive.ubuntu.com/ubuntu jammy main

Then doing:

sudo apt update
sudo apt install libwebkit2gtk-4.0-dev

IMPORTANT: it was recommended in this comment to undo the change to sources.list after installing to prevent problems with dependencies being deleted.

Expected behavior

no errors

Full tauri info output

[✘] Environment
    - OS: Ubuntu 24.4.0 X64
    ✘ webkit2gtk-4.0: not installed
      Visit https://tauri.app/v1/guides/getting-started/prerequisites to learn more about tauri prerequisites
    ✔ rsvg2: 2.58.0
    ✔ rustc: 1.78.0 (9b00956e5 2024-04-29)
    ✔ cargo: 1.78.0 (54d8815d0 2024-03-26)
    ✔ rustup: 1.27.0 (bbb9276d2 2024-03-08)
    ✔ Rust toolchain: stable-x86_64-unknown-linux-gnu (environment override by RUSTUP_TOOLCHAIN)
    - node: 22.1.0
    - yarn: 1.22.5
    - npm: 10.7.0

[-] Packages
    - tauri [RUST]: 1.6.1
    - tauri-build [RUST]: 1.5.1
    - wry [RUST]: 0.24.7
    - tao [RUST]: 0.16.8
    - tauri-cli [RUST]: 1.5.11
    - @tauri-apps/api [NPM]: 1.5.3 (outdated, latest: 1.5.4)
    - @tauri-apps/cli [NPM]: 1.5.11 (outdated, latest: 1.5.12)

[-] App
    - build-type: bundle
    - CSP: unset
    - distDir: ../build
    - devPath: http://localhost:5173/
    - framework: Svelte
    - bundler: Vite

Stack trace

No response

Additional context

No response

@happybeing happybeing added status: needs triage This issue needs to triage, applied to new issues type: bug labels May 5, 2024
@FabianLars FabianLars pinned this issue May 5, 2024
@FabianLars FabianLars changed the title [bug] pre-requisite libwebkit2gtk-4.0-dev not available in Ubuntu 24 repositories libwebkit2gtk-4.0 not available in Ubuntu 24 repositories May 5, 2024
@lucassmacedo

This comment was marked as duplicate.

@FabianLars FabianLars changed the title libwebkit2gtk-4.0 not available in Ubuntu 24 repositories libwebkit2gtk-4.0 not available in Ubuntu 24 & Debian 13 repositories May 7, 2024
@piyunior
Copy link

Have you already solved this bug?

@nacodermer
Copy link

see Ubuntu 24.04 LTS: error while loading shared libraries: libwebkit2gtk-4.0.so.37

sudo nano /etc/apt/sources.list.d/ubuntu.sources

add this as it shows:
jammy
jammy-security

then

sudo apt update
sudo apt install libwebkit2gtk-4.0-dev

npm run tauri dev

for my development env, this woks

@nacodermer
Copy link

see Ubuntu 24.04 LTS: error while loading shared libraries: libwebkit2gtk-4.0.so.37

sudo nano /etc/apt/sources.list.d/ubuntu.sources

add this as it shows: jammy jammy-security

then

sudo apt update
sudo apt install libwebkit2gtk-4.0-dev

npm run tauri dev

for my development env, this woks

for end user, use sudo apt install libwebkit2gtk-4.0 should be ok after add jammy and jammy-security into /etc/apt/sources.list.d/ubuntu.sources

@nacodermer
Copy link

nacodermer commented May 27, 2024

see Ubuntu 24.04 LTS: error while loading shared libraries: libwebkit2gtk-4.0.so.37
sudo nano /etc/apt/sources.list.d/ubuntu.sources
add this as it shows: jammy jammy-security
then

sudo apt update
sudo apt install libwebkit2gtk-4.0-dev

npm run tauri dev

for my development env, this woks

for end user, use sudo apt install libwebkit2gtk-4.0 should be ok after add jammy and jammy-security into /etc/apt/sources.list.d/ubuntu.sources

This is a bit dirty. It is recommended to restore /etc/apt/sources.list.d/ubuntu.sources to its original state after installing libwebkit2gtk-4.0-dev.

Otherwise there will be weird errors, this is the one I'm currently experiencing:

on kububtu,when Double-click the deb package, will install the deb using the QApt graphical interface by default (i.e. qapt-deb-installer)

Double-click google-chrome-stable_current_amd64.deb 125.0.6422.112. It will originally prompt a dependency unsatisfied error in the QApt interface, but it can actually be installed using apt or dpkg

after changing /etc/apt/sources.list.d/ubuntu.sources and apt update

Double-clicking google-chrome-stable_current_amd64.deb 125.0.6422.112 does not prompt a dependency not satisfied error in the QApt interface, but displays that many dependencies need to be deleted.

These dependencies are necessary for the system, including the desktop environment, desktop keyboard and mouse input devices, input methods, etc. Many contents and some installed software will be deleted.

According to actual test, using apt to install this deb will automatically change to use the package in the server without causing problems.
Therefore the bug should be caused by the QApt graphical interface installation (i.e. qapt-deb-installer)

In addition, dpkg -i has not been tested. I don’t know whether apt install -f is required and whether it will cause problems.

@adiantek
Copy link

Your workaround doesn't work:

The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libdbus-glib-1-dev : Depends: libdbus-glib-1-2 (= 0.112-3) but 0.112-3build2 is to be installed
 librsvg2-dev : Depends: librsvg2-2 (= 2.54.5+dfsg-1ubuntu2.1) but 2.58.0+dfsg-1build1 is to be installed
                Depends: librsvg2-common (= 2.54.5+dfsg-1ubuntu2.1) but 2.58.0+dfsg-1build1 is to be installed
E: Unable to correct problems, you have held broken packages.

I tested also on Kali and there is a conflict with libjpegturbo0. So now, it is unable to use tauri on latest Ubuntu LTS / Kali

@happybeing
Copy link
Author

The workaround in the OP worked on a clean Ubuntu 24.04.

@nacodermer
Copy link

The workaround in the OP worked on a clean Ubuntu 24.04.

cat /etc/apt/sources.list # on kubuntu24.04, it saids:
# Ubuntu sources have moved to /etc/apt/sources.list.d/ubuntu.sources

might who “Packaging these dependencies from ubuntu22.04 for installation on ubuntu24.04, and distinguishing between non-dev and dev versions “ can solve this problem?

@arsinclair
Copy link

arsinclair commented May 30, 2024

Not functional on Debian Testing (Trixie) / Unstable (sid), the package is not added to the repositories.

Installing libwebkit2gtk-4.0-dev from Stable is not possible: it breaks the majority of already installed packages.

It's pretty much a show-stopper, there's no workaround atm.

@tranxuanthang
Copy link

I'm thinking of switching my project to Tauri 2.0 beta right now so that it uses webkit2gtk-4.1, and compatible with Ubuntu 24.04+, but I'm still not sure if it is worth it.

@happybeing
Copy link
Author

That will depend on the value of switching to you.

I've switched because I want to try some the new features and it seems good but I'm aware some issues I have could be with v2 beta, especially as I'm pushing she boundaries. But finding issues is the point of a beta, and my using it. No better time to get things fixed fast!

My app is though a demo not production so it won't be a disaster if I hit bugs, but so far it seems stable. The docs are a bit patchy and fluid, but the support I've had more than make up for that.

@ReactorScram
Copy link

I don't see 4.1 in my Ubuntu 20.04 VM. Does that mean it's not possible for the same binary to support both 20.04 and 24.04?

I'm trying to think of workarounds I could do... maybe a shim script that launches either a 4.0-linked binary or a 4.1-linked binary after probing for libraries? It might work with Tauri's deb bundler, with some creativity, or I could hack around it.

But if that means simultaneously building for both Tauri 1.x and 2.x it would be too much effort. Unless 2.x has a compromise between deb and AppImage where I can install systemd services and have post-install and pre-remove scripts, but also bundle WebKit.

@happybeing
Copy link
Author

happybeing commented May 30, 2024

@ReactorScram I built on Ubuntu 24 after using the fix from the OP and in very early testing people found that the following worked:

  • .deb on Ubuntu 22.04 after 'sudo apt --fix-broken install`
  • .deb on Ubuntu 22.04 (no extras)
  • .deb on Ubuntu 23.04 (no tweaks) 🥳
  • .rpm converted to .deb running on Mint 🎉 (after turning the user off and on again 😆)

The following did not work:

  • AppImage on Ubuntu 23.04 (user reported "nothing happens")

@FabianLars
Copy link
Member

If you built your app on 24.04 none of what you wrote is supposed to actually work due to glib not being backword compatible like this (basically the reason for "build on the oldest system you want to support"), so i'd be very careful with that approach.

@happybeing
Copy link
Author

@FabianLars that's exactly what I expected yet those are the facts! 🤷‍♂️

... so far.

@FabianLars
Copy link
Member

Debian 11 doesn't have webkitgtk 4.1 so you can only build it inside docker or something like this but that built app will likely not run on debian 11.

@alicard
Copy link

alicard commented Nov 7, 2024

Please help me. I try to install deb app
Screenshot from 2024-11-07 11-53-43

The error:
nginx@Inspiron-7472:~$ sudo apt-get install libwebkit2gtk-4.1-0
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libwebkit2gtk-4.1-0
E: Couldn't find any package by glob 'libwebkit2gtk-4.1-0'
E: Couldn't find any package by regex 'libwebkit2gtk-4.1-0'

@FabianLars
Copy link
Member

@alicard What's the distro version you're trying to install it on? Like we said above, Debian 11 and below and Ubuntu 20.04 and below do not have the webkitgtk version we need for Tauri v2.

@NerijusRazvodovskis
Copy link

hey, are you thinking to release an fix for this or we still have to play with an workarounds? :)

@ahqsoftwares
Copy link
Contributor

hey, are you thinking to release an fix for this or we still have to play with an workarounds? :)

Most probably there will be no fix, because tauri v1 is kinda like deprecated now

@FabianLars
Copy link
Member

Deprecated may be a bit harsh (or maybe not since I said the same above...) but I also don't expect us to fix this / add a workaround at this point tbh.

We wouldn't turn down any community contributions of course but I don't expect to see any.

I still don't know if it is even technically possible to reasonably solve this (not talking about completely replacing 4.0 with 4.1 in v1 because that makes no sense).

@hichemfantar

This comment was marked as off-topic.

@FabianLars

This comment was marked as off-topic.

@hichemfantar

This comment was marked as off-topic.

@FabianLars

This comment was marked as off-topic.

@ahqsoftwares
Copy link
Contributor

Open issue, 85+ upvotes, 0 fix.

To be honest, there's no fix actually to this issue. If you use libwebkit2gtk-4.0, its gonna not work in modern distros, if you use libwebkitgtk-4.1, it won't work in older distros

@martpie
Copy link

martpie commented Dec 2, 2024

I just ran into this issue while trying to test a Tauri app on a fresh new Ubuntu virtual machine. This issue seems quite a valid concern for developers choosing Tauri as a distribution platform for their software.

To be honest, there's no fix actually to this issue.

I think there is something the Tauri team (and community!) could help with though: documenting those pitfalls, and workarounds.

Example, on the current debian distribution page, no mention are made regarding:

  • backward compatibility
  • how libwebkit may be accessible for some distros or not
  • what developers should do with it?
    • is it possible to build for an older platform?
    • how to tell users about it? should we distribute different binaries?
    • should developers just target modern distros?
    • should developers target for snap/appimages/flatpaks instead? If yes, are there downsides?
  • are there workarounds? is it possible to ask users to install those older libwebkitgtk (via some other sources) and hope for things to work?
  • is there something in the long run that the Tauri team can do to support more platforms at once?
  • etc

I get it, Linux development is a freaking mess (and not only with Tauri), so let's make people aware of it and attempt to provide solutions? :]

@ahqsoftwares
Copy link
Contributor

ahqsoftwares commented Dec 2, 2024

There's a solution to this problem, number 1 is to distribute AppImages, they work everywhere

Number 2 is to have both a tauri 1 and tauri 2 codebase, but I don't think that's a great solution, or even a good solution

@ahqsoftwares
Copy link
Contributor

The long term solution that tauri is working to achieve is to ditch webkit altogether for verso aka servo

@ahqsoftwares
Copy link
Contributor

Tar getting modern distro does not seem to be a bad choice either, but if you consider the fact that centos has no release for libwebkit2gtk-4.1 is a concern for now

@ahqsoftwares
Copy link
Contributor

Also, its possible to install the older libwebki2gtk-4.0 but it conflicts with libwebkit2gtk-4.1 for some reason which is beyond my windows brain to comprehend

@leessmin
Copy link

I'll add that instead of installing webkit2gtk in arch linux, you installed webkit2gtk-4.1, and if you installed webkit2gtk, you'll get the same error

@Nobody9512

This comment was marked as resolved.

@ahqsoftwares
Copy link
Contributor

Error in run tauri app on ubuntu 22.04. How to run tauri? image

That's actually outside the scope of this issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
platform: Linux priority: 1 high status: needs triage This issue needs to triage, applied to new issues type: bug
Projects
None yet
Development

No branches or pull requests