I’m trying to build Julia to be used by a group of developers. I’m work with v1.0 and have a Linux group associated with the developers, so I would like each member of the group to be able to use Julia and install packages (it is a small group and we trust each other).
Steps I’ve taken:
- Unzipped Julia in a shared folder
- Used $JULIA_DEPOT_PATH to point to a shared folder so Julia doesn’t try an install packages in ~/.julia. This seems to be working
- installed a few packages including CMake
- chgrp -R (now all of Julia should be part of the group)
- chmod -R g=u (now group permissions should mirror user)
- chmod -R g+s (now files made in sub-directories should inherit the group property)
- run Julia and execute “status” in the package manager.
I’ve made sure that the other users have set up their environment (exporting the $JULIA_DEPOT_PATH variable) exactly the same as me. Step 7 works fine for me, but other group members get the following error:
(v1.0) pkg> status
ERROR: IOError: futime: operation not permitted (EPERM)
Stacktrace:
[1] uv_error at ./libuv.jl:85 [inlined]
[2] futime at ./filesystem.jl:143 [inlined]
[3] touch(::String) at ./file.jl:407
[4] write_env_usage(::String) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/Pkg/src/Types.jl:424
[5] Pkg.Types.EnvCache(::Nothing) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/Pkg/src/Types.jl:306
[6] Type at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/Pkg/src/Types.jl:285 [inlined]
[7] Type at ./none:0 [inlined]
[8] Context!(::Array{Pair{Symbol,Any},1}) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/Pkg/src/Types.jl:367
[9] Context! at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/Pkg/src/REPLMode.jl:497 [inlined]
[10] do_status!(::Dict{Symbol,Any}, ::Array{String,1}, ::Dict{Symbol,Any}) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/Pkg/src/REPLMode.jl:569
[11] #invokelatest#1(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::Function, ::Any, ::Any, ::Vararg{Any,N} where N) at ./essentials.jl:686
[12] invokelatest(::Any, ::Any, ::Vararg{Any,N} where N) at ./essentials.jl:685
[13] do_cmd!(::Pkg.REPLMode.PkgCommand, ::REPL.LineEditREPL) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/Pkg/src/REPLMode.jl:542
[14] #do_cmd#30(::Bool, ::Function, ::REPL.LineEditREPL, ::String) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/Pkg/src/REPLMode.jl:507
[15] do_cmd at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/Pkg/src/REPLMode.jl:503 [inlined]
[16] (::getfield(Pkg.REPLMode, Symbol("##41#44")){REPL.LineEditREPL,REPL.LineEdit.Prompt})(::REPL.LineEdit.MIState, ::Base.GenericIOBuffer{Array{UInt8,1}}, ::Bool) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/Pkg/src/REPLMode.jl:842
[17] #invokelatest#1 at ./essentials.jl:686 [inlined]
[18] invokelatest at ./essentials.jl:685 [inlined]
[19] run_interface(::REPL.Terminals.TextTerminal, ::REPL.LineEdit.ModalInterface, ::REPL.LineEdit.MIState) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/REPL/src/LineEdit.jl:2261
[20] run_frontend(::REPL.LineEditREPL, ::REPL.REPLBackendRef) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/REPL/src/REPL.jl:1029
[21] run_repl(::REPL.AbstractREPL, ::Any) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/REPL/src/REPL.jl:191
[22] (::getfield(Base, Symbol("##720#722")){Bool,Bool,Bool,Bool})(::Module) at ./logging.jl:311
[23] #invokelatest#1 at ./essentials.jl:686 [inlined]
[24] invokelatest at ./essentials.jl:685 [inlined]
[25] macro expansion at ./logging.jl:308 [inlined]
[26] run_main_repl(::Bool, ::Bool, ::Bool, ::Bool, ::Bool) at ./client.jl:330
[27] exec_options(::Base.JLOptions) at ./client.jl:242
[28] _start() at ./client.jl:421
I can’t really figure out what file is causing the error. If anybody has any advice I would greatly appreciate it.