#!/bin/bash # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Usage: # # ./prereqs-ubuntu.sh # # User must then logout and login upon completion of script # # Exit on any failure set -e # Array of supported versions declare -a versions=('trusty' 'xenial' 'yakkety', 'bionic'); # check the version and extract codename of ubuntu if release codename not provided by user if [ -z "$1" ]; then source /etc/lsb-release || \ (echo "Error: Release information not found, run script passing Ubuntu version codename as a parameter"; exit 1) CODENAME=${DISTRIB_CODENAME} else CODENAME=${1} fi # check version is supported if echo ${versions[@]} | grep -q -w ${CODENAME}; then echo "Installing Hyperledger Composer prereqs for Ubuntu ${CODENAME}" else echo "Error: Ubuntu ${CODENAME} is not supported" exit 1 fi # Update package lists echo "# Updating package lists" sudo apt-add-repository -y ppa:git-core/ppa sudo apt-get update # Install Git echo "# Installing Git" sudo apt-get install -y git # Install nvm dependencies echo "# Installing nvm dependencies" sudo apt-get -y install build-essential libssl-dev # Execute nvm installation script echo "# Executing nvm installation script" curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash # Set up nvm environment without restarting the shell export NVM_DIR="${HOME}/.nvm" [ -s "${NVM_DIR}/nvm.sh" ] && . "${NVM_DIR}/nvm.sh" [ -s "${NVM_DIR}/bash_completion" ] && . "${NVM_DIR}/bash_completion" # Install node echo "# Installing nodeJS" nvm install 8 nvm use 8 # Ensure that CA certificates are installed sudo apt-get -y install apt-transport-https ca-certificates # Add Docker repository key to APT keychain curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # Update where APT will search for Docker Packages echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu ${CODENAME} stable" | \ sudo tee /etc/apt/sources.list.d/docker.list # Update package lists sudo apt-get update # Verifies APT is pulling from the correct Repository sudo apt-cache policy docker-ce # Install kernel packages which allows us to use aufs storage driver if V14 (trusty/utopic) if [ "${CODENAME}" == "trusty" ]; then echo "# Installing required kernel packages" sudo apt-get -y install linux-image-extra-$(uname -r) linux-image-extra-virtual fi # Install Docker echo "# Installing Docker" sudo apt-get -y install docker-ce # Add user account to the docker group sudo usermod -aG docker $(whoami) # Install docker compose echo "# Installing Docker-Compose" sudo curl -L "https://github.com/docker/compose/releases/download/1.13.0/docker-compose-$(uname -s)-$(uname -m)" \ -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose # Install python v2 if required set +e COUNT="$(python -V 2>&1 | grep -c 2.)" if [ ${COUNT} -ne 1 ] then sudo apt-get install -y python-minimal fi # Install unzip, required to install hyperledger fabric. sudo apt-get -y install unzip # Print installation details for user echo '' echo 'Installation completed, versions installed are:' echo '' echo -n 'Node: ' node --version echo -n 'npm: ' npm --version echo -n 'Docker: ' docker --version echo -n 'Docker Compose: ' docker-compose --version echo -n 'Python: ' python -V # Print reminder of need to logout in order for these changes to take effect! echo '' echo "Please logout then login before continuing."