# Pkg3 and standard libraries

**URL:** <https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287>\
**Category:** Internals & Design\
**Created:** [February 23, 2018, 8:52pm UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287 "2018-02-23T20:52:44Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![dmbates](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dmbates/32/44_2.png) [@dmbates](https://discourse.julialang.org/u/dmbates)\
**Post date:** [February 23, 2018, 8:52pm UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/1 "2018-02-23T20:52:45Z")

</div>

Encouraged by a commit message on the main repository I started using Pkg3 on my locally compiled version of master. I am working on revisions to the [`PDMats` package](https://github.com/JuliaStats/PDMats.jl) for Julia v0.7 so I begin with

```julia
using LinearAlgebra

```

which is fine in the REPL but results in

```julia
julia> using PDMats
[ Info: Precompiling module PDMats
ERROR: LoadError: ArgumentError: Module LinearAlgebra not found in current path.
Run `Pkg.add("LinearAlgebra")` to install the LinearAlgebra package.

```

when precompiling the package. Also Pkg3 doesn’t seem to like dependencies on standard library names

```julia
pkg> up                   
[ Info: Updating registry at /home/bates/.julia/registries/Uncurated                                     
[ Info: Resolving package versions                  
ERROR: The following package names could not be resolved:                                                
 * LinearAlgebra (not found in project or manifest) 
Please specify by known `name=uuid`.                

```

Can someone help me return to the path of righteousness?

---

<div class="post-metadata">

**Author:** ![ExpandingMan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/expandingman/32/866_2.png) [@ExpandingMan](https://discourse.julialang.org/u/ExpandingMan)\
**Post date:** [February 23, 2018, 8:59pm UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/2 "2018-02-23T20:59:26Z")

</div>

Sorry, this is a bit off topic, but I thought Pkg3 was the default package manager for 0.7. Is that not the case, and if not, will it be before a release candidate?

At the risk of overstating things, it seems rather hugely important for the growth of the language as Pkg2 is really rather rough.

---

<div class="post-metadata">

**Author:** ![dmbates](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dmbates/32/44_2.png) [@dmbates](https://discourse.julialang.org/u/dmbates)\
**Post date:** [February 23, 2018, 9:03pm UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/3 "2018-02-23T21:03:23Z")

</div>

Currently both `Pkg` and `Pkg3` are in `stdlib`. I believe that `Pkg3` is dormant until the user does something that results in certain directories being created under `~/.julia`.

---

<div class="post-metadata">

**Author:** ![ExpandingMan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/expandingman/32/866_2.png) [@ExpandingMan](https://discourse.julialang.org/u/ExpandingMan)\
**Post date:** [February 23, 2018, 9:06pm UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/4 "2018-02-23T21:06:58Z")

</div>

So does that mean that `Pkg` is aliasing `Pkg3` somehow? (I had assumed it would go by the name `Pkg` and there would be no `Pkg3` module)

I frequent these forums and I see quite a lot of newcomers and experienced Julia users alike having some problem or another because their packages did not update correctly. In particular, a lot of people seem to still be on the old versions of DataFrames which I’m sure is rather frustrating for the DataFrames devs. This is why getting things on Pkg3 seems hugely important to me: stuff seems to routinely break that should work just fine because the package manager is wonky.

(sorry I feel like I’m derailing your thread, perhaps I should open another with this question?)

---

<div class="post-metadata">

**Author:** ![dmbates](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dmbates/32/44_2.png) [@dmbates](https://discourse.julialang.org/u/dmbates)\
**Post date:** [February 23, 2018, 9:14pm UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/5 "2018-02-23T21:14:57Z")

</div>

I probably jumped the gun here in using Pkg3 in a situation that is not entirely straightforward. I seem to have developed adult-onset attention deficit disorder and am attracted to shiny new objects.

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [February 23, 2018, 10:25pm UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/6 "2018-02-23T22:25:19Z")

</div>

Bad timing – you caught us between changing a bunch of names in the registry and merging the PR that changes the same names on Julia master:

[https://github.com/JuliaLang/julia/pull/26152](https://github.com/JuliaLang/julia/pull/26152)

We will announce on discourse when it’s all settled and it’s time to give Pkg3 a spin.

---

<div class="post-metadata">

**Author:** ![Nosferican](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nosferican/32/9275_2.png) [@Nosferican](https://discourse.julialang.org/u/Nosferican)\
**Post date:** [February 23, 2018, 11:35pm UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/7 "2018-02-23T23:35:56Z")

</div>

Could I be greedy and ask for the announcement to have some updated documentation as well to make it easier to work with?

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [February 23, 2018, 11:41pm UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/8 "2018-02-23T23:41:14Z")

</div>

Sure!

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [February 24, 2018, 2:49am UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/9 "2018-02-24T02:49:00Z")

</div>

Merged now, you can give it another try.

---

<div class="post-metadata">

**Author:** ![dmbates](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dmbates/32/44_2.png) [@dmbates](https://discourse.julialang.org/u/dmbates)\
**Post date:** [February 26, 2018, 4:42pm UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/10 "2018-02-26T16:42:48Z")

</div>

Still no joy, unfortunately.

I compiled

```julia
 Version 0.7.0-DEV.4390 (2018-02-26 07:59 UTC)

```

and working with a fresh `~/.julia` directory used the REPL switch `]` to execute

```julia
status
add PDMats
checkout PDMats --branch=julia7

```

In the Julia REPL

```julia
using LinearAlgebra

```

is fine. If I add that in the `PDMats/src/PDMats.jl` file the precompilation fails as before

```julia
julia> using PDMats
[ Info: Precompiling module PDMats
ERROR: LoadError: ArgumentError: Module LinearAlgebra not found in current path.
Run `Pkg.add("LinearAlgebra")` to install the LinearAlgebra package.
Stacktrace:
 [1] require(::Module, ::Symbol) at ./loading.jl:863
 [2] include at ./boot.jl:295 [inlined]
 [3] include_relative(::Module, ::String) at ./loading.jl:1066
 [4] include(::Module, ::String) at ./sysimg.jl:29
 [5] top-level scope
 [6] eval at ./boot.jl:298 [inlined]
 [7] top-level scope at ./<missing>:3
in expression starting at /home/bates/.julia/dev/PDMats/src/PDMats.jl:6
ERROR: Failed to precompile PDMats to /home/bates/.julia/compiled/v0.7/PDMats/wuzE.ji.
Stacktrace:
 [1] error at ./error.jl:33 [inlined]
 [2] compilecache(::Base.PkgId) at ./loading.jl:1200
 [3] _require(::Base.PkgId) at ./loading.jl:1002
 [4] require(::Base.PkgId) at ./loading.jl:873
 [5] require(::Module, ::Symbol) at ./loading.jl:868

```

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [February 26, 2018, 5:10pm UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/11 "2018-02-26T17:10:02Z")

</div>

What if you do e.g.

```julia
pkg> up --fixed

```

and then try `using PDMats` again.

The technical reason why this works is that you can only load stuff that is in your Manifest.toml and when you added `using LinearAlgebra` without resolving, the Manifest and the package are out of sync. Doing something like `up` should resync them. We have to figure out what the best way to do this will be.

---

<div class="post-metadata">

**Author:** ![dmbates](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dmbates/32/44_2.png) [@dmbates](https://discourse.julialang.org/u/dmbates)\
**Post date:** [February 26, 2018, 5:30pm UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/12 "2018-02-26T17:30:14Z")

</div>

That worked, thanks.

---

<div class="post-metadata">

**Author:** ![dmbates](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dmbates/32/44_2.png) [@dmbates](https://discourse.julialang.org/u/dmbates)\
**Post date:** [February 28, 2018, 8:20pm UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/13 "2018-02-28T20:20:11Z")

</div>

One more question, if I may. I am having trouble with

```julia
pkg> test Rmath
[ Info: Testing Rmath located at /home/bates/.julia/packages/Rmath/dy8D
ERROR: LoadError: LoadError: ArgumentError: Module Libdl not found in current path.
Run `Pkg.add("Libdl")` to install the Libdl package.     
...

```

I am able to test the `SpecialFunctions` package this way. I haven’t been able to decide what is different about `SpecialFunctions` compared to `Rmath` that gets it past the `Libdl` check.

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [February 28, 2018, 8:21pm UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/14 "2018-02-28T20:21:41Z")

</div>

Keep 'em coming (you can also open issues at the Pkg3 repo). I’ll look at this soon.

---

<div class="post-metadata">

**Author:** ![Nosferican](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nosferican/32/9275_2.png) [@Nosferican](https://discourse.julialang.org/u/Nosferican)\
**Post date:** [February 28, 2018, 10:06pm UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/15 "2018-02-28T22:06:59Z")

</div>

```julia
using Libdl

```

You can check it through the master branch under `stdlib`  
[https://github.com/JuliaLang/julia/tree/master/stdlib/Libdl](https://github.com/JuliaLang/julia/tree/master/stdlib/Libdl)  
Or through Compat  
[https://github.com/JuliaLang/Compat.jl/commit/20e454dd62c1c36f9eb39164f9cad5da8ba421a9](https://github.com/JuliaLang/Compat.jl/commit/20e454dd62c1c36f9eb39164f9cad5da8ba421a9)

---

<div class="post-metadata">

**Author:** ![Nosferican](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nosferican/32/9275_2.png) [@Nosferican](https://discourse.julialang.org/u/Nosferican)\
**Post date:** [February 28, 2018, 10:08pm UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/16 "2018-02-28T22:08:42Z")

</div>

If you wanna check out some work I did on PDMAts 0.7 version let me know. I converted all the source code and tests to 0.7 version and had all, but three files passing all tests.

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [March 1, 2018, 8:12am UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/17 "2018-03-01T08:12:40Z")

</div>

There is a problem here that when loading (precompiling) Rmath it doesn’t find Libdl when using Pkg3, which it should.

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [March 1, 2018, 3:29pm UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/18 "2018-03-01T15:29:35Z")

</div>

It turns out that `BinDeps` injects a dependency on `Libdl` into packages that use it. So we need to hack this into the script that generates the [Uncurated package registry](https://github.com/JuliaRegistries/Uncurated) from METADATA. Once that’s done, it will be possible to use packages that use `BinDeps` and actually rely on `Libdl`.

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [March 1, 2018, 4:04pm UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/19 "2018-03-01T16:04:55Z")

</div>

Should work now after a `pkg> up`. Thanks for the report.

---

<div class="post-metadata">

**Author:** ![dmbates](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dmbates/32/44_2.png) [@dmbates](https://discourse.julialang.org/u/dmbates)\
**Post date:** [March 1, 2018, 5:03pm UTC](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287/20 "2018-03-01T17:03:41Z")

</div>

All good now. Thanks again.

[Next page](https://discourse.julialang.org/t/pkg3-and-standard-libraries/9287.md?page=2)
