So I saw some posts on xkcd universal installer and it drove me crazy that it wasn’t done correctly…..therefore, we now have this
FYI, what if ‘two installers had packages with same name?”
[codesyntax lang=”bash”]
#!/bin/bash #=============================================================================== # # FILE: universal_installer_improved.sh # # USAGE: ./universal_installer_improved.sh 1 name # # DESCRIPTION: based on https://imgs.xkcd.com/comics/universal_install_script.png # https://xkcd.com/1654/ # OPTION 1: passes installer type # OPTION 2: passes package name, url, etc # REQUIREMENTS: --- # BUGS: --- # NOTES: --- # AUTHOR: Ed Wiget (), ed.wiget@...... # COMPANY: # VERSION: 1.0 # CREATED: 03/11/2016 11:58:15 AM EST # REVISION: --- #=============================================================================== if [ $# -ne 2 ]; then echo echo " Usage: ${0} <type> {package name[1-11], dir[13], url[14]}" echo " ie. ${0} 5 php-fpm" echo echo "types follow..........." echo echo "1 pip install" echo "2 easy_install" echo "3 brew install" echo "4 npm install" echo "5 yum install" echo "6 dnf install" echo "7 docker run" echo "8 pkg install" echo "9 apt-get install" echo "10 sudo apt-get install" echo "11 steamcmd +app_update" echo "12 git clone" echo "13 make" echo "14 curl" exit 1 fi if [ "$1" == "" ]; then echo echo "types follow..........." echo echo "1 pip install" echo "2 easy_install" echo "3 brew install" echo "4 npm install" echo "5 yum install" echo "6 dnf install" echo "7 docker run" echo "8 pkg install" echo "9 apt-get install" echo "10 sudo apt-get install" echo "11 steamcmd +app_update" echo "12 git clone" echo "13 make" echo "14 curl" echo echo "What type do you wish to use?" read ITYPE else ITYPE=$1 fi case $ITYPE in 1) CMD="pip install $2" ;; 2) CMD="easy_install $2" ;; 3) CMD="brew install $2" ;; 4) CMD="npm install $2" ;; 5) CMD="yum install $2" ;; 6) CMD="dnf install $2" ;; 7) CMD="docker run $2" ;; 8) CMD="pkg install $2" ;; 9) CMD="apt-get install $2" ;; 10) CMD="sudo apt-get install $2" ;; 11) CMD="steamcmd +app_update $2 validate" ;; 12) CMD="git clone https://github.com/$2/$2" ;; 14) CMD="cd $2; ./configure ; make ; make install" ;; 15) CMD="curl $2 | bash" ;; *) echo "Not a valid choice luser" exit ;; esac exec ${CMD}
[/codesyntax]
You might ask, does it really work? Well, it did for this test ….
[codesyntax lang=”bash”]
$ ./universal_installer_improved.sh 10 php-fpm Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: php-common php7.0-cli php7.0-common php7.0-fpm php7.0-json php7.0-opcache php7.0-readline Suggested packages: php-pear php-user-cache The following NEW packages will be installed: php-common php-fpm php7.0-cli php7.0-common php7.0-fpm php7.0-json php7.0-opcache php7.0-readline 0 upgraded, 8 newly installed, 0 to remove and 232 not upgraded. Need to get 4,895 kB of archives. After this operation, 20.4 MB of additional disk space will be used. Do you want to continue? [Y/n]
[/codesyntax]
Leave a Reply
You must be logged in to post a comment.