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

ERROR: open: permission denied (EACCES) #16

Open
jlapeyre opened this issue Feb 11, 2018 · 11 comments · May be fixed by #742
Open

ERROR: open: permission denied (EACCES) #16

jlapeyre opened this issue Feb 11, 2018 · 11 comments · May be fixed by #742

Comments

@jlapeyre
Copy link

I installed Julia in /usr/local, so the following fails.

PackageCompiler.compile_package("TrivialPackage", force = false, reuse = true)

Julia Version 0.6.2
Linux (x86_64-linux-gnu)

@SimonDanisch
Copy link
Collaborator

I think this should be resolved! Please reopen if not!

@x-ji
Copy link

x-ji commented Sep 18, 2018

Still happens in my case if I pass in force = true. Guess users are not supposed to try to replace the system image? What if I want to compile a package used system-wide such as LanguageServer. Should I just compile the package as the root user (not sure if that works though).

@OliverEvans96
Copy link
Contributor

OliverEvans96 commented Apr 14, 2020

I'm experiencing the same issue with Julia 1.3.0 when running this example in the repo docs - any advice?

oliver@oliver-x1c7-arch:~/local/src % git clone git@github.com:JuliaLang/PackageCompiler.jl.git
Cloning into 'PackageCompiler.jl'...
remote: Enumerating objects: 237, done.
remote: Counting objects: 100% (237/237), done.
remote: Compressing objects: 100% (101/101), done.
remote: Total 4035 (delta 92), reused 181 (delta 57), pack-reused 3798
Receiving objects: 100% (4035/4035), 1.04 MiB | 9.92 MiB/s, done.
Resolving deltas: 100% (2177/2177), done.
oliver@oliver-x1c7-arch:~/local/src % cd PackageCompiler.jl/examples 
oliver@oliver-x1c7-arch:~/local/src/PackageCompiler.jl/examples (master=) % julia -q --project
julia> VERSION
v"1.3.0"

julia> using PackageCompiler
[ Info: Precompiling PackageCompiler [9b87118b-4619-50d2-8e1e-99f35a4d4d9d]

julia> create_app("MyApp", "MyAppCompiled")
ERROR: IOError: open: permission denied (EACCES)
Stacktrace:
 [1] #cp at ./none:0 [inlined]
 [2] bundle_julia_libraries(::String) at /home/oliver/local/src/PackageCompiler.jl/src/PackageCompiler.jl:678
 [3] #create_app#6(::Nothing, ::Array{String,1}, ::Array{String,1}, ::Bool, ::Bool, ::Bool, ::Bool, ::String, ::typeof(create_app), ::String, ::String) at /home/oliver/local/src/PackageCompiler.jl/src/PackageCompiler.jl:614
 [4] create_app(::String, ::String) at /home/oliver/local/src/PackageCompiler.jl/src/PackageCompiler.jl:587
 [5] top-level scope at REPL[2]:1

@OliverEvans96
Copy link
Contributor

Investigating a bit more, it seems that [2] in the stack trace is at /home/oliver/local/src/PackageCompiler.jl/src/PackageCompiler.jl:678 is
cp(julia_libdir(), app_libdir; force=true).

Putting a @show just before that, I get julia_libdir() = "/usr/lib". Is the desired behavior really to copy my entire /usr/lib into this app in order to compile it? Seems a bit overkill ;)

@OliverEvans96
Copy link
Contributor

(@SimonDanisch - I hope you don't mind reopening the issue)

@OliverEvans96
Copy link
Contributor

I now see this big warning in the docs that you should use binaries downloaded from the julia website. Presumably, it was previously trying to copy my whole /usr/lib because that's where libjulia was installed by my package manager (Arch linux/pacman).

It succeeded without any errors after removing my system-install and downloading a fresh v1.4.0 from the julia website. Not sure if there's something actionable here, or if this issue should just remain closed.

Thanks,
Oliver

@feanor12
Copy link

Even the official binaries do not help if they are placed in /usr/lib. This happens when julia-bin is used on Arch. I think juliaup should resolve this.

@simonbyrne simonbyrne reopened this Oct 12, 2022
@simonbyrne
Copy link
Collaborator

The offending line is the cp in:

function bundle_julia_libraries(dest_dir)
app_libdir = joinpath(dest_dir, Sys.isunix() ? "lib" : "bin")
mkpath(app_libdir)
cp(julia_libdir(), app_libdir; force=true)
# We do not want to bundle the sysimg
default_sysimg_name = "sys." * Libdl.dlext
rm(joinpath(app_libdir, "julia", default_sysimg_name); force=true)

when julia_libdir() == "/usr/lib".

Can we just copy libjulia.* and the contents of the julia subdirectory?

@simonbyrne
Copy link
Collaborator

@feanor12 do you have a /usr/lib/julia directory? If so, what is in it?

@feanor12
Copy link

If I install julia-bin I have a /usr/lib/julia directory.

Files in /usr/lib/julia
$ pacman -Ql julia-bin | grep /usr/lib/julia
julia-bin /usr/lib/julia/
julia-bin /usr/lib/julia/libLLVM-13jl.so
julia-bin /usr/lib/julia/libLLVM.so
julia-bin /usr/lib/julia/libamd.so
julia-bin /usr/lib/julia/libamd.so.2
julia-bin /usr/lib/julia/libamd.so.2.4.6
julia-bin /usr/lib/julia/libatomic.so
julia-bin /usr/lib/julia/libatomic.so.1
julia-bin /usr/lib/julia/libatomic.so.1.2.0
julia-bin /usr/lib/julia/libblastrampoline.so
julia-bin /usr/lib/julia/libblastrampoline.so.5
julia-bin /usr/lib/julia/libblastrampoline.so.5.0.2
julia-bin /usr/lib/julia/libbtf.so
julia-bin /usr/lib/julia/libbtf.so.1
julia-bin /usr/lib/julia/libbtf.so.1.2.6
julia-bin /usr/lib/julia/libcamd.so
julia-bin /usr/lib/julia/libcamd.so.2
julia-bin /usr/lib/julia/libcamd.so.2.4.6
julia-bin /usr/lib/julia/libccalltest.so
julia-bin /usr/lib/julia/libccalltest.so.debug
julia-bin /usr/lib/julia/libccolamd.so
julia-bin /usr/lib/julia/libccolamd.so.2
julia-bin /usr/lib/julia/libccolamd.so.2.9.6
julia-bin /usr/lib/julia/libcholmod.so
julia-bin /usr/lib/julia/libcholmod.so.3
julia-bin /usr/lib/julia/libcholmod.so.3.0.14
julia-bin /usr/lib/julia/libcolamd.so
julia-bin /usr/lib/julia/libcolamd.so.2
julia-bin /usr/lib/julia/libcolamd.so.2.9.6
julia-bin /usr/lib/julia/libcurl.so
julia-bin /usr/lib/julia/libcurl.so.4
julia-bin /usr/lib/julia/libcurl.so.4.8.0
julia-bin /usr/lib/julia/libdSFMT.so
julia-bin /usr/lib/julia/libgcc_s.so.1
julia-bin /usr/lib/julia/libgfortran.so
julia-bin /usr/lib/julia/libgfortran.so.5
julia-bin /usr/lib/julia/libgfortran.so.5.0.0
julia-bin /usr/lib/julia/libgit2.so
julia-bin /usr/lib/julia/libgit2.so.1.3
julia-bin /usr/lib/julia/libgit2.so.1.3.0
julia-bin /usr/lib/julia/libgmp.so
julia-bin /usr/lib/julia/libgmp.so.10
julia-bin /usr/lib/julia/libgmp.so.10.4.1
julia-bin /usr/lib/julia/libgmpxx.so
julia-bin /usr/lib/julia/libgmpxx.so.4
julia-bin /usr/lib/julia/libgmpxx.so.4.6.1
julia-bin /usr/lib/julia/libgomp.so
julia-bin /usr/lib/julia/libgomp.so.1
julia-bin /usr/lib/julia/libgomp.so.1.0.0
julia-bin /usr/lib/julia/libjulia-codegen.so
julia-bin /usr/lib/julia/libjulia-codegen.so.1
julia-bin /usr/lib/julia/libjulia-codegen.so.1.8
julia-bin /usr/lib/julia/libjulia-internal.so
julia-bin /usr/lib/julia/libjulia-internal.so.1
julia-bin /usr/lib/julia/libjulia-internal.so.1.8
julia-bin /usr/lib/julia/libklu.so
julia-bin /usr/lib/julia/libklu.so.1
julia-bin /usr/lib/julia/libklu.so.1.3.8
julia-bin /usr/lib/julia/libldl.so
julia-bin /usr/lib/julia/libldl.so.2
julia-bin /usr/lib/julia/libldl.so.2.2.6
julia-bin /usr/lib/julia/libllvmcalltest.so
julia-bin /usr/lib/julia/libmbedcrypto.so
julia-bin /usr/lib/julia/libmbedcrypto.so.2.28.0
julia-bin /usr/lib/julia/libmbedcrypto.so.7
julia-bin /usr/lib/julia/libmbedtls.so
julia-bin /usr/lib/julia/libmbedtls.so.14
julia-bin /usr/lib/julia/libmbedtls.so.2.28.0
julia-bin /usr/lib/julia/libmbedx509.so
julia-bin /usr/lib/julia/libmbedx509.so.1
julia-bin /usr/lib/julia/libmbedx509.so.2.28.0
julia-bin /usr/lib/julia/libmpfr.so
julia-bin /usr/lib/julia/libmpfr.so.6
julia-bin /usr/lib/julia/libmpfr.so.6.1.0
julia-bin /usr/lib/julia/libnghttp2.so
julia-bin /usr/lib/julia/libnghttp2.so.14
julia-bin /usr/lib/julia/libnghttp2.so.14.22.0
julia-bin /usr/lib/julia/libopenblas64_.0.3.20.so
julia-bin /usr/lib/julia/libopenblas64_.so
julia-bin /usr/lib/julia/libopenblas64_.so.0
julia-bin /usr/lib/julia/libopenlibm.so
julia-bin /usr/lib/julia/libopenlibm.so.4
julia-bin /usr/lib/julia/libopenlibm.so.4.0
julia-bin /usr/lib/julia/libpcre2-8.so
julia-bin /usr/lib/julia/libpcre2-8.so.0
julia-bin /usr/lib/julia/libpcre2-8.so.0.11.0
julia-bin /usr/lib/julia/libquadmath.so
julia-bin /usr/lib/julia/libquadmath.so.0
julia-bin /usr/lib/julia/libquadmath.so.0.0.0
julia-bin /usr/lib/julia/librbio.so
julia-bin /usr/lib/julia/librbio.so.2
julia-bin /usr/lib/julia/librbio.so.2.2.6
julia-bin /usr/lib/julia/libspqr.so
julia-bin /usr/lib/julia/libspqr.so.2
julia-bin /usr/lib/julia/libspqr.so.2.0.9
julia-bin /usr/lib/julia/libssh2.so
julia-bin /usr/lib/julia/libssh2.so.1
julia-bin /usr/lib/julia/libssh2.so.1.0.1
julia-bin /usr/lib/julia/libssp.so
julia-bin /usr/lib/julia/libssp.so.0
julia-bin /usr/lib/julia/libssp.so.0.0.0
julia-bin /usr/lib/julia/libstdc++.so
julia-bin /usr/lib/julia/libstdc++.so.6
julia-bin /usr/lib/julia/libstdc++.so.6.0.29
julia-bin /usr/lib/julia/libsuitesparseconfig.so
julia-bin /usr/lib/julia/libsuitesparseconfig.so.5
julia-bin /usr/lib/julia/libsuitesparseconfig.so.5.10.1
julia-bin /usr/lib/julia/libumfpack.so
julia-bin /usr/lib/julia/libumfpack.so.5
julia-bin /usr/lib/julia/libumfpack.so.5.7.9
julia-bin /usr/lib/julia/libunwind.so
julia-bin /usr/lib/julia/libunwind.so.8
julia-bin /usr/lib/julia/libunwind.so.8.0.1
julia-bin /usr/lib/julia/libuv.so
julia-bin /usr/lib/julia/libuv.so.2
julia-bin /usr/lib/julia/libuv.so.2.0.0
julia-bin /usr/lib/julia/libz.so
julia-bin /usr/lib/julia/libz.so.1
julia-bin /usr/lib/julia/libz.so.1.2.12
julia-bin /usr/lib/julia/sys.so
Files in /usr/lib
╰─$ pacman -Ql julia-bin | grep /usr/lib/ | grep -v /usr/lib/julia
julia-bin /usr/lib/
julia-bin /usr/lib/libjulia.so
julia-bin /usr/lib/libjulia.so.1
julia-bin /usr/lib/libjulia.so.1.8

@alexriss
Copy link

alexriss commented Nov 19, 2022

I get similar problems under Manjaro Linux 22, Julia 1.8.2 installed via the integrated package manager.

IOError: open("/usr/lib/cups/backend/cups-brf", 0, 0): permission denied (EACCES)

The julia_libdir() function returns /usr/lib on my system, and then the script tries to copy all files from there - and (fortunately) fails due to some read access problems for certain files.

julia> PackageCompiler.julia_libdir()
"/usr/lib"

julia> Libdl.dlpath("libjulia")
"/usr/bin/../lib/libjulia.so.1"

julia> dirname(abspath(Libdl.dlpath("libjulia")))
"/usr/lib"

simonbyrne added a commit that referenced this issue Nov 21, 2022
If `julia_libdir() == "/usr/lib"` then it will attempt to bundle the whole directory into
the app. Fixes #16.
@simonbyrne simonbyrne linked a pull request Nov 21, 2022 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants