# Ambiente de desenvolvimento - Setup - Debian based
###### tags: `setup`
Esse documento contém os passos necessários para configurar o meu ambiente de desenvolvimento ideal.
Os comandos abaixo foram testados no Deepin 20, baseado no Debian 10 (Buster).
## fish
Instalando as dependências
```bash=
sudo apt install --yes curl git-core software-properties-common wget
```
Instalando o fish.
```bash=
sudo apt install fish
```
Alterando o shell padrão.
```bash=
chsh -s /usr/bin/fish
```
É necessário deslogar e logar novamente para valer essa configuração.
## oh-my-fish
```bash=
curl -k -L https://get.oh-my.fish | fish
```
Instalando tema `godfather`
```bash=
omf install godfather
```
## ruby-install
O [ruby-install](https://github.com/postmodern/ruby-install) é um gerenciador de versão do ruby. Ele é utilizado para instalar a biblioteca [tmuxinator](https://github.com/tmuxinator/tmuxinator).
O tmuxinator requer pelo menos a versão `2.5.8` do ruby e a versão que vem no Deepin é a `2.5.1`.
Instalar as dependências
```bash=
sudo apt install --yes build-essential
```
```bash=
wget -O ruby-install-0.7.1.tar.gz https://github.com/postmodern/ruby-install/archive/v0.7.1.tar.gz
tar -xzvf ruby-install-0.7.1.tar.gz
cd ruby-install-0.7.1/
sudo make install
```
Instalação do ruby em si.
```bash=
ruby-install ruby 2
```
## chruby
```bash=
wget -O chruby-0.3.9.tar.gz https://github.com/postmodern/chruby/archive/v0.3.9.tar.gz
tar -xzvf chruby-0.3.9.tar.gz
cd chruby-0.3.9/
sudo make install
```
## fisher - fish plugins
O [fisher](https://github.com/jorgebucaran/fisher) é um gerenciador de plugins para o fish shell.
```bash=
curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher
```
## config.fish
Criar o link para o arquivo `config.fish`.
```bash=
cd ~/.config/fish
ln -s /media/hdd/setup/config.fish config.fish
```
## chruby-fish
O chruby fish é para funcionar o chruby funcionar com o fish shell.
```bash=
wget -O chruby-fish-0.8.2.tar.gz https://github.com/JeanMertz/chruby-fish/archive/v0.8.2.tar.gz
tar -xzvf chruby-fish-0.8.2.tar.gz
cd chruby-fish-0.8.2/
sudo make install
```
Temos que adicionar essas linhas no arquivo abaixo.
```bash=
$ cat ~/.config/fish/config.fish
# chruby-fish
source /usr/local/share/chruby/chruby.fish
source /usr/local/share/chruby/auto.fish
```
## tmuxinator
```bash=
gem install tmuxinator -N
```
## tmux
```bash=
sudo apt install --yes tmux
```
Criar o link do arquivo de configuração do tmux
```bash=
cd $HOME
ln -s /media/hdd/setup/tmux.conf .tmux.conf
```
## /etc/hosts
Criar o link do arquivo /etc/hosts
```bash=
sudo mv /etc/hosts /etc/hosts.bkp
sudo ln -s /media/hdd/setup/hosts /etc/hosts
```
Não esqueça de alterar a configuração do localhost com o hostname atual.
## ssh
Criar o link da pasta .ssh
```bash=
cd $HOME
rm -rf .ssh
ln -s /media/hdd/setup/ssh .ssh
```
## openjdk
```bash=
sudo apt install --yes openjdk-8-jdk
```
## maven
```bash=
ln -s /media/hdd/backups/m2 .m2
sudo apt install maven
```
## sublime text 3
```bash=
wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
sudo apt install apt-transport-https
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
sudo apt update
sudo apt install sublime-text
```
Faça o link da pasta de configuração.
```bash=
cd ~/.config
ln -s /media/hdd/backups/config/sublime-text-3 sublime-text-3
```
## postgresql-client
Os comandos abaixo são para o deepin 20.
```bash=
# Create the file repository configuration:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt buster-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
# Import the repository signing key:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
# Update the package lists:
sudo apt update
# Install the latest version of PostgreSQL.
# If you want a specific version, use 'postgresql-client-12' or similar instead of 'postgresql-client':
sudo apt install postgresql-client
```
## docker
```bash=
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
sudo apt install docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $USER
```
Após a instalação, geralmente é necessário alterar o diretório root do docker para que fique em um HD/partição com mais espaço. Veja o exemplo abaixo e altere a propriedade `data-root` de acordo com o desejado.
O arquivo é o /etc/docker/daemon.json.
```json=
{
"exec-opts": ["native.cgroupdriver=systemd"],
"storage-driver": "overlay2",
"data-root": "/media/hdd/docker"
}
```
É necessário reiniciar o docker para aplicar as alterações.
```bash=
sudo service docker restart
```
## nvm
Gerenciador de [versões do node](https://github.com/nvm-sh/nvm).
```bash=
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
```
## nvm fish
[nvm.fish](https://github.com/jorgebucaran/nvm.fish)
```bash=
fisher install jorgebucaran/nvm.fish
```
## node
Instalando o node com o nvm.
```bash=
nvm install v12
```
## goproxy
```bash=
docker run --name goproxy \
-p 3005:3000 \
-v /media/hdd/trabalho2/gogeo/ferramentas/goproxy/ssh:/root/.ssh \
-v /media/hdd/trabalho2/gogeo/ferramentas/goproxy/gitconfig:/root/.gitconfig \
-v /media/hdd/docker-athens:/data \
-e ATHENS_LOG_LEVEL=debug \
-e ATHENS_STORAGE_TYPE=disk \
-e ATHENS_DISK_STORAGE_ROOT=/data \
-e GONOSUMDB="gitlab.com/*,gopkg.in/*" \
-e GOPRIVATE=gitlab.com/geointdw,gitlab.com/gogeo-io,github.com/oleiade/reflections \
--restart unless-stopped \
-dit gomods/athens:v0.11.0
```
## sqlserver
```bash=
docker run \
--name sqlserver \
-e 'ACCEPT_EULA=Y' \
-e 'SA_PASSWORD=roberto!@#123' \
-e 'MSSQL_PID=Express' \
-p 1433:1433 \
-dit mcr.microsoft.com/mssql/server:2019-CU10-ubuntu-20.04
```
