# ERROR: Unsatisfiable requirements detected and has no known versions!

**URL:** https://discourse.julialang.org/t/error-unsatisfiable-requirements-detected-and-has-no-known-versions/73289
**Category:** Package Management
**Tags:** package
**Created:** [December 18, 2021, 6:16am UTC](https://discourse.julialang.org/t/error-unsatisfiable-requirements-detected-and-has-no-known-versions/73289 "2021-12-18T06:16:39Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![vyush\_agarwal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/vyush_agarwal/32/31986_2.png) [@vyush\_agarwal](https://discourse.julialang.org/u/vyush_agarwal)
#### Post date: [December 18, 2021, 6:16am UTC](https://discourse.julialang.org/t/error-unsatisfiable-requirements-detected-and-has-no-known-versions/73289/1 "2021-12-18T06:16:39Z")

</div>

I am getting the same error in my case Xnumber is a dependency of SHbundle and both of them are unregistered.

```julia
ERROR: Unsatisfiable requirements detected for package Xnumber [fdc6275c]:
 Xnumber [fdc6275c] log:
 ├─Xnumber [fdc6275c] has no known versions!
 └─restricted to versions * by SHbundle [685399a2] — no versions left
   └─SHbundle [685399a2] log:
     ├─possible versions are: 0.1.0 or uninstalled
     └─SHbundle [685399a2] is fixed to version 0.1.0

```

Also I have added Xnumber to SHbundle but when i run the following command in gitlab-ci i get the above error.

```julia
- |
      julia --project=docs -e '
        using Pkg
        Pkg.Registry.update()
        Pkg.develop(PackageSpec(path=pwd()))
        Pkg.instantiate()
        using Documenter: doctest
        using SHbundle
        doctest(SHbundle)
        include("docs/make.jl")'

```

I don’t know how much the below answer is relevant to my case as could not understand the solution.

[https://discourse.julialang.org/t/package-manager-resolve-complaining-of-unsatisfiable-requirements-due-to-no-known-versions/23778?u=vyush\_agarwal](https://discourse.julialang.org/t/package-manager-resolve-complaining-of-unsatisfiable-requirements-due-to-no-known-versions/23778)

Link to gitlab repos:  
[SHbundle](https://gitlab.com/vyush/SHbundle.jl)  
Xnumber =\> `https://gitlab.com/vyush/Xnumber.jl`

---

<div class="post-metadata">

### Author: ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)
#### Post date: [December 18, 2021, 6:31am UTC](https://discourse.julialang.org/t/error-unsatisfiable-requirements-detected-and-has-no-known-versions/73289/2 "2021-12-18T06:31:21Z")

</div>

My understanding is that you are trying to execute the above command in the `SHbundle` folder.

The problem is that `Pkg.instantiate()` is not going to work since it does not know how to find `Xnumber`.

Before instantiating you should `Pkg.develop(url="https://gitlab.com/vyush/Xnumber.jl")` first.

Try this:

```julia
        using Pkg
        Pkg.Registry.update()
        Pkg.develop(url="https://gitlab.com/vyush/Xnumber.jl")
        Pkg.develop(PackageSpec(path=pwd())) # I'm assuming we are in the SHbundle directory
        Pkg.instantiate()
        using Documenter: doctest
        using SHbundle
        doctest(SHbundle)
        include("docs/make.jl")

```

---

<div class="post-metadata">

### Author: ![vyush\_agarwal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/vyush_agarwal/32/31986_2.png) [@vyush\_agarwal](https://discourse.julialang.org/u/vyush_agarwal)
#### Post date: [December 18, 2021, 6:44am UTC](https://discourse.julialang.org/t/error-unsatisfiable-requirements-detected-and-has-no-known-versions/73289/3 "2021-12-18T06:44:44Z")

</div>

Thank you. This does solve the error but why does the

```julia
Pkg.develop(PackageSpec(path=pwd())) 

```

not take the path to `Xnumber` from the `manifest.yml`

---

<div class="post-metadata">

### Author: ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)
#### Post date: [December 18, 2021, 6:51am UTC](https://discourse.julialang.org/t/error-unsatisfiable-requirements-detected-and-has-no-known-versions/73289/4 "2021-12-18T06:51:27Z")

</div>

You are pointing at the `docs` project, so the relevant Manifest is [docs/Manifest.toml · master · Vyush Agarwal / SHbundle.jl · GitLab](https://gitlab.com/vyush/SHbundle.jl/-/blob/master/docs/Manifest.toml)

I do not see the path to Xnumber there. Also it is my rough understanding that Manifest.toml is mainly used by `Pkg.instantiate()`, but I may be wrong on this.

---

<div class="post-metadata">

### Author: ![vyush\_agarwal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/vyush_agarwal/32/31986_2.png) [@vyush\_agarwal](https://discourse.julialang.org/u/vyush_agarwal)
#### Post date: [December 18, 2021, 7:02am UTC](https://discourse.julialang.org/t/error-unsatisfiable-requirements-detected-and-has-no-known-versions/73289/5 "2021-12-18T07:02:21Z")

</div>

Okay, that makes sense.Thanks.

---

<div class="post-metadata">

### Author: ![nbraunscheidel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nbraunscheidel/32/39268_2.png) [@nbraunscheidel](https://discourse.julialang.org/u/nbraunscheidel)
#### Post date: [September 1, 2022, 6:39pm UTC](https://discourse.julialang.org/t/error-unsatisfiable-requirements-detected-and-has-no-known-versions/73289/6 "2022-09-01T18:39:13Z")

</div>

This was very helpful for a single unregistered package, but any chance there is a fix for multiple unregistered packages? I tried adding ` Pkg.develop(url="...")` where `...` is the github url for each of my unregistered packages before calling `Pkg.develop(PackageSpec(path=pwd())) `. It seems only the first package is found and the others throw the same `Error: Unsatisfiable requirements detected and has no known versions.`

---

<div class="post-metadata">

### Author: ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)
#### Post date: [September 2, 2022, 9:04am UTC](https://discourse.julialang.org/t/error-unsatisfiable-requirements-detected-and-has-no-known-versions/73289/7 "2022-09-02T09:04:50Z")

</div>

`Pkg.develop` will accept a `Vector{PackageSpec}`. Thus you could do

```julia
using Pkg
Pkg.develop([PackageSpec(url="..."), PackageSpec(url="..."), ..., PackageSpec(url="...")])

```

See the docstrings for `Pkg.develop` and `PackageSpec`:

```julia
help?> Pkg.develop
  Pkg.develop(pkg::Union{String, Vector{String}}; io::IO=stderr)
  Pkg.develop(pkgs::Union{Packagespec, Vector{Packagespec}}; io::IO=stderr)

  Make a package available for development by tracking it by path. If pkg is given with only a name or by a URL, the package will be downloaded to the location specified by the environment variable
  JULIA_PKG_DEVDIR, with joinpath(DEPOT_PATH[1],"dev") being the default.

  If pkg is given as a local path, the package at that path will be tracked.

  Examples
  ≡≡≡≡≡≡≡≡≡≡

  # By name
  Pkg.develop("Example")
  
  # By url
  Pkg.develop(url="https://github.com/JuliaLang/Compat.jl")
  
  # By path
  Pkg.develop(path="MyJuliaPackages/Package.jl")

  See also PackageSpec, Pkg.add.

help?> PackageSpec
search: PackageSpec

  PackageSpec(name::String, [uuid::UUID, version::VersionNumber])
  PackageSpec(; name, url, path, subdir, rev, version, mode, level)

  A PackageSpec is a representation of a package with various metadata. This includes:

    • The name of the package.

    • The package's unique uuid.

    • A version (for example when adding a package). When upgrading, can also be an instance of the enum UpgradeLevel.

    • A url and an optional git revision. rev can be a branch name or a git commit SHA1.

    • A local path. This is equivalent to using the url argument but can be more descriptive.

    • A subdir which can be used when adding a package that is not in the root of a repository.

  Most functions in Pkg take a Vector of PackageSpec and do the operation on all the packages in the vector.

  │ Julia 1.5
  │
  │ Many functions that take a PackageSpec or a Vector{PackageSpec} can be called with a more concise notation with NamedTuples. For example, Pkg.add can be called either as the explicit or
  │ concise versions as:
  │
  │ Explicit Concise                                      
  │ ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– –––––––––––––––––––––––––––––––––––––––––––––
  │ Pkg.add(PackageSpec(name="Package")) Pkg.add(name = "Package")                    
  │ Pkg.add(PackageSpec(url="www.myhost.com/MyPkg"))) Pkg.add(name = "Package")                    
  │ Pkg.add([PackageSpec(name="Package"), PackageSpec(path="/MyPkg"]) Pkg.add([(;name="Package"), (;path="MyPkg")])

  Below is a comparison between the REPL mode and the functional API:

  REPL API                                                
  –––––––––––––––––– –––––––––––––––––––––––––––––––––––––––––––––––––––
  Package PackageSpec("Package")                             
  Package@0.2 PackageSpec(name="Package", version="0.2")         
  Package=a67d... PackageSpec(name="Package", uuid="a67d...")        
  Package#master PackageSpec(name="Package", rev="master")          
  local/path#feature PackageSpec(path="local/path"; rev="feature")      
  www.mypkg.com PackageSpec(url="www.mypkg.com")                   
  --major Package PackageSpec(name="Package", version=PKGLEVEL_MAJOR)

```
