While I appreciate how Julia's standard library handles package management as just another feature rather than a separate command line tool, Pkg is missing a documented search() capability. Unlike every package manager I've seen or used for programming language/os/userspace ecosystems, the only options here are web repository searches or pulling up a graphically enabled browser pointing to pkg.julialang.org. And if the latter is unavailable, such as working (on a machine) with no/restricted internet access, one must use a tool to snoop inside/search METADATA.jl.
This issue is not about searching registered/installed packages on the system (my METADATA.jl comment at the end was a last-resort thing after somehow updating from the web elsewise). However, the light help dialogue shouldn't be the main recommended way to do this, either.
On a side note, master's docs aren't clear about Pkg's new available() → Vector{ASCIIString} besides "available packages." Offline? Registered?
Please correct me if a registered package means locally known to be available online. If Pkg.available([pkg]) were to search package descriptions/categories too and saw 'registered' packages that can be added from any file/URI-like source without downloading, that would solve Julia's biggest omission in convenience.
Descriptions/categories do not formally exist in package metadata right now, but would be added if https://github.com/JuliaLang/julia/issues/11955 gets implemented. Pkg.available is just a list of packages derived from local metadata content that are known to be installable on your currently running version of Julia.
@tkelman Installable because already downloaded, though? Can I close this if Pkg.available does the searching I thought Julia lacked?
No packages are ever pre downloaded. You'd have to manually clone the github repo and audit the deps/build.jl script to check that it doesn't try to download anything at Pkg.build time.
Sorry, I don't mean pre-downladed. I'm talking about using a different operation such as Pkg.add. I believe I can close this issue as taken care of by Pkg.available iff there exists some combination of package manager functions ready in master or 0.4.x enabling users to both
What exactly do you mean by "a remote one"? Pkg.init accepts keyword arguments for initializing from a non-default Metadata repository location and/or branch name.
SInce this is a distributed/scientific language, I was speaking generally, but the internet counts. Would you agree Julia meets the conditions I was confused about?
While both of those solutions are interesting, they require internet access just to search?
I would think internet access is only necessary to Pkg.add().
Pkg3 will include more info about each package, including author, license, keywords, and description, so offline search can be implemented based on that info.
Is the metadata in Project.toml still the current plan? It would be cool to implement tags for supporting the search features (e.g., PyPI classifiers).
Most helpful comment
Pkg3 will include more info about each package, including author, license, keywords, and description, so offline search can be implemented based on that info.