Skip to content

Offline Package Bundles ​

An air-gapped JuliaHub installation cannot reach pkg.juliahub.com to synchronize packages. Instead, JuliaHub supplies offline package bundles — directories containing packages, documentation, and artifacts that you transfer to the installation and ingest locally.

Complete the platform installation before ingesting a bundle.

Disk space ​

The installation server needs roughly twice the bundle size in free space, because the bundle is copied into the platform's sync state directory during ingest.

The initial bundle is large — on the order of 800 GB — so budget at least 1800 GB of free space for the first ingest. Subsequent bundles are incremental and considerably smaller.

Bundle naming ​

A bundle is a directory named transfer-<date>-<serial>, for example transfer-2025-0130-00000. JuliaHub delivers it either on physical media or as a set of download URLs.

The examples below use transfer-2025-0130-00000; substitute the name of the bundle you received.

1. Transfer the bundle to the server ​

Copy the bundle to /var/lib/juliahub on the installation server. Replace <remote> with the server's address and <user> with your SSH user.

Using rsync, which can resume an interrupted transfer:

bash
rsync -rvza transfer-2025-0130-00000 <user>@<remote>:/var/lib/juliahub

Or using scp:

bash
scp -r transfer-2025-0130-00000 <user>@<remote>:/var/lib/juliahub

Prefer rsync for the initial bundle

At 800 GB, a transfer interrupted partway through is expensive to restart. rsync resumes where it left off; scp does not.

2. Move the bundle into the sync state directory ​

Connect to the server over SSH and run the move_transfer.sh helper, which places the bundle where the sync service expects it:

bash
cd /var/lib/juliahub/config/sync
./move_transfer.sh /var/lib/juliahub/transfer-2025-0130-00000

3. Fix ownership ​

The sync service runs as UID 1000 and must own the bundle:

bash
sudo chown -R 1000:1000 /var/lib/juliahub/config/sync/transfers/transfer-2025-0130-00000

4. Create a bundle registry ​

Only needed the first time you ingest a bundle. If a bundle-backed registry already exists, skip to step 5.

  1. Open Registries from the sidebar.

  2. Select Add Registry.

  3. Set Registry name to General.

  4. Set Provider type to Bundle.

  5. Select Add Registry to save.

See Registry Management for the other registry options.

5. Ingest the bundle ​

  1. Open Packages from the sidebar.

  2. Select Synchronize.

Ingest reads the bundle from disk and populates the platform's package, documentation, and artifact stores.

The first ingest takes hours

Processing the initial 800 GB bundle can take several hours. Incremental bundles are much faster. The platform stays usable during ingest, though packages appear only as they are processed.

Subsequent bundles ​

For each new bundle, repeat steps 1 through 3 and then step 5. The registry created in step 4 is reused, so it does not need to be recreated.