【发布时间】:2018-11-05 14:53:50
【问题描述】:
在尝试为某些 Julia 包运行 Pkg.add(...) 时,我们遇到了以下错误:
ERROR: Build process failed.
build!(::Array{String,1}, ::Set{Any}, ::String) at ./pkg/entry.jl:629
build!(::Array{String,1}, ::Set{Any}, ::String) at ./pkg/entry.jl:626 (repeats 2 times)
build!(::Array{String,1}, ::Dict{Any,Any}, ::Set{Any}) at ./pkg/entry.jl:637
build(::Array{String,1}) at ./pkg/entry.jl:652
resolve(::Dict{String,Base.Pkg.Types.VersionSet}, ::Dict{String,Dict{VersionNumber,Base.Pkg.Types.Available}}, ::Dict{String,Tuple{VersionNumber,Bool}}, ::Dict{String,Base.Pkg.Types.Fixed}, ::Dict{String,VersionNumber}, ::Set{String}) at ./pkg/entry.jl:572
resolve(::Dict{String,Base.Pkg.Types.VersionSet}, ::Dict{String,Dict{VersionNumber,Base.Pkg.Types.Available}}, ::Dict{String,Tuple{VersionNumber,Bool}}, ::Dict{String,Base.Pkg.Types.Fixed}) at ./pkg/entry.jl:479
edit(::Function, ::String, ::Base.Pkg.Types.VersionSet, ::Vararg{Base.Pkg.Types.VersionSet,N} where N) at ./pkg/entry.jl:30
(::Base.Pkg.Entry.##1#3{String,Base.Pkg.Types.VersionSet})() at ./task.jl:335
Stacktrace:
[1] sync_end() at ./task.jl:287
[2] macro expansion at ./task.jl:303 [inlined]
[3] add(::String, ::Base.Pkg.Types.VersionSet) at ./pkg/entry.jl:51
[4] (::Base.Pkg.Dir.##4#7{Array{Any,1},Base.Pkg.Entry.#add,Tuple{String}})() at ./pkg/dir.jl:36
[5] cd(::Base.Pkg.Dir.##4#7{Array{Any,1},Base.Pkg.Entry.#add,Tuple{String}}, ::String) at ./file.jl:70
[6] #cd#1(::Array{Any,1}, ::Function, ::Function, ::String, ::Vararg{String,N} where N) at ./pkg/dir.jl:36
[7] add(::String) at ./pkg/pkg.jl:117
有趣的是,如果我们尝试为同一个包重新运行 Pkg.add(...),它会起作用! 例如,运行 Pkg.add("DataArrays") 首先失败并出现上述错误,但是在重新运行相同的命令后,它已正确安装。
底层 C/C++ 库是否可能会导致问题?
环境:
Docker 与 Debian GNU/Linux 8.6 (jessie) Julia 0.6.3
【问题讨论】:
-
你确定它真的适用于第二个
Pkg.add吗?可能是它只是不尝试重建。例如Pkg.test("DataArrays")是否通过? -
第二次确实有效。你说“不尝试重建”是什么意思?