on c2d68f9 help sign in
urbit.org/docs/using/install.md
398 lines 11 kB history raw
1---
2navhome: /docs/
3navuptwo: true
4next: true
5sort: 1
6title: Install
7---
9# Install
11Installing Urbit is easy. It just takes a few minutes to get an
12instance up and running on the network.
14Urbit is designed to run on any Unix box with an internet connection.
15macOS, Ubuntu/Debian, FreeBSD, and Fedora all work well.
17If you run into trouble installing Urbit, please let us know via
18email, [questions@urbit.org](mailto:questions@urbit.org), or on the
19forum: [fora.urbit.org](https://fora.urbit.org). You can also chat
20with us at [urbit.org/stream](https://urbit.org/stream).
22> Urbit is alpha software. It’s not yet completely stable, its crypto
23> hasn’t been audited, and there are plenty of rough edges. Urbit is
24> lots of fun to play with, but not quite ready for your important or
25> sensitive data.
27## Build from source
29### Dependencies
31Urbit depends on:
33```
34autoconf
35automake
36C compiler (gcc or clang)
37cmake
38curses
39git
40gmp
41libcurl
42libsigsegv
43libtool
44libuv
45meson
46ninja
47openssl
48pkg-config
49python2
50ragel
51re2c
52```
54### Instructions
56First, you'll install the required dependencies to build Urbit from source. Then, you'll clone the Urbit source code, hosted on Github. Next, you'll bootstrap the Git submodules needed for the build. Lastly, you'll run a [Meson](https://github.com/mesonbuild/meson) build on the Urbit source to create your Urbit binary for your host operating system. Then, finally, you'll be able to boot your urbit.
58For your host OS platform and relevant package installer, run the respective Bash shell commands listed below in a fresh terminal window to get Urbit installed:
60> For those new to the command line, see:
62> - Mac: [Introduction to the Mac OS X Command Line](http://blog.teamtreehouse.com/introduction-to-the-mac-os-x-command-line)
63> - Linux: [An Introduction to the Linux Terminal](https://www.digitalocean.com/community/tutorials/an-introduction-to-the-linux-terminal)
65#### macOS
67##### Homebrew
69> [Homebrew installation guide](https://treehouse.github.io/installation-guides/mac/homebrew)
71```
72# Bash
74brew update
75brew install autoconf automake cmake gcc git gmp libsigsegv libtool meson ninja pkg-config python2 openssl re2c
76git clone https://github.com/urbit/urbit
77cd urbit
78./scripts/bootstrap
79./scripts/build
80sudo ninja -C ./build/ meson-install
81urbit
82```
84##### Macports
86```
87# Bash
89sudo port selfupdate
90sudo port install autoconf automake cmake gmp libsigsegv meson openssl
91git clone https://github.com/urbit/urbit
92cd urbit
93./scripts/bootstrap
94./scripts/build
95sudo ninja -C ./build/ meson-install
96urbit
97```
99#### Linux
101##### Linuxbrew
103> [Linuxbrew](http://linuxbrew.sh/)
105```
106# Bash
108brew update
109brew install autoconf automake cmake gcc git gmp libsigsegv libtool meson ninja pkg-config python2 openssl re2c
110git clone https://github.com/urbit/urbit
111cd urbit
112./scripts/bootstrap
113./scripts/build
114sudo env "PATH=$PATH" ninja -C ./build/ install
115urbit
116```
118N.B. if the step `./scripts/build` fails when attempting to
119build libh2o, it could be caused by a bug in version 0.46 of meson (the bug
120is not present in 0.45 and is fixed in 0.47).
122If the command `meson -v` returns a version starting with 0.46, try these steps:
125```
126brew uninstall meson
127pip install meson=0.47.0
128rm -rf build
129build/scripts
130```
132If that is successful, resume the above instructions after the `build` step.
136##### Ubuntu or Debian
138```
139# Bash
141sudo apt-get update
142sudo apt-get install autoconf automake cmake exuberant-ctags g++ git libcurl4-gnutls-dev libgmp3-dev libncurses5-dev libsigsegv-dev libssl-dev libtool make openssl pkg-config python python3 python3-pip ragel re2c zlib1g-dev
143sudo -H pip3 install --upgrade pip
144sudo -H pip3 install meson==0.29
146# we need ninja 1.5.1
147# 'apt-get install ninja-build' gives us 0.1.3
148# 'apt-get install ninja-build' gives us 1.3.4
149#
150git clone git://github.com/ninja-build/ninja.git
151pushd ninja
152 git checkout release
153 ./configure.py --bootstrap
154 sudo cp ./ninja /usr/local/bin
155popd
158git clone https://github.com/urbit/urbit
159cd urbit
160./scripts/bootstrap
161./scripts/build
162sudo ninja -C ./build/ install
163urbit
164```
168(tested on Google Cloud Platform
169 * Ubuntu Trusty Linux (14.04 LTS)
170 * Ubuntu Xenial Linux (16.04 LTS)
171 * Debian 8 (Jessie)
172 * Debian 9 (Stretch)
173on 6 July 2018)
175##### Fedora / Redhat
177```
178# Bash
180sudo yum upgrade
181sudo 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 python2 python3 ragel re2c wget
183# meson requires python 3.5; RHEL supplies wrong version
184pushd /usr/src
185 sudo wget https://www.python.org/ftp/python/3.5.5/Python-3.5.5.tgz
186 sudo tar xzf Python-3.5.5.tgz
187 cd Python-3.5.5
188 sudo ./configure --enable--optimizations
189 sudo make altinstall
190 which python3.5
191 cd /usr/local/bin
192 sudo ln -s python3.5 python3
193 hash python3
194popd
196curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
197sudo /usr/local/bin/python3 get-pip.py
198# downgrade meson to avoid dependencies that redhat can't meet
199sudo -H /usr/local/bin/pip3 install meson==0.29
202git clone git://github.com/ninja-build/ninja.git && cd ninja
203git checkout release
204./configure.py --boostrap
205sudo cp ./ninja /usr/local/bin
207git clone https://github.com/urbit/urbit
208cd urbit
209./scripts/bootstrap
210./scripts/build
211sudo /usr/local/bin/ninja -C ./build/ install
212urbit
214```
216(tested on Google Cloud Platform
217 * Red Hat Enterprise Linux 6.1
218 * Red Hat Enterprise Linux 7.1
219on 5 July 2018)
222##### FreeBSD
224```
225# Bash or Sh
227pkg upgrade
228sudo pkg install autoconf automake cmake curl gcc git gmake gmp libsigsegv libtool python python3 ragel re2c ncurses openssl gmp
229curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
230sudo python3 get-pip.py
231sudo -H pip install --upgrade pip
232sudo -H pip install meson
233sudo pkg install ninja
234git clone https://github.com/urbit/urbit
235cd urbit
236sh ./scripts/bootstrap
237sh ./scripts/build
238sudo ninja -C ./build/ meson-install
239urbit
240```
242(tested on Google Cloud Platform
243 * FreeBSD 10.4
244 * FreeBSD 11.2
245on 4 July 2018)
247##### Arch
249```
250# Bash
252sudo pacman -Syu
253sudo pacman -S autoconf automake cmake curl gcc git gmp libsigsegv libtool ncurses ninja openssl python ragel re2c
254curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
255sudo python3 get-pip.py
256git clone https://github.com/urbit/urbit
257cd urbit
258./scripts/bootstrap
259./scripts/build
260sudo ninja -C ./build/ meson-install
261urbit
262```
264(tested on Amazon EC2 using Amazon Machine Image
265 * Release 2018.06.15 / ebs hvm x86_64 lts ( ami-a40a47db via https://www.uplinklabs.net/projects/arch-linux-on-ec2/ )
266on 6 July 2018)
270##### AWS
272```
273# Bash
275sudo yum update
276sudo yum install autoconf automake cmake ctags gcc gcc-c++ git gmp-devel libcurl-devel libsigsegv-devel libtool ncurses-devel openssl openssl-devel pkgconfig python2 python3 python3-pip ragel re2c wget git
277sudo env "PATH=$PATH" pip3 install --upgrade pip
278sudo env "PATH=$PATH" pip3 install meson
281# we need libsigsegv
284wget http://dl.fedoraproject.org/pub/fedora/linux/releases/25/Everything/x86_64/os/Packages/l/libsigsegv-2.10-10.fc24.x86_64.rpm
285wget http://dl.fedoraproject.org/pub/fedora/linux/releases/25/Everything/x86_64/os/Packages/l/libsigsegv-devel-2.10-10.fc24.x86_64.rpm
286sudo yum localinstall libsigsegv-2.10-10.fc24.x86_64.rpm
287sudo yum localinstall libsigsegv-devel-2.10-10.fc24.x86_64.rpm
289# we need re2c
291wget https://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/re2c-0.13.5-1.el6.rf.x86_64.rpm
292sudo yum localinstall re2c-0.13.5-1.el6.rf.x86_64.rpm
294git clone git://github.com/ninja-build/ninja.git
295pushd ninja
296 git checkout release
297 ./configure.py --bootstrap
298 sudo cp ./ninja /usr/local/bin
299popd
302git clone https://github.com/urbit/urbit
303cd urbit
304./scripts/bootstrap
305./scripts/build
306sudo env "PATH=$PATH" ninja -C ./build/ install
308urbit
309```
311(tested on Amazon EC2 using Amazon Machine Image
312 * Amazon Linux 2 AMI (HVM), SSD Volume Type - ami-b70554c8
313on 6 July 2018)
316### Test for successful installation
318After running your installed `urbit` command, check to see if the following output was printed:
320```
321$ urbit
322Urbit: a personal server operating function
323https://urbit.org
324Version 0.5.1
326Usage: urbit [options...] ship_name
327where ship_name is a @p phonetic representation of an urbit address
328without the leading '~', and options is some subset of the following:
330-A dir Use dir for initial galaxy sync
331-b Batch create
332-B pill Bootstrap from this pill
333-c pier Create a new urbit in pier/
334-d Daemon mode
335-D Recompute from events
336-F Fake keys; also disables networking
337-f Fuzz testing
338-g Set GC flag
339-H domain Set ames bootstrap domain (default urbit.org)
340-I galaxy Start as ~galaxy
341-k stage Start at Hoon kernel version stage
342-l port Initial peer port
343-M Memory madness
344-n host Set unix hostname
345-N Enable networking in fake mode (-F)
346-p ames_port Set the HTTP port to bind to
347-P Profiling
348-q Quiet
349-r host Initial peer address
350-R Report urbit build info
351-s Pill URL from arvo git hash
352-t ticket Use ~ticket automatically
353-u url URL from which to download pill
354-v Verbose
355-w name Immediately upgrade to ~name
356-x Exit immediately
357-Xwtf Skip last event
359Development Usage:
360 To create a development ship, use a fakezod:
361 urbit -FI zod -A /path/to/arvo/folder -B /path/to/pill -c zod
363 For more information about developing on urbit, see:
364 https://github.com/urbit/urbit/blob/master/CONTRIBUTING.md
366Simple Usage:
367 urbit -c <mycomet> to create a comet (anonymous urbit)
368 urbit -w <myplanet> -t <myticket> if you have a ticket
369 urbit <myplanet or mycomet> to restart an existing urbit
370```
372If so, then you're ready to boot your urbit. If not, check that you entered each Bash command correctly for your host OS platform. If you're still experiencing issues, feel free to drop into [Urbit chat](https://urbit.org/stream) for troubleshooting help.
374### Boot your urbit
376You've now installed the Urbit binary. If you're running Urbit on a normal modern PC or Mac, or
377on a large cloud instance, move onto the next [setup](../setup/) section.
379If you're running Urbit in the cloud on a small instance, read
380the below section, as you may need to additionally configure swap space, then continue.
382### (Set up swap)
384Urbit wants to map 2GB of memory when it boots up. We won’t necessarily
385use all this memory, we just want to see it. On a normal modern PC or Mac,
386or on a large cloud virtual machine, this is not an issue. On some small
387cloud virtual machines (Amazon or Digital Ocean), the default memory
388configuration is smaller than this, and you need to manually configure a
389swapfile.
391Digital Ocean has a post on adding swap
392[here](https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04).
393For Amazon there’s a StackOverflow thread
394[here](http://stackoverflow.com/questions/17173972/how-do-you-add-swap-to-an-ec2-instance).
396Don’t spend a lot of time tweaking these settings; the simplest
397thing is fine.