-
* fix clippy * fix after rebase * WIP example specs * fix after rebase * add reproducibility * doc add missing protobuf compiler * remove ref to genesis timestamp * fix broken next identity index genesis * our pallets are not coming from the framework * fix first_ud everywhere * remove files unwanted on main branch * also apply renaming to gdev * rename first_ud_value and add comments (to put in value the absence of first_ud_time) * use index provided in GenesisIdty * add mold to documentation * change gtest existential deposit and adapt genesis parsing to real-world data * embed raw chainspecs only when enabled * add comments
* fix clippy * fix after rebase * WIP example specs * fix after rebase * add reproducibility * doc add missing protobuf compiler * remove ref to genesis timestamp * fix broken next identity index genesis * our pallets are not coming from the framework * fix first_ud everywhere * remove files unwanted on main branch * also apply renaming to gdev * rename first_ud_value and add comments (to put in value the absence of first_ud_time) * use index provided in GenesisIdty * add mold to documentation * change gtest existential deposit and adapt genesis parsing to real-world data * embed raw chainspecs only when enabled * add comments
title: Installation
This page will guide you through the steps needed to prepare a computer for development with the Duniter Substrate Node. Since Substrate is built with the Rust programming language, the first thing you will need to do is prepare the computer for Rust development - these steps will vary based on the computer's operating system. Once Rust is configured, you will use its toolchains to interact with Rust projects; the commands for Rust's toolchains will be the same for all supported, Unix-based operating systems.
Unix-Based Operating Systems
Substrate development is easiest on Unix-based operating systems like macOS or Linux. The examples in the Substrate Tutorials and Recipes use Unix-style terminals to demonstrate how to interact with Substrate from the command line.
macOS
Open the Terminal application and execute the following commands:
# Install Homebrew if necessary https://brew.sh/
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
# Make sure Homebrew is up-to-date, install openssl and cmake
brew update
brew install openssl cmake
Ubuntu/Debian
Use a terminal shell to execute the following commands:
sudo apt update
# May prompt for location information
sudo apt install -y cmake pkg-config libssl-dev git build-essential clang libclang-dev curl protobuf-compiler
Arch Linux
Run these commands from a terminal:
pacman -Syu --needed --noconfirm cmake gcc openssl-1.0 pkgconf git clang
export OPENSSL_LIB_DIR="/usr/lib/openssl-1.0"
export OPENSSL_INCLUDE_DIR="/usr/include/openssl-1.0"
Fedora/RHEL/CentOS
Use a terminal to run the following commands:
# Update
sudo dnf update
# Install packages
sudo dnf install cmake pkgconfig rocksdb rocksdb-devel llvm git libcurl libcurl-devel curl-devel clang
Rust Developer Environment
This project uses rustup
to help manage the Rust toolchain. First install
and configure rustup
:
# Install
curl https://sh.rustup.rs -sSf | sh
# Configure
source ~/.cargo/env
Finally, configure the Rust toolchain:
rustup default stable
rustup update nightly
rustup update stable
rustup target add wasm32-unknown-unknown --toolchain nightly
Installing mold linker to decrease build time
Mold (modern linker) (https://github.com/rui314/mold) decreases the build time. Install it through your system package for example then add the following to your ~/.cargo/config
:
[target.x86_64-unknown-linux-gnu]
linker = "clang"
rustflags = ["-C", "link-arg=-fuse-ld=/usr/bin/mold"]
(see https://forum.duniter.org/t/decrease-duniter-build-time/10170 on the forum)