2016-06-15 12 views
0

Versuchen, ein Skript zu schreiben, das Mongo installieren wird, falls es nicht existiert, zumindest über Ubuntu, Red Hat Linux und Mac OSX.Befehlszeile Mongo unabhängig vom Betriebssystem installieren

Hier ist die Idee:

#!/bin/bash 
    if [$mongoDoesntExist]; then 
    if [ $myOS = "Ubuntu" ]; then 
     # install Mongo on Ubuntu 
    else if [ $myOS = "Red Hat Linux"]; then 
     # install Mongo on Red Hat Linux 
    else if [ $myOS = "Mac OSX"]; then 
     # install mongo on Mac OSX 
    else 
     echo "Please visit https://docs.mongodb.com/v3.0/installation/ to install Mongo on your OS" 
    fi 
    fi  
+0

Sie können die Funktion 'os_version' aufrufen, um den Namen und die Version des Betriebssystems zu erhalten - siehe https://github.com/elifarley/shell-lib/blob/master/lib/base.sh – Elifarley

+0

Danke, ich bin am Ende und dann entschieden, Conda aus diesen Informationen zu bauen und Pakete einfacher auf diese Weise zu installieren ... – legel

Antwort

0

Versuchen cross-installer, die in einer einheitlichen Art und Weise zum Installieren von Software in der Lage sein soll, unabhängig von Betriebssystem:

# Install cross-installer 
curl -fsSL https://raw.githubusercontent.com/elifarley/cross-installer/master/install.sh | sudo sh 

# Install MongoDB 
sudo xinstall add mongodb 
+0

'mkdir: Verzeichnis kann nicht erstellt werden '/ usr/local/cross-installer': Berechtigung verweigert '(auch mit sudo) – legel

+0

Ich habe einige Fehler behoben und Debian und CentOS getestet. Vielleicht möchten Sie es erneut versuchen und wenn das nicht funktioniert, melden Sie ein Problem unter https://github.com/elifarley/cross-installer/issues, um zu vermeiden, dass Sie SO übersteuern (bitte sagen Sie, auf welchem ​​Betriebssystem es nicht funktioniert hat). – Elifarley

0

Letztendlich entschied ich mich zum ersten OS zu erkennen und Installieren Sie die entsprechende Conda-Distribution, dann installieren Sie einfach Abhängigkeiten wie bei Conda benötigt, zB

download_miniconda() { 
    echo "Downloading Miniconda for Python dependencies..." 
    OS_BIT_TYPE="$(uname -m)" 
    OS_ARCHITECTURE="$(uname -s)" 
    if [ $OS_BIT_TYPE == "i686" ]; then 
     OS_BIT_TYPE="x86" 
    fi 
    if [ $OS_ARCHITECTURE == "Darwin" ]; then 
     OS_ARCHITECTURE="MacOSX" 
    fi 

    MINICONDA_INSTALL_FILE="Miniconda2-latest-$OS_ARCHITECTURE-$OS_BIT_TYPE.sh" 
    MINICONDA_DOWNLOAD_URL="https://repo.continuum.io/miniconda/$MINICONDA_INSTALL_FILE" 
    $(curl -O $MINICONDA_DOWNLOAD_URL) 
    $(chmod +x $MINICONDA_INSTALL_FILE) 
} 

install_miniconda() { 
    echo "Installing Miniconda..." 
    echo "$(./$MINICONDA_INSTALL_FILE -b -p $HOME/miniconda)" 
    echo "$(rm $MINICONDA_INSTALL_FILE)"  
} 

confirm_miniconda_installed() { 
    if hash conda 2>/dev/null; then 
     echo "Miniconda installed!" 
    else 
     echo "Failed to install Miniconda. Please visit http://conda.pydata.org/docs/install/quick.html to install and then try rerunning this script, making sure that Miniconda is accessible in the PATH" 
    fi 
} 

update_script_startup_file() { 
    echo "if [[ \":\$PATH:\" != *\":\$HOME/miniconda/bin:\"* ]]; then" >> $STARTUP_FILE 
    echo " export PATH=\"\$PATH:\$HOME/miniconda/bin\"" >> $STARTUP_FILE 
    echo "fi" >> $STARTUP_FILE 
} 

add_miniconda_to_path() { 
    # temporary update to PATH for this script 
    export PATH="$PATH:$HOME/miniconda/bin" 

    # permanent update to PATH for user's convenience 
    if [ -n "`$SHELL -c 'echo $BASH_VERSION'`" ]; then 
     STARTUP_FILE="$HOME/.bashrc" 
     update_script_startup_file 
    elif [ -n "`$SHELL -c 'echo $ZSH_VERSION'`" ]; then 
     STARTUP_FILE="$HOME/.zshrc" 
     update_script_startup_file 
    else 
     echo "Couldn't automatically add Miniconda to the PATH of your preferred terminal. We suggest working from Bash or ZShell." 
    fi 
} 

create_conda_environment() { 
    if hash conda 2>/dev/null; then 
     CONDA_ENVIRONMENTS="$(conda env list)" 
     if [[ "$CONDA_ENVIRONMENTS" != *"words2map"* ]]; then 
      conda create --name my_mongo_environment --yes mongo 
     fi 
    fi 
} 

Natürlich können die Benutzer Mongo ändern und alle Abhängigkeiten von Conda, die über 700+ Pakete umfassen abgedeckt installieren ...

FYI dies ein Teil einer Sequenz für die words2map Bibliothek größeren Installation ist, So werden alle Updates dort reflektiert.