Home

Awesome

LocalPackageServer

Implementation of a Julia Storage Server for a single registry, where the registry and the registered packages are dynamically retrieved from their git repositories. For creation of a registry, see the companion package LocalRegistry.

This package is a simplified fork of the PkgServer package, to which the dynamic storage server has been added. It can also be configured as a low-feature Julia Package Server with a built in storage server.

For terminology and background, see https://github.com/JuliaLang/Pkg.jl/issues/1377.

Usage

# Enter package directory
$ cd LocalPackageServer
# Launch server to run in foreground
$ julia --project bin/run_server.jl CONFIG_FILE

where CONFIG_FILE is a configuration file in TOML format. The content is explained below.

Package Server Configuration

An example configuration file for running as a package server with a builtin storage server:

host = "127.0.0.1"
port = "8000"
local_registry = REGISTRY_URL
pkg_server = "https://pkg.julialang.org"
cache_dir = "/tmp/cache"
git_clones_dir = "/tmp/data"
min_time_between_registry_updates = 60

Replace REGISTRY_URL with the URL to your local registry (the same that you would use in a registry add command). If you want to use the package server from other computers you need to replace localhost with a public address.

Using the Package Server

Start a 1.4 or newer version of Julia, referring all Pkg operations to this package server:

$ JULIA_PKG_SERVER=http://localhost:8000 julia

In order to add your registry through the package server, you need to do

using Pkg
pkg"registry add UUID"

where UUID is the UUID of your local registry.

For Julia 1.5 you won't need to specify the UUID;

using Pkg
pkg"registry add"

without arguments suffices. For new Julia installations (when no registry has been previously added) it will be added automatically.

Storage Server Configuration

The major difference to configuration as a Package Server is that pkg_server is omitted.

host = "127.0.0.1"
port = "8080"
local_registry = REGISTRY_URL
cache_dir = "/tmp/cache"
git_clones_dir = "/tmp/data"
min_time_between_registry_updates = 60

Then you configure this as a storage server for PkgServer. Adding your local registry is done as above after you have pointed JULIA_PKG_SERVER to your PkgServer instance.

Configuration Variables

[gitconfig]
"user.name" = "Jane Doe"
"user.email" = "unknown@example.com"