• Início
  • Conhecimento básico
  • Ferramentas
  • Criando Mapas Interativos
  • Geoprocessamento
  • Módulo I - Preparando o seu ambiente de programação.

    Um servidor/sistema que gera mapas interativos depende dos fatores abaixo:

  • O Servidor em si - de preferência em ambiente Linux.
  • Um servidor de páginas web - aqui usamos Go como servidor e backend (processos no servidor).
  • Um banco de dados PostgreSQL com a extensão Postgis.
  • Leaflet javaScript que será o nosso frontend (processos no computador de quem acessa).

    Na ilustração abaixo vemos um sistema semelhante, onde a esquerda são os usuários que visualizam ou interagem com os dados via internet (no meio) com os dados do servidor mais o banco de dados (na direita).

    Aqui nestes tutoriais vamos montar o servidor, o banco de dados e acessar como cliente em um único desktop ou laptop. Vamos por etapas cobrindo os conceitos básicos de Linux e depois como instalar as ferramentas que iremos utilizar. Caso já tenha conhecimento de Linux, ja tenha Go e PostgreSQL com o Postgis instalados, você pode pular para o próximo tópico.

  • Parte 1 - O Linux - Conhecimento base

    Usaremos o programa "Terminal" em um sistema Ubuntu para aprender a usar os comandos básicos e essenciais do linux.

    O programa terminal pode ser executado a partir do ícone da barra de favoritos. Alternativamente podemos abrir clicando com o botão direito do mouse na tela principal e selecionando terminal na listagem de menu.

    A tela do terminal é mostrada abaixo:

    O Sinal '$', conhecido como prompt, indica que o usuário não é o usuário 'root'. O usuário 'root' seria representado pelo prompt '#'.

    Mas o que vem a ser o usuário 'root'?

    O 'root' é o super usuário do sistema que pode ter acesso a todos os arquivos do sistema e mudar configurações em todo o sistema. Sendo assim usar o computador como 'root' é bastante arriscado e pode comprometer o sistema se usado de forma errada.

    Desta forma, vamos na maioria do tempo usar o sistema como um usuário comum mas com poderes de super usuário.

    Para usarmos um comando que modificará o sistema ou que vai alterar um arquivo que não somos dono temos ter usar a prerrogativa 'sudo' (abreviação para 'super user do' ou 'feito pelo super usuário') e confirmarmos com a senha de usuário para termos esse privilégio. Isso previne bastante o risco de mudarmos o que não queremos.

    Regra número 1 - Nunca use 'sudo', ao menos se você tenha absoluta certeza do que está fazendo, por exemplo instalando um programa no sistema.

    Vamos agora iniciar o aprendizado dos comandos.

    No Terminal, conforme falamos acima, temos o prompt e aqui ele é representado por você@seu.computador:~$. Digite somente o que vem depois dessa parte.

    No Unix e no Linux os comandos possuem o seguinte formato:

    comando -[opções] [argumento]

    Comandos de navegação nos diretórios (ou pastas)

  • ls
  • O comando ls lista o conteúdo da pasta corrente.

    você@seu.computador:~$ ls
     Android                 Modelos
     AndroidStudioProjects   Música
    'Área de Trabalho'       Público
     Documentos              swift-4.2.1-RELEASE-ubuntu18.04.tar.gz
     Downloads               ubuntando.odt
     examples.desktop        Vídeos
     Imagens                 xAndre

    Com a opção -l lista no formato longo que dá mais informações sobre cada arquivo ou sub pastas nesta pasta.
    Lista o tamanho dos arquivos na pasta na primeira linha e depois a seguinte informação de cada subpasta ou arquivo:
    permissões, níveis de subdiretórios, dono, grupo, tamanho, data de criação co horário, nome.

    você@seu.computador:~$ ls -l
    total 214504
    drwxr-xr-x 3 andre andre      4096 mai  4 15:07  Android
    drwxr-xr-x 3 andre andre      4096 mai  4 15:12  AndroidStudioProjects
    drwxr-xr-x 2 andre andre      4096 abr 28 06:02 'Área de Trabalho'
    drwxr-xr-x 2 andre andre      4096 abr 28 06:02  Documentos
    drwxr-xr-x 2 andre andre      4096 mai  4 16:57  Downloads
    -rw-r--r-- 1 andre andre      8980 abr 28 05:55  examples.desktop
    drwxr-xr-x 3 andre andre      4096 mai  4 13:11  Imagens
    drwxr-xr-x 2 andre andre      4096 abr 28 06:02  Modelos
    drwxr-xr-x 2 andre andre      4096 abr 28 06:02  Música
    drwxr-xr-x 2 andre andre      4096 abr 28 06:02  Público
    -rw-r--r-- 1 andre andre 219569359 out 31  2018  swift-4.2.1-RELEASE-ubuntu18.04.tar.gz
    -rw-rw-r-- 1 andre andre     18288 abr 28 20:45  ubuntando.odt
    drwxr-xr-x 2 andre andre      4096 abr 28 06:02  Vídeos
    drwxr-xr-x 5 andre andre      4096 abr 28 08:59  xAndre

    Com a opção -a lista os arquivos ocultos (que no Linux geralmente começam com '.')

    você@seu.computador:~$ ls -a
     .                       Imagens
     ..                      .java
     .android                .lldb
     Android                 .local
     .AndroidStudio3.4       .macromedia
     AndroidStudioProjects   Modelos
    'Área de Trabalho'       .mozilla
     .bash_history           Música
     .bash_logout            .profile
     .bashrc                 .psql_history
     .cache                  Público
     .config                 .python_history
     .dbus                   .ssh
     Documentos              .sudo_as_admin_successful
     Downloads               swift-4.2.1-RELEASE-ubuntu18.04.tar.gz
     examples.desktop        ubuntando.odt
     .gnupg                  Vídeos
     .gradle                 .wget-hsts
     .ICEauthority           xAndre

    Usar argumentos para filtrar os resultados pode ser bastante útil. Podemos usar 'wildcards' ou caracteres coringas. O caractere coringa pode ser o '*' ou o '?'. O '*' representa qualquer caractere quantas vezes eles existirem e '?' representa qualquer caractere somente uma vez. Já '??' representa qualquer caractere duas vezes e assim por diante.

    Veja abaixo alguns exemplos de uso do caractere coringa:

    você@seu.computador:~$ ls
    andre1.txt    andre34.txt   andre843.txt  jose2.png  jose843.txt
    andre2.txt    andre3.txt    jose1.png     jose2.txt
    andre343.txt  andre843.png  jose1.txt     jose3.txt
    você@seu.computador:~$ ls andre*
    andre1.txt  andre343.txt  andre3.txt    andre843.txt
    andre2.txt  andre34.txt   andre843.png
    você@seu.computador:~$ ls jose*
    jose1.png  jose1.txt  jose2.png  jose2.txt  jose3.txt  jose843.txt
    você@seu.computador:~$ ls jose?.txt
    jose1.txt  jose2.txt  jose3.txt
    você@seu.computador:~$ ls jose?.*
    jose1.png  jose1.txt  jose2.png  jose2.txt  jose3.txt
    você@seu.computador:~$ ls andre???.txt
    andre343.txt  andre843.txt
    você@seu.computador:~$ ls andre???.*
    andre343.txt  andre843.png  andre843.txt
    você@seu.computador:~$ ls *e?.txt
    andre1.txt  andre2.txt  andre3.txt  jose1.txt  jose2.txt  jose3.txt
    
  • pwd
  • O comando pwd informa em qual pasta estamos.

    você@seu.computador:~$ pwd
    /home/andre
  • cd
  • O comando cd (change directory) muda para a pasta informada no argumento. Se usarmos o argumento .. movemos uma pasta acima, se usarmos o argumento ~ movemos para a pasta home do usuário e se usarmos / como argumento vamos para o diretório raiz do computador.

    você@seu.computador:~$ cd ..
    você@seu.computador:/home$ pwd
    /home
    você@seu.computador:/home$ cd /
    você@seu.computador:/$> pwd
    /
    você@seu.computador:/$ cd ~ 
    você@seu.computador:~$ pwd
    /home/andre
    você@seu.computador:~$ cd /usr/bin
    você@seu.computador:/usr/bin$ pwd
    /usr/bin
    você@seu.computador:/usr/bin$ cd ~
    você@seu.computador:~$ pwd
    /home/andre

    Comandos de manuais e informaçãos sobre comandos

  • man
  • O comando man gera um manual de ajuda sobre o comando passado como argumento.

    Execute o comando abaixo e navegue usando as setas para cima e para baixo, para sair aperte a tecla 'q':

    você@seu.computador:~$ man ls

    Caso a página esteja em inglês vamos mudar para o português conforme abaixo

    você@seu.computador:~$ sudo apt-get install language-pack-br
    você@seu.computador:~$ sudo apt-get install manpages-pt
    você@seu.computador:~$ LANG=pt_BR.UTF-8

    Agora tente novamente e a página deve estar em português

    você@seu.computador:~$ man ls
    LS(1)                       General Commands Manual                      LS(1)
    
    NOME
           ls, dir, vdir - lista o conteúdo do diretório
    
    SINOPSE
           ls [opções] [arquivo...]
           dir [arquivo...]
           vdir [arquivo...]
    
           Opções POSIX: [-CFRacdilqrtu1]
    
           Opções  GNU  (forma reduzida): [-1abcdfghiklmnopqrstuvwxABCDFGHLNQRSUX]
           [-w    coluna]    [-T     coluna]     [-I     modelo]     [--full-time]
           [--show-control-chars]                              [--block-size=size]
           [--format={long,verbose,commas,across,vertical,single-column}]
           [--sort={none,time,size,extension}]
           [--time={atime,access,use,ctime,status}] [--color[={none,auto,always}]]
           [--help] [--version] [--]
    
    DESCRIÇÃO
           O  programa  ls  lista  primeiramente  seus  argumentos  que  não sejam
    

    Como podemos ver, existem muitas outras opções para serem usadas com o comando ls. Vimos apenas as mais usadas e faremos o mesmo pra os outros comandos, use o 'man' para aprender mais sobre os comandos.

    Infelizmente nem todos manuais estão em português.

  • info
  • O comando info gera informação mais detalhada de comandos e programas instalados no computador. O problema é que a maioria da informação está em inglês.

    você@seu.computador:~$info pwd
    19.1 ‘pwd’: Print working directory
    ===================================
    
    ‘pwd’ prints the name of the current directory.  Synopsis:
    
         pwd [OPTION]...
    
       The program accepts the following options.  Also see *note Common
    options::.
    
    ‘-L’
    ‘--logical’
         If the contents of the environment variable ‘PWD’ provide an
         absolute name of the current directory with no ‘.’ or ‘..’
         components, but possibly with symbolic links, then output those
         contents.  Otherwise, fall back to default ‘-P’ handling.
    
    ‘-P’
    ‘--physical’
    
  • whatis
  • O comando whatis retorna uma descrição do que o comando faz retornando somente um resultado que é exatamente o comando passado no argumento.

    você@seu.computador:~$ whatis unzip
    unzip (1)            - list, test and extract compressed files in a ZIP archive
  • apropos
  • O comando apropos pesquisa os comandos que incluam o argumento pesquisado, seja no nome do comando ou na descrição do que ele é.

    você@seu.computador:~$ apropos unzip
    bunzip2 (1)          - a block-sorting file compressor, v1.0.6
    funzip (1)           - filter for extracting from a ZIP archive in a pipe
    gunzip (1)           - compress or expand files
    lz (1)               - gunzips and shows a listing of a gzip'd tar'd archive
    PerlIO::gzip (3pm)   - Perl extension to provide a PerlIO layer to gzip/gunzip
    preunzip (1)         - prefix delta compressor for Aspell
    unzip (1)            - list, test and extract compressed files in a ZIP archive
    unzipsfx (1)         - self-extracting stub for prepending to ZIP archives
    uz (1)               - gunzips and extracts a gzip'd tar'd archive

    Comandos de visualização e informação sobre arquivos

    Os comandos aqui mostrados são úteis para se obter informações sobre um determinado arquivo. Vamos supor que temos um arquivo texto chamado 'arqui.txt' com a seguinte linha: 'oi, sou texto mano!'

  • file
  • O comando file retorna informações sobre o arquivo passado como argumento.

    você@seu.computador:~$ file arqui.txt
    arqui.txt: ASCII text
  • cat
  • O comando cat retorna o conteúdo do arquivo passado como argumento.

    você@seu.computador:~$ cat arqui.txt
    oi, sou texto mano!

    Comandos de copia, renomeação, remoção e movimentação de arquivos

    Os comandos que veremos agora servem para copiar, remover e mover (ou renomear) arquivos e pastas. Muita atenção deve ser dada quando usando o comando rm pois se trata de uma operação irreversível.

  • cp
  • O comando cp copia um arquivo (ou diretório) de uma localidade (pasta) para outra. O formato é:
    cp opções fonte destino

    Nesse exemplo copiaremos o arquivo arqui.txt que está no nosso diretório home para dentro da pasta Documentos também localizada no diretório home.

    você@seu.computador:~$ cp arqui.txt Documentos/

    Vamos agora usar cd para ir ao diretório Documentos e usar ls para verificar se o arquivo foi copiado nele.

    você@seu.computador:~$ cd Documentos
    você@seu.computador:~/Documentos$ ls
    arqui.txt

    Podemos copiar de forma recursiva, ou seja, uma pasta inteira com sub pastas de uma localidade para outra usando a opção -R.

    Por exemplo, copiando a pasta Documentos para a pasta Música.

    você@seu.computador:~/Documentos$ cd ..
    você@seu.computador:~$ cp -R Documentos Música/
    você@seu.computador:~$ cd Música
    você@seu.computador:~/Música$ ls
    Brazilian-Songbook-Online-popular-1.pdf
    Brazilian-Songbook-Online-popular-2.pdf
    Brazilian-Songbook-Online-popular-3.pdf
    Documentos
    você@seu.computador:~/Música$ cd Documentos
    você@seu.computador:~/Música/Documentos$ ls
    arqui.txt

  • rm
  • Vamos mostrar como usar o comando rm. Muito cuidado para saber direito o que estamos fazendo, primeiro vamos voltar uma pasta acima para o diretório Música e ai vamos remover o Diretório Documentos de forma recursiva usando a opção -R.

    você@seu.computador:~/Música/Documentos$ cd ..
    você@seu.computador:~/Música$ rm -R Documentos
    você@seu.computador:~/Música$ ls
    Brazilian-Songbook-Online-popular-1.pdf
    Brazilian-Songbook-Online-popular-2.pdf
    Brazilian-Songbook-Online-popular-3.pdf

    Agora vamos subir novamente para o diretório home e remover o arquivo arqui.txt.

    você@seu.computador:~/Música$ cd ..
    você@seu.computador:~$ rm arqui.txt
    você@seu.computador:~$ ls
    Android                 Modelos
     AndroidStudioProjects   Música
    'Área de Trabalho'       Público
     Documentos              swift-4.2.1-RELEASE-ubuntu18.04.tar.gz
     Downloads               ubuntando.odt
     examples.desktop        Vídeos
     Imagens                 xAndre

    Novamente, muito cuidado ao usar rm, evite usar -R e caracteres coringa. Usar um comando tipo rm -R * pode causar um grande estrago irreversível que irá apagar todos os arquivo e pastas daquele diretório.

  • mv
  • O comando mv pode ser usado tanto para renomear como para mover um arquivo ou pasta.

    Vamos mover o arquivo arqui.txt que copiamos no diretório Documentos para o diretório home usando mv.

    você@seu.computador:~$ cd Documentos
    você@seu.computador:~/Documentos$ ls
    arqui.txt
    você@seu.computador:~$ mv arqui.txt ~/
    você@seu.computador:~/Documentos$ ls
    você@seu.computador:~/Documentos$ cd ..
    você@seu.computador:~$ ls
    Android                 Modelos
     AndroidStudioProjects   Música
    'Área de Trabalho'       Público
     arqui.txt               swift-4.2.1-RELEASE-ubuntu18.04.tar.gz
     Documentos              ubuntando.odt
     Downloads               Vídeos
     examples.desktop        xAndre
     Imagens

    Vamos agora renomear o arquivo arqui.txt para novo.txt usando mv e usar cat para mostrar que o conteúdo do arquivo permanece o mesmo.

    você@seu.computador:~$ mv arqui.txt novo.txt
    você@seu.computador:~$ ls
    Android                 Música
     AndroidStudioProjects   novo.txt
    'Área de Trabalho'       Público
     Documentos              swift-4.2.1-RELEASE-ubuntu18.04.tar.gz
     Downloads               ubuntando.odt
     examples.desktop        Vídeos
     Imagens                 xAndre
     Modelos
    você@seu.computador:~$ cat novo.txt
    oi, sou texto mano!

    Comandos de criação de arquivos e diretórios.

    Vamos ver agora dois comandos que servem para criar arquivo vazio ou uma nova pasta.

  • touch
  • O comando touch cria um arquivo vazio com o nome dado no argumento.

    você@seu.computador:~$ touch teste.txt
    você@seu.computador:~$ ls
     Android                 Imagens                                  teste.txt
     AndroidStudioProjects   Modelos                                  ubuntando.odt
    'Área de Trabalho'       Música                                   Vídeos
     Documentos              novo.txt                                 xAndre
     Downloads               Público
     examples.desktop        swift-4.2.1-RELEASE-ubuntu18.04.tar.gz
  • mkdir
  • O comando mkdir cria um novo diretório com nome e localidade indicada no argumento

    você@seu.computador:~$ mkdir Documentos/novo_dir
    você@seu.computador:~$ cd Documentos
    você@seu.computador:~/Documentos$ ls
    novo_dir

    Comandos de saída do terminal.

  • exit ou logout
  • O comando exit ou logout, como o próprio nome diz efetua a saída do usuário do terminal (fecha o terminal e/ou termina a conexão).

    você@seu.computador:~$ exit

    O terminal foi fechado.

    Vimos os comandos básicos do linux, são poucos mas são os básicos que te atenderam a maior parte do tempo. Seja curioso e tente apreender novos comandos e novas opções dos comandos que você aprendeu usando 'man'. A seguir veremos outros comandos importantes e os conceitos de pipe e redireção.

    Nesta parte veremos como é feito o redirecionamento de resultados de comandos. Comandos geralmente mostram seus resultados na tela, este é o padrão, mas podemos direcionar o resultado para um arquivo novo ou para o final de um arquivo já existente. Também podemos direcionar o resultado de um comando como a entrada de um outro comando.

    Veremos abaixo como fazer isso:

  • >
  • O '>' redireciona o resultado para um arquivo novo. Por exemplo, podemos listar um diretório dentro de um arquivo que chamaremos de lista.txt usando:

    você@seu.computador:~$ ls > lista.txt

    e podemos ler o conteúdo deste arquivo usando o comando cat:

    você@seu.computador:~$ cat lista.txt
    cartões de festa.txt
    compras.pdf
    lista.txt
    recibo.pdf 
  • >>
  • O Comando '>>' adiciona, no final de um arquivo existente, o resultado de um comando. Por exemplo, se listarmos o diretório novamente usando '>>' o resultado será adicionado no fim do arquivo, se esse arquivo não existir um novo será criado.

    você@seu.computador:~$ ls >> lista.txt

    e novamente podemos ler o conteúdo deste arquivo usando cat:

    você@seu.computador:~$ cat lista.txt
    cartões de festa.txt
    compras.pdf
    lista.txt
    recibo.pdf
    cartões de festa.txt
    compras.pdf
    lista.txt
    recibo.pdf
  • |
  • O '|' também conhecido como pipe redireciona o resultado de um comando para outro comando. Por exemplo, se listarmos todos os arquivos do diretório dev do linux não poderíamos ver todo o conteúdo numa só tela e somente a listagem final seria vista, mas direcionando o resultado usando '|' para o comando 'more' uma página por vez seria mostrada e, ao pressionar a barra de espaço, a próxima página seria mostrada e assim por diante até chegar ao final da listagem.

    você@seu.computador:~$ ls -la /dev | more
    total 16
    drwxr-xr-x. 21 root   root        3480 Mai  9 11:37 .
    dr-xr-xr-x. 17 root   root       12288 Mai  9 11:38 ..
    crw-------.  1 root   root     10, 235 Mai  9 11:37 autofs
    drwxr-xr-x.  2 root   root         300 Mai  9 11:37 block
    drwxr-xr-x.  2 root   root          80 Mai  9 07:37 bsg
    crw-------.  1 root   root     10, 234 Mai  9 11:37 btrfs-control
    drwxr-xr-x.  3 root   root          60 Mai  9 07:36 bus
    lrwxrwxrwx.  1 root   root           3 Mai  9 11:37 cdrom -> sr0
    drwxr-xr-x.  2 root   root         100 Mai  9 11:37 centos
    drwxr-xr-x.  2 root   root        3360 Mai 15 06:35 char
    crw-------.  1 root   root      5,   1 Mai  9 11:37 console
    lrwxrwxrwx.  1 root   root          11 Mai  9 07:37 core -> /proc/kcore
    drwxr-xr-x.  6 root   root         140 Mai  9 07:36 cpu
    crw-------.  1 root   root     10,  61 Mai  9 11:37 cpu_dma_latency
    crw-------.  1 root   root     10,  62 Mai  9 11:37 crash
    drwxr-xr-x.  8 root   root         160 Mai  9 07:37 disk
    brw-rw----.  1 root   disk    253,   0 Mai  9 11:37 dm-0
    --Mais--
  • tee
  • O comando tee seria como uma bifurcação do que ele recebe e é usado com o pipe geralmente. Ele pega o resultado do comando passado pelo pipe '|' e mostra na tela e ao mesmo tempo grava em um arquivo. Por exemplo: se usarmos uma listagem do diretório corrente usando tee teremos o resultado mostrado na tela e também gravado no arquivo 'resultado.txt'

    você@seu.computador:~$ ls | tee resultado.txt
    cartões de festa.txt
    compras.pdf
    lista.txt
    recibo.pdf
    

    e usamos cat para ver o conteúdo do arquivo 'resultado.txt'

    você@seu.computador:~$ cat resultado.txt
    cartões de festa.txt
    compras.pdf
    lista.txt
    recibo.pdf
    
  • grep
  • O comando grep é muito útil para extrair ou checar informação de dentro de um arquivo. Ele retorna a linha onde existe a ocorrência do texto passado pelo argumento. Nesse exemplo vamos criar um arquivo com o conteúdo da página de manual do ls, Primeiro criamos esse arquivo com o comando man e direcionando o resulta para o arquivo manual.txt

    você@seu.computador:~$ man ls > manual_ls.txt

    Agora usamos o comando grep para achar as linhas onde a palavra free ocorre.

    você@seu.computador:~$ grep free manual_ls.txt
    This is free software: you are free to change and redistribute it.  There is NO WARRANTY, to the extent

    Parte 2 - O Linux - Ferramentas úteis para acesso remoto de sistemas, baixar arquivos e compressão de arquivos

    O ambiente Linux possui vários programas (ou ferramentas) que tornam bastante eficiente a manipulação, acesso e a organização de arquivos e de dados.

    Muitas dessas ferramentas são relacionadas a acesso remoto, compactação e descompactação de arquivos e obtenção eficiente de dados na rede.

    O ssh (Secure Shell) é usado para fazer o login em um computador remoto de maneira segura (criptografado).

    Instalamos ele usando o apt da seguinte forma:

    você@seu.computador:~$ sudo apt-get install openssh-server

    Em seguida adicionamos a instrução de inicializar o ssh ao ligar usando:

    você@seu.computador:~$ sudo update-rc.d ssh enable

    O uso dessa ferramenta é bastante simples bastando apenas ao usuário do computador remoto efetuar o login de forma remota usando:

    você@seu.computador:~$ ssh nomeDoUsuário@domínio.ou.ip,do.computador

    Será pedido a confirmação de chave no primeiro acesso e também a senha do usuário no sistema remoto. Em computadores com linux ou MacOS use o próprio terminal para fazer o acesso remoto. No windows instale o programa Putty.

    O protocolo de transferência de arquivos (File Transfer Protocol no inglês) é um servidor que permite a transferência de arquivos entre computadores na rede como o próprio nome diz. Ele é usado para transferência de arquivos de tamanho maior mas pode ser para qualquer arquivo.

    Vamos instalar o vsftpd que é um servidor ftp bastante usado. Instalamos ele usando:

    você@seu.computador:~$ sudo apt-get install vsftpd

    Em seguida adicionamos a instrução de inicializar o servidor FTP ao ligar usando:

    você@seu.computador:~$ sudo update-rc.d vsftpd enable

    Use programas de cliente FTP do tipo filezilla ou o próprio terminal para ter acesso a um servidor FTP.

    O wget é um ótimo programa para obter dados da web sem necessariamente ter de entrar em um navegador da web.

    Instalamos ele com o seguinte comando:

    você@seu.computador:~$ sudo apt-get install wget

    O unzip serve para descompactar arquivos do tipo zip ou criar arquivo compactado zip.

    Instalamos ele da seguinte forma:

    você@seu.computador:~$ sudo apt-get install unzip

    Vamos mostras agora como baixar um arquivo do tipo zip com o wget.

    você@seu.computador:~$ wget http://sigmine.dnpm.gov.br/sirgas2000/AM.zip
    --2019-05-04 16:58:40--  http://sigmine.dnpm.gov.br/sirgas2000/AM.zip
    Resolvendo sigmine.dnpm.gov.br (sigmine.dnpm.gov.br)... 200.198.193.233
    Conectando-se a sigmine.dnpm.gov.br (sigmine.dnpm.gov.br)|200.198.193.233|:80... conectado.
    A requisição HTTP foi enviada, aguardando resposta... 200 OK
    Tamanho: 1193526 (1,1M) [application/x-zip-compressed]
    Salvando em: “AM.zip”
    
    AM.zip              100%[===================>]   1,14M  1,00MB/s    em 1,1s    
    
    2019-05-04 16:58:41 (1,00 MB/s) - “AM.zip” salvo [1193526/1193526]

    E agora vamos descompactar este arquivo usando unzip

    você@seu.computador:~$ unzip AM.zip
    Archive:  AM.zip
      inflating: AM.dbf                  
      inflating: AM.prj                  
      inflating: AM.sbn                  
      inflating: AM.sbx                  
      inflating: AM.shp                  
      inflating: AM.shp.xml              
      inflating: AM.shx  

    Os arquivos foram baixados e descompactados do arquivo zip original de forma rápida e eficiente com wget e unzip.

    Parte 3 - Instalando um servidor de Banco de Dados

    Muitas aplicações e sistemas modernos são baseados em bancos de dados robustos e que podem ser acessados de formas diversas, inclusive via o servidor de páginas da web e aplicativos de smartphones.

    O PostgreSQL é um dos sistemas de banco de dados mais sofisticados que existem e veremos agora como instalar este banco de dados.

    Começamos por entrando no sistema como usuário root (Note que $ muda para #).

    você@seu.computador:~$ sudo su -

    Em seguida instalamos o PostgreSQL digitando no terminal:

    você@seu.computador:# apt-get install postgresql postgresql-contrib

    Adicionamos a instrução de inicializar o PostgreSQL ao ligar usando:

    você@seu.computador:# sudo update-rc.d postgresql enable

    E iniciamos o serviço com:

    você@seu.computador:# service postgresql start

    Iremos agora testar se a instalação foi feita com sucesso mudando para o usuário postgres e entrando no banco de dados psql conforme abaixo:

    você@seu.computador:# su - postgres
    você@seu.computador:~$ psql

    O seguinte deve aparecer: (para sair digite \q)

    psql (10.7 (Ubuntu 10.7-0ubuntu0.18.10.1))
    Type "help" for help.

    postgres=# \q

    Saia do usuário postgres e root digitando no terminal:

    você@seu.computador:~$ exit
    # exit

    Vamos agora criar um super usuário e usar este usuário para criar um banco de dados chamado teste. Substituir 'nome' pelo nome de um usuário válido no ubuntu (o seu nome de usuário). Você deverá entrar uma senha para o banco de dados diferente da sua senha de usuário, guarde essa senha:

    você@seu.computador:~$ sudo -u postgres createuser -P -s -e nome
    Enter password for new role:
    Enter it again:
    SELECT pg_catalog.set_config('search_path', '', false)
    CREATE ROLE andre PASSWORD 'minhaSenhaSecreta' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;

    Vamos agora criar um banco de dados chamado teste e vamos visualizar os usuários do banco de dados usando \du.

    você@seu.computador:~$ createdb -O nome teste
    você@seu.computador:~$ psql teste
    psql (10.7 (Ubuntu 10.7-0ubuntu0.18.10.1))
    Type "help" for help.

    teste=# \du
                                       List of roles
    Role name | Attributes | Member of
    -----------+------------------------------------------------------------+-----------
    nome | Superuser, Create role, Create DB | {}
    postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

    teste=# \q

    Vamos dar prosseguimento instalando o sistema Postgis usando:

    você@seu.computador:~$ sudo apt install postgis

    Criamos agora as extensões do Postgis no nosso banco de dados 'teste' criado acima:

    você@seu.computador:~$ psql -c "CREATE EXTENSION postgis; CREATE EXTENSION postgis_topology;" teste

    Vamos checar o banco de dados usando '\d' e sair usando '\q':

    você@seu.computador:~$ psql teste
    psql (10.7 (Ubuntu 10.7-0ubuntu0.18.10.1))
    Type "help" for help.
    
    teste=# \d
                    List of relations
      Schema  |       Name                  |   Type   | Owner 
    ------------+-------------------------+----------+-------
     public     | geography_columns         | view     | nome
     public     | geometry_columns          | view     | nome
     public     | raster_columns            | view     | nome
     public     | raster_overviews          | view     | nome
     public     | spatial_ref_sys           | table    | nome
     topology   | layer                     | table    | nome
     topology   | topology                  | table    | nome
     topology   | topology_id_seq           | sequence | nome
    (8 rows)
    
    teste=# \q

    Parte 4 - Instalando as Linguagens de Programação

    Vamos agora nessa parte final instalar R e Go.

    R é uma linguagem de programação poderosa que usaremos nas outras partes deste site.

    Usaremos Go como nosso servidor nestes tutoriais.

    Instale o R usando:

    você@seu.computador:~$ sudo apt install r-base

    Teste a instalação conforme abaixo (use q() para sair).

    você@seu.computador:~$ R
      
    R version 3.6.0 (2019-04-26) -- "Planting of a Tree"
    Copyright (C) 2019 The R Foundation for Statistical Computing
    Platform: x86_64-redhat-linux-gnu (64-bit)
    
    R is free software and comes with ABSOLUTELY NO WARRANTY.
    You are welcome to redistribute it under certain conditions.
    Type 'license()' or 'licence()' for distribution details.
    
      Natural language support but running in an English locale
    
    R is a collaborative project with many contributors.
    Type 'contributors()' for more information and
    'citation()' on how to cite R or R packages in publications.
    
    Type 'demo()' for some demos, 'help()' for on-line help, or
    'help.start()' for an HTML browser interface to help.
    Type 'q()' to quit R.
    
    > 
     q()
    Save workspace image? [y/n/c]: n
    

    Baixe o aquivo Go de acordo com o seu sistema (32 ou 64bits) usando.

    você@seu.computador:~$ wget https://dl.google.com/go/go1.13.1.linux-amd64.tar.gz
    

    Agora descompacte o arquivo baixado usando tar e mova ele para /usr/local/.

    você@seu.computador:~$ sudo tar -xvf go1.13.1.linux-amd64.tar.gz
    você@seu.computador:~$ sudo mv go /usr/local
    

    Ajuste as variáveis de ambiente GOROOT, GOPATH e PATH conforme abaixo:

    GOROOT é onde você moveu Go (/usr/local/go)

    você@seu.computador:~$ export GOROOT=/usr/local/go
    

    GOPATH é onde vamos executar nosso programa Go no seu diretóro de trabalho (~/Go).

    você@seu.computador:~$ mkdir ~/Go
    você@seu.computador:~$ export GOPATH=$HOME/Go
    

    E por último ajustamos a variável PATH para ser visível por todo o sistema operacional.

    você@seu.computador:~$ export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
    

    Adicione estas três linhas iniciadas com 'export' no seu arquivo ~/.profile .

    Teste usando:

    você@seu.computador:~$ go version
    go version go1.13.1 linux/amd64
    

    Prontinho! Go está instalado