Skip to content
This repository was archived by the owner on Sep 16, 2021. It is now read-only.
This repository was archived by the owner on Sep 16, 2021. It is now read-only.

Stop downloading ancient version of litecoin #19

@c0deright

Description

@c0deright

downloading old versions automatically

Currently when installing litecore-node it's preinstall script download installs an ancient version v0.13.2.1-litecore-rc2 of a special version of litecoin.

That ancient version of litecoin is indeed downloaded twice! Once when npm install runs and a second time when litecore-node install runs. This is awful on so many levels!

Instead litecore-node should NOT download any binary at all but let the user decide which version to run.

skip that useless download

When setting

SKIP_BITCOIN_DOWNLOAD=1
VERIFY_BITCOIN_DOWNLOAD=0

it skips the download but later bails out because something tries to chmod the nonexisting binary litecoind:

npm WARN deprecated json3@3.3.2: Please use the native JSON object instead of JSON 3

> litecore-node@3.1.11 preinstall /usr/local/lib/node_modules/litecore-node
> ./scripts/download

/usr/local/bin/litecore-node -> /usr/local/lib/node_modules/litecore-node/bin/litecore-node
npm ERR! path /usr/local/lib/node_modules/litecore-node/bin/litecoind
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall chmod
npm ERR! enoent ENOENT: no such file or directory, chmod '/usr/local/lib/node_modules/litecore-node/bin/litecoind'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent 

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2019-06-14T14_11_25_422Z-debug.log

There are so many workarounds needed to get this installed and running in a meaningfull manner...

For a sane way to use litecoin-node see below: Remove all the auto-installed litecoin versions and install the latest version on your own.

Example Dockerfile with newest litecoin binary included

#
# build with: docker build . -t mytag -f <Dockerfile>
#
FROM node:8-slim

# litecore-node can't be installed without it downloading an ancient
# version of litecoin. We do remove the ancient version below in
# `remove not needed files`

# ENV SKIP_BITCOIN_DOWNLOAD=1
ENV VERIFY_BITCOIN_DOWNLOAD=0

# install dependencies etc in one big RUN statement
RUN apt-get update \
	&& extraPackages=" \
		python \
		libzmq5 \
	" \
	&& buildDepends=" \
		build-essential \
		jq \
		libzmq3-dev \
	" \
	&& apt-get install -y --no-install-recommends \
		$extraPackages \
		$buildDepends \
	\
	&& npm install -g litecore-node --unsafe-perm=true \
	\
	&& cd /root \
	&& litecore-node create litecore-node \
	\
	&& cd /root/litecore-node \
	&& litecore-node install insight-lite-api \
	\
# apply changes to litecore-node.json via 'jq` tool
	&& jq '.servicesConfig.bitcoind.spawn.exec = "/usr/local/bin/litecoind"' < litecore-node.json \
		| jq '.servicesConfig += {"insight-lite-api":{"disableRateLimiter":true}}' > /tmp/modified.json \
	&& mv /tmp/modified.json litecore-node.json \
	\
	&& ln -snf /usr/share/zoneinfo/Europe/Berlin /etc/localtime \
	&& echo 'Europe/Berlin' > /etc/timezone \
	\
# move everything to /litecore-node
	&& mv /root/litecore-node /litecore-node \
	&& chown -R node:node /litecore-node \
	\
# remove not needed files
	&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $buildDepends \
	&& rm -rf \
		/var/lib/apt/lists/* \
		/root/.npm \
		/root/.node-gyp \
		\
		/usr/local/lib/node_modules/litecore-node/bin/litecoin* \
		/usr/local/bin/litecoind \
		/litecore-node/node_modules/litecore-node/bin/litecoin* \
		/litecore-node/node_modules/.bin/litecoind \
		\
		/litecore-node/node_modules/*/test \
		/litecore-node/node_modules/zeromq/windows \
		/litecore-node/node_modules/litecore-node/*/test \
		/litecore-node/node_modules/litecore-node/*/benchmarks \
		\
		/usr/local/lib/node_modules/litecore-node/test \
		/usr/local/lib/node_modules/litecore-node/benchmarks \
		/usr/local/lib/node_modules/litecore-node/node_modules/*/test \
		/usr/local/lib/node_modules/litecore-node/node_modules/zeromq/windows

ENV LITECOIN_OS x86_64-linux-gnu
ENV LITECOIN_VERSION 0.17.1
ENV LITECOIN_FILENAME litecoin-${LITECOIN_VERSION}-${LITECOIN_OS}.tar.gz
ENV LITECOIN_SHA256 9cab11ba75ea4fb64474d4fea5c5b6851f9a25fe9b1d4f7fc9c12b9f190fed07

RUN curl -fSL "https://download.litecoin.org/litecoin-${LITECOIN_VERSION}/linux/${LITECOIN_FILENAME}" -o /tmp/litecoin.tar.gz \
        && echo "$LITECOIN_SHA256 /tmp/litecoin.tar.gz" | sha256sum -c - \
	&& tar -C /usr/local --strip-components=1 -xzf /tmp/litecoin.tar.gz \
	&& ldconfig \
	&& rm /tmp/litecoin.tar.gz /usr/local/bin/litecoin-qt /usr/local/bin/test_litecoin

USER node
WORKDIR /litecore-node
EXPOSE 3001

ENV NODE_ENV production

CMD litecore-node start

bitcoin.conf

server=1
whitelist=127.0.0.1
txindex=1
addressindex=1
timestampindex=1
spentindex=1
zmqpubrawtx=tcp://127.0.0.1:29332
zmqpubhashblock=tcp://127.0.0.1:29332
rpcallowip=127.0.0.1
rpcuser=bitcoin
rpcpassword=local321
disablewallet=1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions