Skip to main content

JILL -- Julia Installer for Linux (MacOS, Windows and FreeBSD) -- Light

Project description

JILL.py

The enhanced Python fork of JILL -- Julia Installer for Linux (MacOS, Windows and FreeBSD) -- Light

py version version Actions Status codecov release-date 中文README

Why jill.py? Distro package managers (e.g., apt, pac, chocho) is likely to provide a broken Julia with incorrect binary dependencies (e.g., LLVM ) versions. Hence it's recommended to download and extract the Julia binary provided in Julia Downloads. jill.py doesn't do anything magical, but just makes such operation even stupid.

Using Python to install Julia? This is because Python has became one of the main tool for sys admins and it's available in all platforms; this makes a cross-platform installer for Julia possible.

Is it safe to use this? Yes, jill.py use GPG to check every tarballs after downloading. Also, *.dmg/*.pkg for macOS and .exe for Windows are already singed.

Features

let's make a simple and stupid julia installer

  • download Julia release from the nearest mirror server.
  • immediately knows once there's a new Julia release.
  • across multiple platforms.
  • manage multiple julia releases.

Installation

First you'll need to install jill using pip: pip install jill --user -U

Note that Python >= 3.6 is required. For base docker images, you also need to make sure wget and gnupg are installed.

Usage examples for most users

Basic usage:

jill install [version] [--confirm] [--upstream UPSTREAM] [--install_dir INSTALL_DIR] [--symlink_dir SYMLINK_DIR]

For the first-time users of jill.py, you may need to modify PATH accordingly so that your shell can find the executables when you type julia.

installation demo

When you type jill install (the simplest usage), it does the following things:

  1. query latest stable release, it's 1.4.2 at the time of writing.
  2. download, verify and install julia 1.4.2
  3. make alias: julia, julia-1, julia-1.4
    • for nightly build, it only bind alias to julia-latest

Valid version syntax:

  • stable: latest stable release
  • 1: latest stable 1.y.z release
  • 1.2: latest stable 1.2.z release
  • 1.2.3/1.2.3-rc1: as it is
  • nightly/latest: nightly builds

Here's a list of slightly advanced usages that you may be interested in:

  • download only:
    • latest stable release for current system: jill download
    • specific system: jill download --sys freebsd --arch x86_64
    • download Julia to specific dir: jill download --outdir another/dir
  • install Julia for current system:
    • (linux only) system-wide for root: sudo jill install
    • upgrade from older julia version: jill install --upgrade (copy and paste the root environment folder)
    • don't need interactive promopt: jill install --confirm
  • upstream:
    • from specific upstream: jill install --upstream Official
    • find out all registered upstreams: jill upstream
    • add a private upstream: make a modifed copy of public registry at:
      • Linux, MacOS and FreeBSD: ~/.config/jill/sources.json
      • Windows: ~/AppData/Local/julias/sources.json

You can find a more verbose documentation using jill [COMMAND] -h (e.g., jill download -h)

For Julia (>= 1.5.0) in Linux with musl dependency, you can download/install it by passing --sys musl command. --sys linux will give you Julia binaries built with glibc dependency.

Example with cron

If you're tired of seeing (xx days old master) in your nightly build version, then jill can make your nightly build always the latest version using cron:

# /etc/cron.d/jill
PATH=/usr/local/bin:/usr/sbin:/usr/sbin:/usr/bin:/sbin:/bin

# install a fresh nightly build every day
* 0 * * * root jill install latest --confirm

Similarly, you can also add a cron job for jill install --confirm so that you always get a latest stable release for julia. jill knows the existence of a new version of Julia once it's released -- you don't even need to upgrade jill.

For who are interested in setting up a new release mirror

This section is not for common jill.py users that simply wants to download and install Julia.

Register new mirror

If it's an public mirror and you want to share it worldwide. You can add an entry to the public registry, make a PR, then I will tag a new release for that.

If it's an internal mirror and you don't plan to make it public, you can create a config file at ~/.config/jill/sources.json locally. The contents will be appended to the public registry and overwrite already existing items if there are.

In the registry config file, a new mirror is a dictionary in the upstream field:

  • name: a distinguishable mirror name
  • urls: URL template to retrive Julia release
  • latest_urls: URL template to retrive the nightly build of Julia release

Placeholders

Placeholders are used to register new mirrors. For example, the stable release url of the "Official" release server provided by Julialang.org is "https://julialang-s3.julialang.org/bin/$sys/$arch/$minor_version/$filename"

There're several predefined placeholders for various systems and architectures:

  • system: windows, macos, linux, freebsd
  • sys: winnt, mac, linux, freebsd
  • os: win, mac, linux, freebsd
  • architecture: x86_64, i686, ARMv7, ARMv8
  • arch: x86, x64, armv7l, aarch64
  • osarch: win32, win64, mac64, linux-armv7l, linux-aarch64
  • osbit: win32, win64, linux32, linux64, linuxaarch64
  • bit: 32, 64
  • extension: exe, tar.gz, dmg (no leading .)

There're also placeholders for versions:

  • patch_version: 1.2.3, latest
  • minor_version: 1.2, latest
  • major_version: 1
  • version: 1.2.3-pre, latest (no leading v)
  • vpatch_version: v1.2.3, latest
  • vminor_version: v1.2, latest
  • vmajor_version: v1, latest

To keep consistent names with official releases, you can use predefined name placeholders:

  • stable release filename: julia-$version-$osarch.$extension
  • nightly release latest_filename: "julia-latest-$osbit.$extension"

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jill-0.7.7.tar.gz (30.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jill-0.7.7-py3-none-any.whl (32.4 kB view details)

Uploaded Python 3

File details

Details for the file jill-0.7.7.tar.gz.

File metadata

  • Download URL: jill-0.7.7.tar.gz
  • Upload date:
  • Size: 30.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.8.5

File hashes

Hashes for jill-0.7.7.tar.gz
Algorithm Hash digest
SHA256 26e151b3f3b00f386cc84daef096e5a012e543a2004966145a2930e51c712d68
MD5 aedae7d22586fcdb5ed4a38aa03a3ca1
BLAKE2b-256 20f4cd9cc15f74961bac14b60e8ad5cacb3c0da83738b350339d1ad4967b268f

See more details on using hashes here.

File details

Details for the file jill-0.7.7-py3-none-any.whl.

File metadata

  • Download URL: jill-0.7.7-py3-none-any.whl
  • Upload date:
  • Size: 32.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.8.5

File hashes

Hashes for jill-0.7.7-py3-none-any.whl
Algorithm Hash digest
SHA256 170937b4a6d6f0aa2878eb5b8a509762962f87f2f0791d1c64b21b077c3c2bc3
MD5 8b8aa6d157d8ecbabba5fd59244e6f16
BLAKE2b-256 18605d16b74014b40dfd51cfbba4862f4475eaa9adb9a51a390d0fbc8be7b6b1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page