Home Cryptocurrency Getting Dogecoind to run on CentOS
Cryptocurrency - December 28, 2013

Getting Dogecoind to run on CentOS

I’m on vacation in a rural part of the country for Christmas. I’m able to use the internet through tethering on my phone, but it’s pretty slow. I’m also not able to use the phone and the internet at the same time. Therefore, I decided to work on a project that I could do mostly offline, would help me learn how to work with cryptocurrencies, and generally be a positive help to the community at large.

 

Therefore I’ve decided to create a Dogecoin faucet. From reading about Bitcoin and interacting with libbitcoin, I have something of an understanding of how these things work. Essentially a faucet needs (please feel free to correct me if I’m wrong in anything):

  1. A copy of the Dogecoin daemon running on the server

  2. This daemon will need to have an entire copy of the blockchain

  3. A wallet run by the daemon

  4. Some coins

  5. A website frontend (html/css)

  6. PHP to interact with the dogecoin daemon (This is done, I think, by making CURL requests to the Dogecoin daemon running on the same localhost server but on a different port. I think there’s a library for this but I could be wrong).

 

First things first, I’ve decided to google to see if there’s anything on github, and in fact there is a faucet written by a polish girl (https://github.com/Emkacf/dogecoins-faucet/). I’m going to review this code and, if it seems correct, use it.

 

According to the github comments, the first step is to download and install the dogecoin daemon. This is going to be true regardless of whether or not I use the faucet code that I see here or if I’m going to wind up creating my own. So let’s go to the github for the faucet: (https://github.com/dogecoin/dogecoin)

 

Using putty to connect to my server so that I don’t have to use up my cellular bandwidth. The github instructions say to run the following:

sudo apt-get install build-essential \
libssl-dev \
libdb5.1++-dev \
libboost-all-dev \
libqrencode-dev \
libminiupnpc-dev

cd src/
make -f makefile.unix USE_UPNP=1 USE_IPV6=1 USE_QRCODE=1

I’m on CentOS, so I’m using YUM instead. Looking for some of these equivalents.

build-essential’s equivalent would be yum install make automake gcc gcc-c++ kernel-devel

libssl-dev’s equivalent would be yum install openssl-devel

 

At this point I get tired of finding package equivalencies, because I really want to get moving on this and I know that I have a lot of packages already installed for other things. So I grab the zip using wget

wget https://github.com/dogecoin/dogecoin/archive/master.zip

and unzip it

unzip master.zip

 

and move into the folder to see what we have. There’s a src directory with a makefile.unix. I attempt to make this file using  make -f makefile.unix USE_UPNP=1 USE_IPV6=1 USE_QRCODE=1 and get a ton of errors. Looks like I’m going back to installing dependencies.

 

Dogecoin is based on Litecoin as they’re both scrypt coins. So I start looking around for a CentOS guide to installing litecoin. I find a litecoin miner tutorial that suggests

sudo yum -y groupinstall “Development Tools”

sudo yum -y install git libcurl-devel python-devel screen rsync

 

The “Development Tools” I think is definitely going to be important, although I thought I had covered it with the yum install previously. As far as screen and rsync, those aren’t going to be important for the Dogecoin daemon, and I’m pretty sure I already have libcurl-devel, and since I’m just downloading the zip from git, I shouldn’t need this second line at all.

 

Fussing about some more, I’ve decided to delete the .zip and just use git to get the package from git.

 

git clone https://github.com/dogecoin/dogecoin.git

 

I need that libboost-all-devel, which in yum is

yum install boost-devel

 

and libqrencode-dev, which CentOS is

yum install qrencode-devel

 

At this point, trying to find the libminiupnpc-dev I stumble across this article for installing services for Primecoin on centos

http://www.primecoiner.com/centos-auto-install-servers/

 

Finally, a decent guide for CentOS for altcoins, although it’s not a scrypt coin, a lot of these will be important. And I’m able to grab the miniupnpc by following this section of the guide:

cd /root
echo ‘NOTICE: Downloading miniupnpc 1.6.2…’
wget http://miniupnp.tuxfamily.org/files/download.php?file=miniupnpc-1.6.20120509.tar.gz -O  miniupnpc-1.6.20120509.tar.gz
tar xzvf miniupnpc-1.6.20120509.tar.gz
cd miniupnpc-1.6.20120509
echo ‘NOTICE: Compiling miniupnpc 1.6.2…’
make
echo ‘NOTICE: Installing miniupnpc 1.6.2…’
INSTALLPREFIX=/usr/local make install

 

I also grabbed db4 with:

yum install db4

 

Now that all the dependencies seem like they might reasonably have been met, I’m going back to try to make dogecoin again.

 

—- SOME HOURS PASS —-

 

Apparently CentOS only has boost 1.4.1 in its yum repositories and I need boost 1.4.8. Since I installed the old boost before, I need to remove it. I’m following the instructions here (http://ben-tech.blogspot.com/2013/06/build-boost-for-impala-in-centos-63.html)

 

rpm -qa | grep boost

yum remove boost-*

 

Download boost

wget http://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.gz/download

tar -xvzf boost_1_55_0.tar.gz

 

And it is here that I learn that /tmp is mounted as noexec and I can’t run ./ commands. And also I learn that the bootstrap and installation procedure is different for 1.55 than it was for the ben-tech article.

./bootstrap.sh

./b2

./bjam install

 

Hah. Just kidding. That apparently only leaves the libraries in the current directory. Now that I’m learning what I actually need to invoke, I’m trying

./b2 –prefix=/usr/local/boost –build-type=complete –layout=tagged toolset=gcc link=static,shared threading=multi runtime-link=shared install

This should give me boost in /usr/local/boost and maybe I can run it again.

 

Still getting boost errors. How about installing from RPM?

 

There’s no RPM for CentOS with a later version. I’ve been working on following the bitcoind instructions for CentOS.

 

— More hours of dependency hell later —–

 

Ok, I’ve got dogecoind compiling, but its unable to load some shared libraries. I think that this should theoretically be pretty close. At least its compiling.

 

The biggest problem has been with boost and getting the correct version of boost installed, since CentOS doesn’t seem to work.

 

I do

 

wget http://downloads.sourceforge.net/boost/boost_1_55_0.tar.bz2

tar -jxvf boost_1_55_0.tar.bz2

./bootstrap.sh –prefix=/usr &&
./b2 stage threading=multi link=shared

then as root

./b2 install threading=multi link=shared

then

cd /dogecoin/src/

make -f makefile.unix dogecoind

 

And it compiles correctly (at least on my machine) but trying to ./dogecoind gives me

./dogecoind: error while loading shared libraries: libboost_system.so.1.55.0: cannot open shared object file: No such file or directory

 

Ok, so I’ve fixed these errors by copying the correct libraries in /lib64/ but now I get

 

************************

EXCEPTION: 9key_error

CKey::CKey() : EC_KEY_new_by_curve_name failed

dogecoin in AppInit()

 

terminate called after throwing an instance of ‘key_error’

 what():  CKey::CKey() : EC_KEY_new_by_curve_name failed

Aborted

 

So it turns out that CentOS and Fedora don’t come with EC in openssl. So I have to rebuild openssl. This does not sound like fun.

 

—– Some more hours pass —–

Ok, so I’ve taken the method for installing bitcoind on CentOS that is found here: (https://bitcointalk.org/index.php?topic=65818) and modified the files to work for dogecoind.

 

https://github.com/mikeminneman/dogecoind-centos

 

Use those files to get yourself started. Please feel free to contact me if you need any further help on reddit at http://www.reddit.com/u/earcaraxe

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.