PackageCompiler.jl icon indicating copy to clipboard operation
PackageCompiler.jl copied to clipboard

ERROR: open: permission denied (EACCES)

Open jlapeyre opened this issue 7 years ago • 11 comments

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)

jlapeyre avatar Feb 11 '18 13:02 jlapeyre

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

SimonDanisch avatar Mar 06 '18 09:03 SimonDanisch

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).

x-ji avatar Sep 18 '18 22:09 x-ji

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 [email protected]: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 avatar Apr 14 '20 21:04 OliverEvans96

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 avatar Apr 14 '20 21:04 OliverEvans96

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

OliverEvans96 avatar Apr 14 '20 21:04 OliverEvans96

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

OliverEvans96 avatar Apr 14 '20 23:04 OliverEvans96

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.

feanor12 avatar Oct 12 '22 19:10 feanor12

The offending line is the cp in: https://github.com/JuliaLang/PackageCompiler.jl/blob/c0e68553c7a74bd580ba7238816ab7c4b7ce4b9c/src/PackageCompiler.jl#L1021-L1027 when julia_libdir() == "/usr/lib".

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

simonbyrne avatar Oct 12 '22 20:10 simonbyrne

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

simonbyrne avatar Oct 12 '22 20:10 simonbyrne

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

feanor12 avatar Oct 12 '22 20:10 feanor12

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"

alexriss avatar Nov 19 '22 10:11 alexriss