Este script automatiza a configuração de um ambiente de desenvolvimento no WSL (Windows Subsystem for Linux) com Debian/Ubuntu, oferecendo instalação de ferramentas de desenvolvimento, servidores, e utilitários essenciais.
O script inicia com a linha set -euo pipefail, que é uma configuração crucial para tornar o script mais robusto e seguro:
- set -e (errexit): Faz o script parar imediatamente se qualquer comando retornar código de erro diferente de zero
- set -u (nounset): Trata variáveis não definidas como erro, evitando bugs silenciosos
- set -o pipefail: Em pipelines (cmd1 | cmd2), considera o código de saída do primeiro comando que falhar, não apenas do último
# Sem pipefail:
false | true # Retorna 0 (sucesso) - apenas considera o 'true'
# Com pipefail:
false | true # Retorna 1 (erro) - considera o 'false' que falhouEsta configuração garante que erros não passem despercebidos e o script pare em situações problemáticas, tornando-o mais confiável.
- Timezone: America/Sao_Paulo
- Locale: pt_BR.UTF-8
- Frontend: Não-interativo para instalações automáticas
- Logging: Todas as operações são registradas em /var/log/postinstall-menu.log
- Detecta automaticamente se está rodando no WSL
- Ajusta comportamento baseado no ambiente (ex: systemd no WSL)
- Verifica privilégios de root antes de executar
- Interface visual com whiptail (menus, checkboxes, progress bars)
- Barras de progresso para operações longas
- Mensagens coloridas no terminal:
- 🟢 [INFO]: Informações gerais
- 🟡 [WARN]: Avisos importantes
- 🔴 [ERR]: Erros críticos
- Java: OpenJDK 17/21 + Maven/Gradle
- Node.js: Versões 18/20/22 + pnpm/yarn + CLIs úteis
- Go: Última versão com configuração de GOPATH
- Python: Python3 + pip + venv + ferramentas de desenvolvimento
- Rust: rustup + rustfmt + clippy
- PHP: PHP 8.2 + extensões + Composer
- PostgreSQL: Versões 14/15/16/17 com cliente
- Redis: Servidor e cliente
- MySQL: Cliente
- SQLite: Cliente
- Nginx: Com Certbot para SSL
- Docker: Engine completo (com aviso sobre Docker Desktop)
- Kubernetes: kubectl, helm, k9s
- Build Tools: make, cmake, ninja-build
- Containers: podman, podman-compose
- CLI Básico: bash-completion, fzf, ripgrep, tmux, htop, vim
- CLI Avançado: bat, eza, neovim, micro, neofetch, btop
- Utilitários: jq, yq, httpie, GitHub CLI (gh)
- Shell: Zsh + oh-my-zsh
- Diagnóstico: iproute2, dnsutils, nmap, tcpdump, traceroute
- SSH/GPG: openssh-client, keychain, gnupg-agent
- Firewall: ufw, fail2ban (apenas fora do WSL)
- Backup: rclone, restic, duplicity, borgbackup
- Diversão: lolcat, figlet, cowsay
- WSL com Debian ou Ubuntu
- Acesso de root/sudo
# Torne o script executável
chmod +x wsl-setup-debian.sh
# Execute com privilégios de root
sudo ./wsl-setup-debian.sh
# Execute dessa forma
sudo -E bash ./wsl-setup-debian.sh- Dev Web: Node.js + PHP + PostgreSQL + Redis + ferramentas QoL
- Dev Go: Go + PostgreSQL + Redis + ferramentas QoL
- Dev Python: Python + PostgreSQL + Redis + ferramentas QoL
- SysAdmin: Nginx + Docker + ferramentas DevOps + segurança
- Full: Instalação completa de quase todas as ferramentas
Interface checkbox que permite selecionar exatamente quais ferramentas instalar.
Sistema completo de desinstalação com limpeza de dependências e dados.
- Captura erros e mostra linha onde ocorreu
- Redirecionamento de saída para log
- Função trap para controle de erros
- cmd_exists(): Verifica se comando existe
- append_once(): Adiciona linha única em arquivos
- is_wsl(): Detecta ambiente WSL
- Funções de gauge: Barras de progresso visuais
- Verifica se ferramentas já estão instaladas
- Adiciona repositórios oficiais quando necessário
- Configura variáveis de ambiente automaticamente
- Limpa cache e dependências não utilizadas
- Detecta limitações do WSL (systemd, serviços)
- Oferece alternativas quando necessário
- Avisos específicos para Docker Desktop vs Docker Engine
Todas as operações são registradas em /var/log/postinstall-menu.log incluindo:
- Timestamps de todas as operações
- Saídas de comandos de instalação
- Erros e warnings
- Progresso das operações
O script detecta WSL e recomenda usar Docker Desktop com integração WSL ao invés do Docker Engine nativo.
Para habilitar systemd no WSL, edite /etc/wsl.conf:
[boot]
systemd=true
Depois execute wsl --shutdown no Windows e reinicie a distro.
Antes de usar a funcionalidade de remoção, faça backup de suas configurações importantes, pois algumas remoções são irreversíveis.
Versão atual: 2.3
O script é continuamente atualizado com novas ferramentas e melhorias. Verifique regularmente por atualizações.
Para melhorias ou correções, edite o script diretamente ou sugira modificações. O código é modular e facilmente extensível.
Este script foi projetado para facilitar a configuração de ambientes de desenvolvimento no WSL, economizando tempo e garantindo instalações consistentes.