Serenity Operating System
1# Installing build requisites on other systems
2
3### Fedora
4
5```console
6sudo dnf install texinfo binutils-devel curl cmake mpfr-devel libmpc-devel gmp-devel e2fsprogs ninja-build patch ccache rsync @"C Development Tools and Libraries" @Virtualization
7```
8Optional: `fuse2fs` for [building images without root](https://github.com/SerenityOS/serenity/pull/11224).
9
10## openSUSE
11
12```console
13sudo zypper install curl cmake mpfr-devel mpc-devel ninja gmp-devel e2fsprogs patch qemu-x86 qemu-audio-pa gcc gcc-c++ ccache rsync patterns-devel-C-C++-devel_C_C++
14```
15
16## Void Linux
17
18```console
19sudo xbps-install -S base-devel cmake curl mpfr-devel libmpc-devel gmp-devel e2fsprogs ninja qemu ccache rsync
20```
21
22## ALT Linux
23
24```console
25apt-get install curl cmake libmpc-devel gmp-devel e2fsprogs libmpfr-devel ninja-build patch gcc ccache rsync
26```
27
28## NixOS
29
30You can use the `nix-shell` script [`Toolchain/serenity.nix`](../Toolchain/serenity.nix) to set up the environment:
31
32```console
33nix-shell Toolchain/serenity.nix
34```
35
36## Alpine Linux
37
38First, make sure you have enabled the `community` repository in `/etc/apk/repositories` and run `apk update`. It has been tested on `edge`, YMMV on `stable`.
39
40```console
41# the basics, if you have not already done so
42apk add bash curl git util-linux sudo
43
44# GNU coreutils for GNU's version of `du`
45apk add coreutils
46
47# rough equivalent of build-essential
48apk add build-base
49
50# qemu
51apk add qemu qemu-system-i386 qemu-img qemu-ui-gtk
52
53# build tools (samurai is a drop-in replacement for ninja)
54apk add cmake e2fsprogs grub-bios samurai mpc1-dev mpfr-dev gmp-dev ccache rsync texinfo
55```
56
57## OpenBSD prerequisites
58
59```console
60doas pkg_add bash cmake g++ gcc git gmake gmp ninja ccache rsync coreutils qemu sudo e2fsprogs
61```
62
63## FreeBSD prerequisites
64
65```console
66pkg install qemu bash cmake coreutils e2fsprogs fusefs-ext2 gcc11 git gmake ninja sudo gmp mpc mpfr ccache rsync
67```
68Optional: `fusefs-ext2` for [building images without root](https://github.com/SerenityOS/serenity/pull/11224).