Skip to content
Snippets Groups Projects
Commit e93aa8ea authored by Gabriel Olescki's avatar Gabriel Olescki
Browse files

Atualizando, fazendo um script para várias distros

parent 3b76f5c7
No related branches found
No related tags found
No related merge requests found
Pipeline #
# CONTRIBUIÇÕES
Adicione pacotes que não tenham sido lembrados aqui e outros pacotes opcionais.
Para distribuições baseadas no debian, altere o arquivo debian-based/packages.txt seguindo o padrão "regra: pacote1 pacote2".
Para distribuições baseadas do arch, altere o arquivo arch-based/Makefile criando uma novo regra e inserindo o comando de instalação com os pacotes.
......@@ -4,27 +4,28 @@
Comando simples com os pacotes essenciais de uma máquina do PET Computação.
## Uso
Após formatar uma máquina, baixe o makefile de acordo com gerenciador de pacotes da sua distribuição linux. Instale o [make](https://www.gnu.org/software/make/) e execute as regras que contenham os pacotes de sua preferência.
Após formatar uma máquina, baixe o *script* e execute as regras que contenham os pacotes de sua preferência.
**Instale:**
# Contribuições
Adicione pacotes que não tenham sido lembrados no arquivo *packages.txt* e outros pacotes opcionais.
Para adicionar um pacote a ser instalado, escreva o nome do pacote e todos os pacotes relacionados.
### Exemplo
Debian based
```
wget https://gitlab.c3sl.ufpr.br/pet/Install/raw/master/debian-based/install.sh
./install.sh -f
ssh:openssh-client openssh-server
```
Arch based
`wget https://gitlab.c3sl.ufpr.br/pet/Install/raw/master/arch-based/Makefile; make`
### Instale
### Exemplo
```
wget https://gitlab.c3sl.ufpr.br/pet/Install/raw/master/install.sh
./install.sh -f
```
**Debian based**
### Exemplo
`./install.sh --fresh-install`
`./install.sh editors ruby ssh`
**Arch based**
`make fresh-install`
`make editors`
fresh-install: update install
update:
sudo pacman -Syu
install: ssh php mysql php-mysql ruby nodejs git editors openjdk xchm latex
ssh:
sudo pacman -S openssh
php:
sudo pacman -S php php-apache
mysql:
sudo pacman -S mysql
php-mysql: php mysql
ruby:
sudo pacman -S ruby
nodejs:
sudo pacman -S nodejs npm
git:
sudo pacman -S git
editors:
sudo pacman -S vim gedit
openjdk:
sudo pacman -S jdk7-openjdk
flash:
sudo pacman -S flashplugin
xchm:
sudo pacman -S xchm
latex:
sudo pacman -S texlive-full kile
#!/bin/bash
PACKAGES=
RUBY_VERSION=2.3.0
ABSOLUTE_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
#Checa se o usuário é root
if [[ $EUID -ne 0 ]]
then
ROOT="sudo"
else
ROOT=
fi
#Ruby precisa de uma função especial para ser instalado através do RVM
function ruby {
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -sSL https://get.rvm.io | bash -s stable
source $HOME/.rvm/scripts/rvm
rvm install $RUBY_VERSION
}
function update {
$(echo "$ROOT apt-get update")
$(echo "$ROOT apt-get upgrade -y")
}
#Instala todos os pacotes no arquivo packages
function install {
PACKAGES=$(cat "$ABSOLUTE_PATH/packages.txt" | cut -d: -f2 | tr '\r\n' ' ')
}
function fresh-install {
update
install
$(echo "$ROOT apt-get install -y $PACKAGES")
}
function list {
cat "$ABSOLUTE_PATH/packages.txt" | tr ':' '\t'
}
function help {
echo "$(basename "$0") [-f|--fresh-install] [-h|--help] [-l|--list] (pacotes) -- Utilize para instalar pacotes na sua máquina"
echo
echo "onde:"
echo " -h mostra a ajuda e sai"
echo " -f instala todos os pacotes da lista"
echo " -l lista os pacotes disponíveis"
echo "exemplo de uso:"
echo " $(basename "$0") php mysql ruby"
echo "AVISO: por padrão, o ruby não é instalado. Para instalar, execute $(basename "$0") ruby"
}
#Se o arquivo não existe, o script cria
if [ ! -f "$ABSOLUTE_PATH/packages.txt" ]
then
packages="ssh:openssh-client openssh-server\n"
packages="${packages}php:php5 php5-mysql php5-pgsql php5-sqlite\n"
packages="${packages}mysql:mysql-client mysql-server\n"
packages="${packages}nodejs:nodejs npm\n"
packages="${packages}git:git\n"
packages="${packages}editors:vim gedit\n"
packages="${packages}openjdk:openjdk-7-jre openjdk-7-jdk default-jdk default-jre\n"
packages="${packages}xchm:xchm\n"
packages="${packages}latex:texlive-full kile\n"
packages="${packages}curl:curl\n"
packages="${packages}make:make\n"
echo -e $packages > "$ABSOLUTE_PATH/packages.txt"
fi
while [[ $# > 0 ]]
do
key="$1"
case $key in
-f|--fresh-install)
fresh-install
exit 0
;;
-h|--help)
help
exit 0
;;
-l|--list)
list
exit 0
;;
ruby)
ruby
;;
*)
#concatena na lista de pacotes as regras passadas por parâmetro
PACKAGES="$(cat "$ABSOLUTE_PATH/packages.txt" | grep $key | cut -d: -f2) $PACKAGES"
;;
esac
shift
done
#Checa se a string não está vazia
if [ ! -z "${PACKAGES// }" ]
then
$(echo "$ROOT apt-get install -y $PACKAGES")
else
help
fi
ssh:openssh-client openssh-server
php:php5 php5-mysql php5-pgsql php5-sqlite
mysql:mysql-client mysql-server
nodejs:nodejs npm
git:git
editors:vim gedit
openjdk:openjdk-7-jre openjdk-7-jdk default-jdk default-jre
xchm:xchm
latex:texlive-full kile
curl:curl
make:make
ssh:openssh openssh-server
php:php php-mysql php-pgsql
mysql:mysql
nodejs:nodejs npm
git:git
editors:vim gedit
openjdk:java-1.8.0-openjdk
xchm:xchm
latex:texlive kile
curl:curl
make:make
\ No newline at end of file
......@@ -12,6 +12,20 @@ else
ROOT=
fi
#Descobre a distribuição
declare -A osInfo;
osInfo[/etc/redhat-release]=dnf
osInfo[/etc/arch-release]=pacman
osInfo[/etc/SuSE-release]=zypper
osInfo[/etc/debian_version]=apt-get
for f in ${!osInfo[@]}
do
if [[ -f $f ]];then
DISTRO=${osInfo[$f]}
fi
done
#Ruby precisa de uma função especial para ser instalado através do RVM
function ruby {
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
......@@ -21,8 +35,8 @@ function ruby {
}
function update {
$(echo "$ROOT dnf update")
$(echo "$ROOT dnf upgrade -y")
$(echo "$ROOT $DISTRO update")
$(echo "$ROOT $DISTRO upgrade -y")
}
#Instala todos os pacotes no arquivo packages
......@@ -33,7 +47,7 @@ function install {
function fresh-install {
update
install
$(echo "$ROOT dnf install -y $PACKAGES")
$(echo "$ROOT apt-get install -y $PACKAGES")
}
function list {
......@@ -52,23 +66,14 @@ function help {
echo "AVISO: por padrão, o ruby não é instalado. Para instalar, execute $(basename "$0") ruby"
}
#Se o arquivo não existe, o script cria
#Se o arquivo não existe
if [ ! -f "$ABSOLUTE_PATH/packages.txt" ]
then
packages="ssh:openssh openssh-server\n"
packages="${packages}php:php php-mysql php-pgsql\n"
packages="${packages}mysql:mysql\n"
packages="${packages}nodejs:nodejs npm\n"
packages="${packages}git:git\n"
packages="${packages}editors:vim gedit\n"
packages="${packages}openjdk:java-1.8.0-openjdk\n"
packages="${packages}xchm:xchm\n"
packages="${packages}latex:texlive kile\n"
packages="${packages}curl:curl\n"
packages="${packages}make:make\n"
echo -e $packages > "$ABSOLUTE_PATH/packages.txt"
echo "AVISO: Lista de pacotes não encontrada! Adicione no mesmo diretório deste script o arquivo packages.txt."
exit 0
fi
while [[ $# > 0 ]]
do
key="$1"
......@@ -95,10 +100,11 @@ do
esac
shift
done
#Checa se a string não está vazia
if [ ! -z "${PACKAGES// }" ]
then
$(echo "$ROOT dnf install -y $PACKAGES")
$(echo "$ROOT $DISTRO install -y $PACKAGES")
else
help
fi
ssh:openssh-client openssh-server php:php5 php5-mysql php5-pgsql php5-sqlite mysql:mysql-client mysql-server nodejs:nodejs npm git:git editors:vim gedit openjdk:openjdk-7-jre openjdk-7-jdk default-jdk default-jre flash:pepperflashplugin-nonfree xchm:xchm latex:texlive-full kile curl:curl make:make
ssh:openssh-client openssh-server
php:php php-mysql php-pgsql
mysql:mysql-client mysql-server
nodejs:nodejs npm
git:git
editors:vim gedit
xchm:xchm
latex:texlive-full kile
curl:curl
make:make
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment