Installing Urbit

Arvo runs nicely on a Unix-like operating system -- Ubuntu, Fedora, macOS, and FreeBSD, for example. If you're using Windows, you'll need to get one of the aforementioned systems. Don't worry: most of them are free. Let's get it onto your machine.

But first, some terminology:

  • vere or urbit: the interpreter that runs when you run a command like urbit or /bin/urbit in your command line
  • arvo: the deterministic OS that lives in a directory whose name matches your Azimuth point, ie ~famreb-todmec lives in /famreb-todmec

We have different installation instructions for different platforms. To install and run Arvo, run the commands that are listed for your operating system.

On any platform, you can check your Arvo installation by running the urbit command. Installation was successful if you get a block of output that begins with the line below:

Urbit: a personal server operating function

Instructions

MacOS

We recommend using the Homebrew package manager to run Arvo on MacOS.

# Bash

brew update
brew install -v gcc git gmp libsigsegv libtool meson ninja pkg-config openssl
git clone https://github.com/urbit/urbit
cd urbit
./scripts/bootstrap
./scripts/build
sudo ninja -C ./build/ meson-install
urbit

Ubuntu or Debian

# Bash

sudo apt-get update
sudo apt-get install g++ git libcurl4-gnutls-dev libgmp3-dev libncurses5-dev libsigsegv-dev libssl-dev make openssl pkg-config python python3 python3-pip python3-setuptools zlib1g-dev ninja-build
sudo -H pip3 install --upgrade pip
sudo -H pip3 install meson

git clone https://github.com/urbit/urbit
cd urbit
./scripts/bootstrap
./scripts/build
sudo ninja -C ./build/ install
urbit

To access your Urbit via HTTP on port 80, you may need to run the following:

sudo apt-get install libcap2-bin
sudo setcap 'cap_net_bind_service=+ep' $(which urbit)

Fedora 23 or earlier

# Bash

sudo yum upgrade
sudo yum install autoconf automake cmake ctags gcc gcc-c++ git gmp-devel libcurl-devel libsigsegv-devel libtool ncurses-devel ninja-build openssl openssl-devel pkgconfig python3 re2c wget

# meson requires python 3.5; RHEL supplies wrong version
pushd /usr/src
  sudo wget https://www.python.org/ftp/python/3.5.5/Python-3.5.5.tgz
  sudo tar xzf Python-3.5.5.tgz
  cd Python-3.5.5
  sudo ./configure --enable--optimizations
  sudo make altinstall
  which python3.5
  cd /usr/local/bin
  sudo ln -s python3.5 python3
  hash python3
popd

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo /usr/local/bin/python3 get-pip.py
# downgrade meson to avoid dependencies that redhat can't meet
sudo -H /usr/local/bin/pip3 install meson


git clone git://github.com/ninja-build/ninja.git && cd ninja
git checkout release
./configure.py --bootstrap
sudo cp ./ninja /usr/local/bin

git clone https://github.com/urbit/urbit
cd urbit
./scripts/bootstrap
./scripts/build
sudo /usr/local/bin/ninja -C ./build/ install
urbit

Fedora 24 or later

# Bash

sudo dnf upgrade
sudo dnf install autoconf automake cmake ctags gcc gcc-c++ git gmp-devel libcurl-devel libsigsegv-devel libtool ncurses-devel meson ninja-build openssl openssl-devel pkgconfig python3 re2c wget

git clone https://github.com/urbit/urbit
cd urbit
./scripts/bootstrap
./scripts/build
sudo ninja -C ./build/ install
urbit

Arch Linux

# Bash

sudo pacman -Syyu
sudo pacman -S --needed curl gcc git gmp libsigsegv ncurses ninja openssl python python-pip meson
git clone https://github.com/urbit/urbit
cd urbit
./scripts/bootstrap
./scripts/build
cd build
ninja
sudo ninja meson-install
urbit

FreeBSD

# Bash or Sh

pkg upgrade
sudo pkg install curl gcc git gmake gmp libsigsegv python python3 ncurses openssl gmp
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python3 get-pip.py
sudo -H pip install --upgrade pip
sudo -H pip install meson
sudo pkg install ninja
git clone https://github.com/urbit/urbit
cd urbit
sh ./scripts/bootstrap
sh ./scripts/build
sudo ninja -C ./build/ meson-install
urbit

Amazon Web Services

# Bash

sudo yum update
sudo yum install gcc gcc-c++ git gmp-devel libcurl-devel libsigsegv-devel ncurses-devel openssl openssl-devel pkgconfig python3 python3-pip wget git
sudo env "PATH=$PATH" pip3 install --upgrade pip
sudo env "PATH=$PATH" pip3 install meson


# we need libsigsegv
#

wget https://dl.fedoraproject.org/pub/fedora/linux/releases/30/Everything/x86_64/os/Packages/l/libsigsegv-2.11-7.fc30.x86_64.rpm
wget https://dl.fedoraproject.org/pub/fedora/linux/releases/30/Everything/x86_64/os/Packages/l/libsigsegv-devel-2.11-7.fc30.x86_64.rpm
sudo yum localinstall libsigsegv-2.11-7.fc30.x86_64.rpm
sudo yum localinstall libsigsegv-devel-2.11-7.fc30.x86_64.rpm

git clone git://github.com/ninja-build/ninja.git
pushd ninja
  git checkout release
  ./configure.py --bootstrap
  sudo cp ./ninja /usr/local/bin
popd


git clone https://github.com/urbit/urbit
cd urbit
./scripts/bootstrap
./scripts/build
sudo env "PATH=$PATH" ninja -C ./build/ install

urbit

Booting a Ship

One you've completed your installation, you can continue on to the instructions for booting your ship to get on the Arvo network.

Or, if you want to try testing and writing code, check out the guide to getting an unnetworked development ship.

Set Up Swap

If you're running Urbit in the cloud on a small instance, you may need to additionally configure swap space. If you're not, you can safely ignore this section.

Urbit wants to map 2GB of memory when it boots up. We won’t necessarily use all this memory, we just want to see it. On a normal modern PC or Mac, or on a large cloud virtual machine, this is not an issue. On some small cloud virtual machines (Amazon or Digital Ocean), the default memory configuration is smaller than this, and you need to manually configure a swapfile.

Digital Ocean has a post on adding swap here. For Amazon there’s a StackOverflow thread here.

Don’t spend a lot of time tweaking these settings; the simplest thing is fine.