Cannot add ImageView package

Hello

I get a ton of warning while trying to install ImageView on Ubuntu 24.10 with Julia 1.11.3. At the end ImageView is not installed.

julia> Pkg.add("ImageView")
   Resolving package versions...
  No Changes to `~/.julia/environments/v1.11/Project.toml`
  No Changes to `~/.julia/environments/v1.11/Manifest.toml`
Precompiling project...
  ✗ OpenCV
  ✗ ImageView
  0 dependencies successfully precompiled in 3 seconds. 341 already precompiled.
  2 dependencies errored.
  For a report of the errors see `julia> err`. To retry use `pkg> precompile`

julia> err
PkgPrecompileError: The following 2 direct dependencies failed to precompile:

OpenCV 

Failed to precompile OpenCV [f878e3a2-a245-4720-8660-60795d644f2a] to "/home/denys/.julia/compiled/v1.11/OpenCV/jl_3egTNv".
ERROR: LoadError: InitError: could not load library "/home/denys/.julia/artifacts/55c9720fa4f3a61012a2311bfcf0ba4e66405dea/lib/libopencv_julia.so"
/home/denys/.julia/artifacts/55c9720fa4f3a61012a2311bfcf0ba4e66405dea/lib/libopencv_julia.so: undefined symbol: small_typeof, version JL_LIBJULIA_1.11
Stacktrace:
  [1] dlopen(s::String, flags::UInt32; throw_error::Bool)
    @ Base.Libc.Libdl ./libdl.jl:120
  [2] dlopen(s::String, flags::UInt32)
    @ Base.Libc.Libdl ./libdl.jl:119
  [3] macro expansion
    @ ~/.julia/packages/JLLWrappers/GfYNv/src/products/library_generators.jl:63 [inlined]
  [4] __init__()
    @ OpenCV_jll ~/.julia/packages/OpenCV_jll/Hfsh1/src/wrappers/x86_64-linux-gnu-cxx11-julia_version+1.11.0.jl:78
  [5] run_module_init(mod::Module, i::Int64)
    @ Base ./loading.jl:1378
  [6] register_restored_modules(sv::Core.SimpleVector, pkg::Base.PkgId, path::String)
    @ Base ./loading.jl:1366
  [7] _include_from_serialized(pkg::Base.PkgId, path::String, ocachepath::String, depmods::Vector{Any}, ignore_native::Nothing; register::Bool)
    @ Base ./loading.jl:1254
  [8] _include_from_serialized (repeats 2 times)
    @ ./loading.jl:1210 [inlined]
  [9] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt128, stalecheck::Bool; reasons::Dict{String, Int64}, DEPOT_PATH::Vector{String})
    @ Base ./loading.jl:2057
 [10] _require(pkg::Base.PkgId, env::String)
    @ Base ./loading.jl:2527
 [11] __require_prelocked(uuidkey::Base.PkgId, env::String)
    @ Base ./loading.jl:2388
 [12] #invoke_in_world#3
    @ ./essentials.jl:1089 [inlined]
 [13] invoke_in_world
    @ ./essentials.jl:1086 [inlined]
 [14] _require_prelocked(uuidkey::Base.PkgId, env::String)
    @ Base ./loading.jl:2375
 [15] macro expansion
    @ ./loading.jl:2314 [inlined]
 [16] macro expansion
    @ ./lock.jl:273 [inlined]
 [17] __require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2271
 [18] #invoke_in_world#3
    @ ./essentials.jl:1089 [inlined]
 [19] invoke_in_world
    @ ./essentials.jl:1086 [inlined]
 [20] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2260
 [21] include
    @ ./Base.jl:557 [inlined]
 [22] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing)
    @ Base ./loading.jl:2881
 [23] top-level scope
    @ stdin:6
during initialization of module OpenCV_jll
in expression starting at /home/denys/.julia/packages/OpenCV/5LneO/src/OpenCV.jl:1
in expression starting at stdin:6
ImageView 

Failed to precompile ImageView [86fae568-95e7-573e-a6b2-d8a6b900c9ef] to "/home/denys/.julia/compiled/v1.11/ImageView/jl_3mBiMb".
(julia:16259): Gtk-WARNING **: 20:11:19.803: Theme parser error: gtk.css:1954:16-20: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.804: Theme parser error: gtk.css:2148:20-24: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.804: Theme parser error: gtk.css:2243:29-33: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.804: Theme parser error: gtk.css:2244:29-33: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.804: Theme parser error: gtk.css:2252:27-31: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.804: Theme parser error: gtk.css:2253:27-31: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.804: Theme parser error: gtk.css:2734:16-20: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.804: Theme parser error: gtk.css:2737:16-20: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.804: Theme parser error: gtk.css:2757:16-20: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.804: Theme parser error: gtk.css:3462:29-33: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.804: Theme parser error: gtk.css:3464:16-20: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.804: Theme parser error: gtk.css:3510:27-31: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.804: Theme parser error: gtk.css:3512:27-31: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.804: Theme parser error: gtk.css:3514:27-31: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.805: Theme parser error: gtk.css:3517:27-31: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.805: Theme parser error: gtk.css:3519:27-31: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.805: Theme parser error: gtk.css:4281:28-32: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.805: Theme parser error: gtk.css:4285:27-31: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.805: Theme parser error: gtk.css:4287:29-33: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.805: Theme parser error: gtk.css:4288:29-33: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.805: Theme parser error: gtk.css:4289:43-47: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.805: Theme parser error: gtk.css:4291:44-48: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.805: Theme parser error: gtk.css:4292:44-48: Expected a number

(julia:16259): Gtk-WARNING **: 20:11:19.805: Theme parser error: gtk.css:4293:44-48: Expected a number
/home/denys/.julia/juliaup/julia-1.11.3+0.x64.linux.gnu/bin/julia: symbol lookup error: /lib/x86_64-linux-gnu/libEGL_mesa.so.0: undefined symbol: wl_display_create_queue_with_name

Any idea how to fix this?

Thanks for your help.

Can you try installing in a fresh environment? Use the following commands:

julia> using Pkg

julia> Pkg.activate(temp=true)
  Activating new project at `/var/folders/57/1z4jgn5133lbbbrnnt4vf_zw0000gn/T/jl_aQj77c`

julia> Pkg.add("ImageView")
   Resolving package versions...
[...]

Hello

I got the same result:

julia> import Pkg

julia> Pkg.activate(temp=true)
  Activating new project at `/tmp/jl_b8HAtg`

julia> Pkg.add("ImageView")
   Resolving package versions...
    Updating `/tmp/jl_b8HAtg/Project.toml`
  [86fae568] + ImageView v0.12.6
    Updating `/tmp/jl_b8HAtg/Manifest.toml`
  [66dad0bd] + AliasTables v1.1.3
  [...] 
        Info Packages marked with ⌃ and ⌅ have new versions available. Those with ⌃ may be upgradable, but those with ⌅ are restricted by compatibility constraints from upgrading. To see why use `status --outdated -m`
Precompiling project...
  ✗ ImageView
  0 dependencies successfully precompiled in 3 seconds. 142 already precompiled.
  1 dependency errored.
  For a report of the errors see `julia> err`. To retry use `pkg> precompile`

julia> err
PkgPrecompileError: The following 1 direct dependency failed to precompile:

ImageView 

Failed to precompile ImageView [86fae568-95e7-573e-a6b2-d8a6b900c9ef] to "/home/denys/.julia/compiled/v1.11/ImageView/jl_nhncHM".
(julia:5352): Gtk-WARNING **: 13:42:55.346: Theme parser error: gtk.css:1954:16-20: Expected a number

(julia:5352): Gtk-WARNING **: 13:42:55.346: Theme parser error: gtk.css:2148:20-24: Expected a number

(julia:5352): Gtk-WARNING **: 13:42:55.346: Theme parser error: gtk.css:2243:29-33: Expected a number

(julia:5352): Gtk-WARNING **: 13:42:55.346: Theme parser error: gtk.css:2244:29-33: Expected a number

(julia:5352): Gtk-WARNING **: 13:42:55.346: Theme parser error: gtk.css:2252:27-31: Expected a number

(julia:5352): Gtk-WARNING **: 13:42:55.346: Theme parser error: gtk.css:2253:27-31: Expected a number

[...]
/home/denys/.julia/juliaup/julia-1.11.3+0.x64.linux.gnu/bin/julia: symbol lookup error: /lib/x86_64-linux-gnu/libEGL_mesa.so.0: undefined symbol: wl_display_create_queue_with_nam

Would that help if installing in the base environment fails, considering packages there are always loaded?
@dgagnon Note that for such reasons it’s typically discouraged to install many packages in the base environment. Quoting the Pkg.jl documentation:

Using only the default environment with a huge number of packages in it is a common beginners mistake in Julia.

Do you have OpenCV.jl installed in your base environment (v1.11)? As far as I can tell ImageView.jl does not depend on it, so it’s a bit weird to see it pop up here. If it is installed (and you don’t need it), try removing it and adding ImageView again.

Hello @eldee

I try to load only the packages I need. As you can see a fresh environment with Pkg.activate(temp=true) did not help.

I don’t use OpenCV, but I was looking for an alternative heatmap() was suggested somewhere as an alternative to imshow(). However I use Images because I need RGB{N0f16} in my code.

So I tried with a brand new directory:

  • I created a new directory, cd there, started Julia and tried again. Same error.
  • Then I tried Pkg.rm("OpenCV") to make sure. I was indeed removed successfully. And tried again. No mention of OpenCV anymore (good), but still the same error.
  • I tried Pkg.rm("ImageView") and start to add it again. Same error.

I tried on my Windows laptop. The problem does not exist. however I found another problem but that will be for another post.
Reading TIFF files is also catastrophic but that will but for a third post.

The (potential) problem is that this is not really a fresh environment, in the sense that it is still built on top of the default environment, which is always loaded (in LOAD_PATH). (I suppose you could try popat!(LOAD_PATH, 2) to remove "@v#.#", but I have no idea if that might actually be useful.)

I’ve checked on a pc with Ubuntu 22.04.4 and Julia 1.10.5 and encountered no issues adding ImageView.jl there. So it seems more likely to be a problem with your specific setup than Ubuntu in general.

Not sure I understand. Between every test I did today I restarted my computer. So memory was fresh. Do you mean junk files that need cleaning somewhere?

You most probably right. I simply need to know what’s wrong with my setup.
So, what’s left as a solution? Uninstall Julia and remove all files that seem related to it? I’ll try that tonight, after work.

Well, I guess my comment boils down to: what’s the output of (@v1.11) pkg> st? All those packages you have installed here will also be available in any other environment, including temporary ones (unless you start messing with LOAD_PATH etc.), because of environment stacking. Potentially you have some package which somehow interferes with ImageView.jl.

As a test you could try installing Julia 1.10 via juliaup (in a (bash) terminal: juliaup add 1.10). Launching it with julia +1.10 you should have a clean base environment (@v1.10) for which I expect ] add ImageView to work. (I’m assuming you don’t want to keep working in 1.10, so don’t mind polluting the default environment here.) It’s not really a full solution of course, but if successful, it would show that the problem is most likely due to clashing packages.

I’d imagine that will work, but obviously comes with the downside that you have to reinstall all packages you need. But then you can directly put them into an appropriate environment :slight_smile: .

Packages are never automatically loaded. What is true is that the base environment is always in the load path, so you can load packages from there. However, package version resolution and precompilation only takes into account the packages in the active environment, so installing in a fresh environment can indeed help in some cases where installation/precompilation in the base environment fails.

1 Like

@dgagnon I can see you installed julia using juliaup. That’s great! But how did you install juliaup?

To be honest. I am not sure juliaup ever worked. I installed it after julia… And I don’t recall how.
Anyway, I removed completely julia and all directories related to it and juliaup. I reinstalled julia it at version 1.10.8 (just in case I was bleeding edge with 1.11.x).
I installed only 1 package: ImageView. It of course trigered a lot of stuff to install but at the end I got the same result.
I guess the problem is with Gtk. I have a lot of stuff called Gtk4 on my computer but I don’t know if this is related to julia or it was there before with Ubuntu.

How did you install julia this time?

I gizmo called “App Center”.

I am new on Linux. I used to work with Unix (SunOS, IRIX, Solaris and AIX) in my younger years. So, I don’t mind doing find, grep, sed, editing /etc/fstab that kind of stuff. But the multiple conflicting package managers (apt, App Center, snap, etc) are just confusing me.

I guess I have pretty much excluded julia as the source of my problem. Now I have to understand how Gtk works. The problem comes from a .css file missing something. I don’t even know if this stuff came with the Ubuntu distro or I installed it with the julia packages.

The general advice is to never install julia using any kind of system package manager. It’s very likely that this is your problem. Try removing julia completely and then installing it using juliaup by running the following command:

curl -fsSL https://install.julialang.org | sh

(Disclaimer: you should always be skeptical of copying a command from the internet and pasting it into your shell. However, if you want a “one-click” solution, this is it, as you can see for yourself here: Download Julia and here: GitHub - JuliaLang/juliaup: Julia installer and version multiplexer)

Once that finishes, you should be able to start julia by simply typing julia into the shell. Then you can try installing ImageView and see if anything is different.

This is elaborated on the download page (Download Julia):

Please do not use the version of “Julia” shipped by Linux or BSD package managers

Many Linux/BSD/Unix package managers ship broken and/or significantly out of date versions of Julia. Please use juliaup or download the official binaries instead.

1 Like

Ok. I did
curl -fsSL https://install.julialang.org | sh
I got a new julia. And guess what? Same error while trying to install ImageView.

I tried changing the theme of Gtk to revert back to Default. It did not improve things either.
I’m on Wayland, not X11. Can that be the reason? X11 was fashionable when I was twenty-something. Now, at 63 I read that it is terrible and poorly written and other nice words that I won’t copy here.

Just as a final confirmation it would be good to check the output of which julia to confirm that you’re indeed using the julia executable installed by juliaup.

If this is truly related to system libraries, I’m afraid I won’t be able to help you. I thought julia was supposed to work quite independently of shared libraries when you use the official version. Hopefully someone more knowledgeable can chime in—perhaps @giordano?

Looking more closely at your original post, the final error,

symbol lookup error: /lib/x86_64-linux-gnu/libEGL_mesa.so.0: undefined symbol: wl_display_create_queue_with_name

does look like this could indeed be a wayland issue, given the wl_ prefix on the symbol that’s not found.

Haven’t followed much, but what’s the output of

ENV["LD_LIBRARY_PATH"]

inside Julia?

julia> ENV["LD_LIBRARY_PATH"]
ERROR: KeyError: key "LD_LIBRARY_PATH" not found
Stacktrace:
 [1] (::Base.var"#807#808")(k::String)
   @ Base ./env.jl:164
 [2] access_env
   @ ./env.jl:60 [inlined]
 [3] getindex(::Base.EnvDict, k::String)
   @ Base ./env.jl:164
 [4] top-level scope
   @ REPL[1]:1