Jump to content
devnullprod

Building rippled on Fedora 28

Recommended Posts

Greetings and happy Wednesday everyone! As a long time Fedora user, I was amiss to discover there were no instructions on building rippled on Fedora! While the official install instructions are for the CentOS/RHEL platform, the build instructions are for Ubuntu, and while trying locally we encountered some issues when trying to port them to Fedora.

https://developers.ripple.com/install-rippled.html

https://developers.ripple.com/build-run-rippled-ubuntu.html

 

Lets resolve this shall we!

To start off you're going to want to run this on a modernish Fedora system, so that you're sure your dependencies will satisfy the minimum requirements to compile rippled. I'm using Fedora 28 Workstation locally which can be downloaded from here:

https://getfedora.org/

 

This can be run in either a virtual machine or bare-metal environment, we've verified both. Make sure to download / install all updates before starting for the best experience:

$ sudo dnf update

(restart your computer after running this)

 

Next install dependencies which rippled needs. Luckily most are available system-wide. Note, by default rippled statically links dependencies, so you will need to install the static version of all libraries like so:

$ sudo dnf install cmake gcc-c++ openssl-static protobuf-compiler protobuf-static libstdc++-static

 

Download and build boost:

$ wget https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.gz
$ tar xzvf boost_1_67_0.tar.gz
$ cd boost_1_67_0/
$ ./bootstrap.sh
$ ./b2 -j8

(replace the 8 with the number of CPUs on your machine)

 

Point rippled to it:

export BOOST_ROOT=/home/user/boost_1_67_0

(replace this with the full path to the directory boost is located locally)

 

Clone the rippled project from github:

$ $ git clone https://github.com/ripple/rippled.git
$ cd rippled

 

Next create a separate directory for the build output and run the actual build:

$ mkdir build
$ cd build
$ cmake ..
$ cmake --build . -- -j 8

(replace the 8 with the number of CPUs on your machine)

 

If all goes well, the built rippled executable can now be found in the local directory. To verify functionality, run the builtin unit tests:

$ ./rippled -u

 

After this point, you can wrap up by following the remainder of the 'Configure' and 'Run' instructions on the ripple website:

https://developers.ripple.com/build-run-rippled-ubuntu.html#2-configure-rippled

 

As a bonus, if you'd like to build the docs, simply run the following (while still in the build dir):

$ sudo dnf install doxygen 
$ cmake ..
$ make docs

 

And that's all! Feel free to reply here if you're having any trouble and we'll do our best to help debug. You can find the official RPM spec at the following location, perhaps it may offer some insights as to what's wrong:

https://github.com/ripple/rippled-package-builder/blob/staging/rpm-builder/rippled.spec

 

Happy hacking!

---

Like this post?! Follow us on twitter!

Edited by riptidel
add boost build instructions, remove boost 1.66 reference

Share this post


Link to post
Share on other sites

I strongly discourage running rippled with Boost 1.66.0. The version of Boost.Beast included in that library has a critical bug that can cause rippled to crash if you try to use it.

Also, be careful about which branch of rippled you're building. The repository defaults to the develop branch, which is currently on version 1.1.0-rc3, but at times may be running beta versions. It looks like your instructions build the develop branch. These versions sometimes have bugs or non-finalized features. The latest stable release of rippled is in the master branch.

For the record, the recommended version of Boost is different per rippled version:

  • rippled 1.0.1 (latest stable) — Boost 1.58­ (min) to Boost 1.65.1 (max), Boost 1.64 (recommended). Some limits are specific to certain compilers or platforms (i.e. 1.58 doesn't work on Windows)
  • rippled 1.1.0 (current release candidate) —  Boost 1.67 required. (It may look like Boost 1.66 works, but it crashes on certain WebSocket inputs. And Boost 1.68.0 is incompatible.)
  • future rippled versions — Boost 1.68 compatibility is planned. Continued support for Boost 1.67 is TBD.

For the record, the Ubuntu install instructions work just about as well on Arch Linux as long as you install the dependencies appropriately for your platform, and I suspect the same is true for Fedora. In particular, the part in the instructions about compiling Boost yourself and setting BOOST_ROOT is key.

Share this post


Link to post
Share on other sites

@mDuo13 thank you for the info (and to @mellery451 and @MarkusTeufelberger for helping me here). I'm happy to say I was unable to reproduce the issue I was having on a fresh vm with boost-static installed systemwide, so just going to chalk that up to a flaky env. I just updated the instructions to remove the boost 1.66 reference and include the instructions for building boost 1.67

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...