mirror of
https://github.com/YunoHost-Apps/duniter_ynh.git
synced 2024-09-03 18:26:35 +02:00
Remove relicats. Install from local install script. Need to try the relaunch of the shell.
This commit is contained in:
parent
9984f99cc5
commit
55dd9162b3
2 changed files with 356 additions and 5 deletions
|
@ -13,8 +13,6 @@ salt=$6
|
|||
password=$7
|
||||
#cpu=$(($7/100))
|
||||
#cpu=`expr $7 / 100`
|
||||
#data_path=/home/yunohost.app/ucoin
|
||||
#ucoin="node --harmony $data_path/bin/ucoind"
|
||||
|
||||
# Check domain/path availability
|
||||
sudo yunohost app checkurl $domain$path -a $app \
|
||||
|
@ -31,11 +29,11 @@ sudo yunohost firewall allow TCP $port > /dev/null 2>&1
|
|||
|
||||
# Store config on YunoHost instance
|
||||
sudo yunohost app setting $app port -v $port
|
||||
sudo yunohost app setting $app data_path -v $data_path
|
||||
|
||||
# Install uCoin
|
||||
sudo apt -y -qq install wget
|
||||
sudo wget -qO- https://raw.githubusercontent.com/ucoin-io/ucoin/master/install.sh | sudo bash
|
||||
sudo bash
|
||||
sudo bash ../sources/install.sh
|
||||
exit
|
||||
|
||||
# Configure uCoin node
|
||||
ucoind init --autoconf
|
||||
|
|
353
sources/install.sh
Executable file
353
sources/install.sh
Executable file
|
@ -0,0 +1,353 @@
|
|||
#!/bin/bash
|
||||
|
||||
{ # this ensures the entire script is downloaded #
|
||||
|
||||
ucoin_has() {
|
||||
type "$1" > /dev/null 2>&1
|
||||
}
|
||||
|
||||
if [ -z "$UCOIN_DIR" ]; then
|
||||
UCOIN_DIR="$HOME/.ucoin"
|
||||
fi
|
||||
|
||||
ucoin_latest_version() {
|
||||
echo "v0.12.10"
|
||||
}
|
||||
|
||||
ucoin_repo_url() {
|
||||
echo "https://github.com/ucoin-io/ucoin.git"
|
||||
}
|
||||
|
||||
ucoin_download() {
|
||||
if ucoin_has "curl"; then
|
||||
curl -qkL $*
|
||||
elif ucoin_has "wget"; then
|
||||
# Emulate curl with wget
|
||||
ARGS=$(echo "$*" | command sed -e 's/--progress-bar /--progress=bar /' \
|
||||
-e 's/-L //' \
|
||||
-e 's/-I /--server-response /' \
|
||||
-e 's/-s /-q /' \
|
||||
-e 's/-o /-O /' \
|
||||
-e 's/-C - /-c /')
|
||||
wget $ARGS
|
||||
fi
|
||||
}
|
||||
|
||||
ucoin_is_ubuntu_install() {
|
||||
local distribution
|
||||
distribution=`cat /etc/*-release file 2>/dev/null | grep "Ubuntu"`
|
||||
if [[ "$distribution" = *Ubuntu* ]]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
ucoin_is_debian_install() {
|
||||
local distribution
|
||||
distribution=`cat /etc/*-release file 2>/dev/null | grep "Debian"`
|
||||
if [[ "$distribution" = *Debian* ]]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
ucoin_is_fedora_install() {
|
||||
local distribution
|
||||
distribution=`cat /etc/*-release file 2>/dev/null | grep "Fedora"`
|
||||
if [[ "$distribution" = *Fedora* ]]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
install_ucoin_from_git() {
|
||||
|
||||
if ! ucoin_has "make"; then
|
||||
if ucoin_is_ubuntu_install; then
|
||||
echo "=> make is not available. Please install 'build-essential' package with 'sudo apt-get install build-essential' command, then retry uCoin installation."
|
||||
exit 1
|
||||
fi
|
||||
if ucoin_is_debian_install; then
|
||||
echo "=> make is not available. Please install 'build-essentials' package with 'apt-get install build-essential' command as root, then retry uCoin installation."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if ! ucoin_has "g++"; then
|
||||
if ucoin_is_ubuntu_install; then
|
||||
echo "=> g++ is not available. Please install 'build-essential' package with 'sudo apt-get install build-essential' command, then retry uCoin installation."
|
||||
exit 1
|
||||
elif ucoin_is_debian_install; then
|
||||
echo "=> g++ is not available. Please install 'build-essentials' package with 'apt-get install build-essential' command as root, then retry uCoin installation."
|
||||
exit 1
|
||||
else
|
||||
echo "=> g++ is not available"
|
||||
fi
|
||||
return 11
|
||||
fi
|
||||
if ! ucoin_has "python"; then
|
||||
if ucoin_is_ubuntu_install; then
|
||||
echo "=> python is not available. Please install 'build-essential' package with 'sudo apt-get install build-essential' command, then retry uCoin installation."
|
||||
exit 1
|
||||
elif ucoin_is_debian_install; then
|
||||
echo "=> python is not available. Please install 'build-essentials' package with 'apt-get install build-essential' command as root, then retry uCoin installation."
|
||||
exit 1
|
||||
else
|
||||
echo "=> python is not available"
|
||||
fi
|
||||
return 11
|
||||
fi
|
||||
|
||||
local PREVIOUS_PATH
|
||||
PREVIOUS_PATH=$PATH
|
||||
if ucoin_has "git"; then
|
||||
# Git is here: clone repository
|
||||
if [ -d "$UCOIN_DIR/.git" ]; then
|
||||
echo "=> ucoin is already installed in $UCOIN_DIR, trying to update using git"
|
||||
printf "\r=> "
|
||||
cd "$UCOIN_DIR" && (command git fetch 2> /dev/null || {
|
||||
echo >&2 "Failed to update ucoin, run 'git fetch' in $UCOIN_DIR yourself." && exit 1
|
||||
})
|
||||
else
|
||||
# Cloning to $UCOIN_DIR
|
||||
echo "=> Downloading ucoin from git to '$UCOIN_DIR'"
|
||||
printf "\r=> "
|
||||
mkdir -p "$UCOIN_DIR"
|
||||
command git clone "$(ucoin_repo_url)" "$UCOIN_DIR"
|
||||
fi
|
||||
cd "$UCOIN_DIR" && command git checkout --quiet $(ucoin_latest_version)
|
||||
if [ ! -z "$(cd "$UCOIN_DIR" && git show-ref refs/heads/master)" ]; then
|
||||
if git branch --quiet 2>/dev/null; then
|
||||
cd "$UCOIN_DIR" && command git branch --quiet -D master >/dev/null 2>&1
|
||||
else
|
||||
echo >&2 "Your version of git is out of date. Please update it!"
|
||||
cd "$UCOIN_DIR" && command git branch -D master >/dev/null 2>&1
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# Fallback: git is not available, we download sources tarball
|
||||
local UCOIN_SRC_TARBALL=https://github.com/ucoin-io/ucoin/archive/$(ucoin_latest_version).tar.gz
|
||||
local UCOIN_SRC_ARCHIVE=$UCOIN_DIR/ucoin_$(ucoin_latest_version).tar.gz
|
||||
local UCOIN_SRC_FOLDER=$UCOIN_DIR/ucoin-$(ucoin_latest_version | sed -e s/^v//)
|
||||
echo "=> Downloading '$UCOIN_SRC_TARBALL' to '$UCOIN_SRC_ARCHIVE'"
|
||||
mkdir -p "$UCOIN_DIR"
|
||||
ucoin_download "$UCOIN_SRC_TARBALL" -o "$UCOIN_SRC_ARCHIVE" || {
|
||||
echo >&2 "Failed to download '$UCOIN_SRC_TARBALL'"
|
||||
return 7
|
||||
}
|
||||
echo "=> Extracting..."
|
||||
cd "$UCOIN_DIR" && tar xzf $UCOIN_SRC_ARCHIVE || {
|
||||
echo >&2 "Failed to extract '$UCOIN_SRC_ARCHIVE'"
|
||||
return 8
|
||||
}
|
||||
echo "=> Moving..."
|
||||
mv $UCOIN_SRC_FOLDER/* $UCOIN_DIR || {
|
||||
echo >&2 "Failed to move files from '$UCOIN_SRC_FOLDER'"
|
||||
return 9
|
||||
}
|
||||
echo "=> Cleaning ucoin sources..."
|
||||
rm -Rf $UCOIN_ARCHIVE $UCOIN_SRC_ARCHIVE $UCOIN_SRC_FOLDER || {
|
||||
echo >&2 "Failed to clean ucoin sources"
|
||||
return 10
|
||||
}
|
||||
fi
|
||||
|
||||
# Download Nodejs
|
||||
local NVER="0.12.7";
|
||||
local ARCH="86"
|
||||
local X64=`uname -a | grep "x86_64"`
|
||||
if [ ! -z "$X64" ]; then
|
||||
ARCH="64"
|
||||
fi
|
||||
local NODEJS_FILENAME=node-v${NVER}-linux-x${ARCH}
|
||||
local NODEJS_TARBALL=http://nodejs.org/dist/v${NVER}/${NODEJS_FILENAME}.tar.gz
|
||||
local NODEJS_ARCHIVE=$UCOIN_DIR/node.tar.gz
|
||||
local NODEJS_EXTRACTED=$UCOIN_DIR/$NODEJS_FILENAME
|
||||
if [ ! -d "$UCOIN_DIR/node" ]; then
|
||||
echo "=> Downloading '$NODEJS_TARBALL' to '$NODEJS_ARCHIVE'"
|
||||
ucoin_download "$NODEJS_TARBALL" -o "$NODEJS_ARCHIVE" || {
|
||||
echo >&2 "Failed to download '$NODEJS_TARBALL'"
|
||||
return 4
|
||||
}
|
||||
tar xzf $NODEJS_ARCHIVE || {
|
||||
echo >&2 "Failed to extract '$NODEJS_ARCHIVE'"
|
||||
return 5
|
||||
}
|
||||
mv $NODEJS_FILENAME "node" || {
|
||||
echo >&2 "Failed to extract '$NODEJS_ARCHIVE'"
|
||||
return 6
|
||||
}
|
||||
fi
|
||||
|
||||
# Install uCoin dependencies (NPM modules)
|
||||
export PATH=$PATH:$UCOIN_DIR/node/bin/
|
||||
npm install
|
||||
export PATH=$PREVIOUS_PATH
|
||||
return
|
||||
}
|
||||
|
||||
install_ucoin_as_script() {
|
||||
local ARCH="32"
|
||||
local X64=`uname -a | grep "x86_64"`
|
||||
if [ ! -z "$X64" ]; then
|
||||
ARCH="64"
|
||||
fi
|
||||
local UCOIN_SOURCE_LOCAL
|
||||
UCOIN_SOURCE_LOCAL=https://github.com/ucoin-io/ucoin/releases/download/$(ucoin_latest_version)/ucoin-x${ARCH}.tar.gz
|
||||
local UCOIN_ARCHIVE
|
||||
UCOIN_ARCHIVE=$UCOIN_DIR/ucoin.tar.gz
|
||||
|
||||
# Downloading to $UCOIN_DIR
|
||||
mkdir -p "$UCOIN_DIR"
|
||||
if [ -d "$UCOIN_DIR/ucoin" ]; then
|
||||
echo "=> ucoin is already installed in $UCOIN_DIR, trying to update"
|
||||
else
|
||||
echo "=> Downloading ucoin binary to '$UCOIN_DIR'"
|
||||
fi
|
||||
ucoin_download "$UCOIN_SOURCE_LOCAL" -o "$UCOIN_ARCHIVE" || {
|
||||
echo >&2 "Failed to download '$UCOIN_SOURCE_LOCAL'"
|
||||
return 1
|
||||
}
|
||||
echo "=> Extracting ucoin sources..."
|
||||
tar xzf $UCOIN_ARCHIVE -C $UCOIN_DIR || {
|
||||
echo >&2 "Failed to extract $UCOIN_ARCHIVE to $UCOIN_DIR"
|
||||
return 2
|
||||
}
|
||||
echo "=> Cleaning..."
|
||||
rm $UCOIN_ARCHIVE || {
|
||||
echo >&2 "Failed to remove $UCOIN_ARCHIVE"
|
||||
return 2
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Detect profile file if not specified as environment variable
|
||||
# (eg: PROFILE=~/.myprofile)
|
||||
# The echo'ed path is guaranteed to be an existing file
|
||||
# Otherwise, an empty string is returned
|
||||
#
|
||||
ucoin_detect_profile() {
|
||||
|
||||
local DETECTED_PROFILE
|
||||
DETECTED_PROFILE=''
|
||||
local SHELLTYPE
|
||||
SHELLTYPE="$(basename /$SHELL)"
|
||||
|
||||
if [ $SHELLTYPE = "bash" ]; then
|
||||
if [ -f "$HOME/.bashrc" ]; then
|
||||
DETECTED_PROFILE="$HOME/.bashrc"
|
||||
elif [ -f "$HOME/.bash_profile" ]; then
|
||||
DETECTED_PROFILE="$HOME/.bash_profile"
|
||||
fi
|
||||
elif [ $SHELLTYPE = "zsh" ]; then
|
||||
DETECTED_PROFILE="$HOME/.zshrc"
|
||||
fi
|
||||
|
||||
if [ -z $DETECTED_PROFILE ]; then
|
||||
if [ -f "$PROFILE" ]; then
|
||||
DETECTED_PROFILE="$PROFILE"
|
||||
elif [ -f "$HOME/.profile" ]; then
|
||||
DETECTED_PROFILE="$HOME/.profile"
|
||||
elif [ -f "$HOME/.bashrc" ]; then
|
||||
DETECTED_PROFILE="$HOME/.bashrc"
|
||||
elif [ -f "$HOME/.bash_profile" ]; then
|
||||
DETECTED_PROFILE="$HOME/.bash_profile"
|
||||
elif [ -f "$HOME/.zshrc" ]; then
|
||||
DETECTED_PROFILE="$HOME/.zshrc"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -z $DETECTED_PROFILE ]; then
|
||||
echo "$DETECTED_PROFILE"
|
||||
fi
|
||||
}
|
||||
|
||||
ucoin_is_available_for_distribution() {
|
||||
local distribution
|
||||
local distribution_deb
|
||||
local distribution_fedora
|
||||
|
||||
distribution=`cat /etc/*-release file 2>/dev/null | grep "Ubuntu"`
|
||||
distribution_deb=`cat /etc/*-release file 2>/dev/null | grep "Debian"`
|
||||
distribution_fedora=`cat /etc/*-release file 2>/dev/null | grep "Fedora"`
|
||||
|
||||
if [[ "$distribution" = *Ubuntu\ 14* ]] || [[ "$distribution" = *Ubuntu\ 15* ]] || [[ "$distribution_deb" = *Debian*8*jessie* ]] || [[ "$distribution_fedora" = *Fedora\ 23* ]]; then
|
||||
local X64=`uname -a | grep "x86_64"`
|
||||
if [ ! -z "$X64" ]; then
|
||||
return 0
|
||||
fi
|
||||
echo "=> 32-bit OS, requires to build"
|
||||
return 1
|
||||
else
|
||||
echo "=> No binary for this system, requires to build"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
ucoin_do_install() {
|
||||
|
||||
# Autodetect install method
|
||||
|
||||
if [ "_$1" == "_git" ]; then
|
||||
install_ucoin_from_git
|
||||
elif ucoin_is_available_for_distribution; then
|
||||
install_ucoin_as_script
|
||||
elif ucoin_has "git"; then
|
||||
install_ucoin_from_git
|
||||
elif ucoin_has "curl"; then
|
||||
install_ucoin_from_git
|
||||
elif ucoin_has "wget"; then
|
||||
install_ucoin_from_git
|
||||
else
|
||||
echo >&2 "You need git, curl, or wget to install ucoin"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo
|
||||
|
||||
local UCOIN_PROFILE
|
||||
UCOIN_PROFILE=$(ucoin_detect_profile)
|
||||
|
||||
SOURCE_STR="\nexport UCOIN_DIR=\"$UCOIN_DIR\"\n[ -s \"\$UCOIN_DIR/ucoin.sh\" ] && . \"\$UCOIN_DIR/ucoin.sh\" # This loads ucoin.sh"
|
||||
|
||||
if [ -z "$UCOIN_PROFILE" ] ; then
|
||||
echo "=> Profile not found. Tried $UCOIN_PROFILE (as defined in \$PROFILE), ~/.bashrc, ~/.bash_profile, ~/.zshrc, and ~/.profile."
|
||||
echo "=> Create one of them and run this script again"
|
||||
echo "=> Create it (touch $UCOIN_PROFILE) and run this script again"
|
||||
echo " OR"
|
||||
echo "=> Append the following lines to the correct file yourself:"
|
||||
printf "$SOURCE_STR"
|
||||
echo
|
||||
else
|
||||
if ! command grep -qc '/ucoin.sh' "$UCOIN_PROFILE"; then
|
||||
echo "=> Appending source string to $UCOIN_PROFILE"
|
||||
printf "$SOURCE_STR\n" >> "$UCOIN_PROFILE"
|
||||
else
|
||||
echo "=> Source string already in $UCOIN_PROFILE"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "=> ------------------------------------------------------"
|
||||
echo "=> ! !"
|
||||
echo "=> ! CLOSE and REOPEN YOUR TERMINAL to start using ucoin !"
|
||||
echo "=> ! !"
|
||||
echo "=> ------------------------------------------------------"
|
||||
ucoin_reset
|
||||
}
|
||||
|
||||
#
|
||||
# Unsets the various functions defined
|
||||
# during the execution of the install script
|
||||
#
|
||||
ucoin_reset() {
|
||||
unset -f ucoin_reset ucoin_has ucoin_latest_version \
|
||||
ucoin_download install_ucoin_as_script install_ucoin_from_git \
|
||||
ucoin_detect_profile ucoin_do_install \
|
||||
ucoin_is_available_for_distribution
|
||||
}
|
||||
|
||||
[ "_$UCOIN_ENV" = "_testing" ] || ucoin_do_install $1
|
||||
|
||||
} # this ensures the entire script is downloaded #
|
Loading…
Reference in a new issue