Rodando o PostgreSQL no WSL (Windows Subsystem for Linux)

por Marcos Koch Salvador em 01/09/2018

Algum tempo atrás a Microsoft estava trabalhando com a Canonical para permitir rodar o Ubuntu dentro do Windows sem a necessidade de virtualização. O resultado do esforço das duas empresas foi o WSL (Windows Subsystem for Linux). Com isso, você teria um Ubuntu e poderia instalar aplicações de terminal via apt-get.

Posteriormente o WSL passou a suportar mais distribuições Linux. No entanto, o WSL ainda não permitia que os softwares instalados nestas distribuições subissem um servidor socket. Ou seja, nada de usar o WSL para rodar servidores web, banco de dados, etc.

microsoft_store_linux_distro

A Microsoft liberou com o Windows 10 Fall Creators Update uma melhoria que permite o WSL rodar softwares que subam um servidor socket. Agora é possível instalar servidores dentro do WSL.

Antes de começar, certifique-se que seu Windows 10 está rodando o Fall Creators Update e possui todas as atualizações instaladas. Para habilitar o WSL e instalar uma das distros disponíveis, sugiro você assistir esse vídeo do DioLinux: https://www.youtube.com/watch?v=HSLpH43hL-o

Se a janela do Bash não estiver aberta, digite “Linux” no menu iniciar. No meu caso, eu escolhi o Debian por ser a menor distro disponível na Microsoft Store.

menu_iniciar_linux_app

Para instalar o postgres, vou usar o instalador interativo da EnterpriseDB, conforme eu descrevi no Instalação rápida do PostgreSQL no Linux. Entretanto, é possível usar método tradicional com o apt-get.

debian_install_postgres

Após a instalação, execute o comando ps aux | grep postgres para confirmar se o serviço está rodando corretamente. Se o resultado for semelhante ao da tela abaixo, tente acessar a base de dados com o PgAdmin (ou seu frontend de postgres favorito).

postgres_rodando

Ao reiniciar sua máquina, o postgres não iniciará automaticamente como aconteceria se estivesse instalado diretamente no Windows ou em um Linux tradicional. Para subir a instancia, abra novamente o Bash e digite sudo service postgresql-10 start.

linux_iniciando_postgres

Se você não souber com qual nome está instalado o serviço do postgres, basta olhar na pasta “/etc/init.d/”

debian_servicos_inicializacao