Como encontrar e instalar pacotes de softwares para FreeBSD com o pkg

A lista de aplicações disponíveis para FreeBSD cresce a cada dia.
Tal como em outros sistemas operacionais Unix-like, há várias maneiras de encontrar e instalar os pacotes de softwares que você precisa.
O FreeBSD, a exemplo de várias distribuições GNU/Linux, também seus sistemas de gestão de pacotes.

Como buscar os softwares disponíveis no repositório do FreeBSD

Se quiser fazer a busca por pacotes de softwares binários, dentro do repositório oficial, use o utilitário pkg.
Veja um exemplo:

pkg search tetris

Segue a relação de pacotes que contenham, em sua descrição, a string ‘tetris’:

patapizza-tetris-1.0_6         Unofficial clone of the original Tetris game
vitetris-0.57                  Terminal-based Tetris clone in vein of Nintendo Tetris

Na primeira coluna, vem o nome e a versão do pacote. Na segunda coluna, uma breve descrição.
Para obter a informação sobre a categoria a que cada pacote pertence, use a opção -o:

pkg search -o tetris 

Neste caso, todos os pacotes pertencem a categoria (origem) ‘jogos’ e a versão de cada um não será exibida na primeira coluna:

games/patapizza-tetris         Unofficial clone of the original Tetris game
games/vitetris                 Terminal-based Tetris clone in vein of Nintendo Tetris

Ao usar o ‘search’ simples, o gestor de pacotes pode oferecer informações sobre a versão da linguagem de programação (Python, PHP, Ruby, C etc.) sobre a qual aquele pacote foi construído.
No exemplo, abaixo:

pkg search subversion 
git-subversion-2.9.2           Distributed source code management tool with FreeBSD subversion bindings
java-subversion-1.9.4          Java bindings for Version control system
p5-subversion-1.9.4            Perl bindings for Version control system
py27-hgsubversion-1.8.6        Mercurial extension that allows using it as a Subversion client
py27-subversion-1.9.4          Python bindings for version control system
ruby-subversion-1.9.4          Ruby bindings for version control system

Recomendo usar o comando grep para filtrar resultados muito extensos e obter apenas o que necessita:

pkg search mp3 | grep player 
ksmp3play-0.5.2.1_4            Curses-based MP3 player
mp3blaster-3.2.5_5             MP3 console ncurses-based player
ximp3-0.1.15                   Simple console MP3 player

Como instalar aplicativos com o snap

O snap é uma nova abordagem para a instalação de aplicativos, lançada pela Canonical e disponível em sistemas operacionais baseados no Ubuntu 16.04 LTS (ou superior).
Terminal IBM3278
Para escrever este artigo, usei uma máquina com o KDE NEON User edition 5.8, baseado no Ubuntu 16.04 LTS.
A melhor maneira de entender o funcionamento do programa/comando snap é através de exemplos.

Como instalar aplicativos com o snap

No Ubuntu 16.04 LTS Xenial Xerus, o programa snap já vem instalado como padrão.
E ele é responsável pela interação com os pacotes snaps nos repositórios.
Sua sintaxe é semelhante à do comando apt:

sudo snap install nome-do-aplicativo

Um exemplo da “vida real”… para instalar o cliente Twitter Anatine, use o comando assim:

sudo snap install anatine

Como encontrar snaps para instalar no sistema

Use o comando ‘find’, para encontrar novos snaps, prontos para instalar em seu sistema.
Funciona semelhante ao ‘apt search’.
O comando requisita informações da “loja” de snaps e retorna os pacotes disponíveis para instalação imediata ou para compra.
O seu uso básico:

snap find twitter

Como você pode ver, tal como o apt, o snap não precisa de privilégios especiais para fazer buscas nos repositórios. Veja o meu resultado:

Name          Version              Developer        Notes  Summary
anatine       1.0.0-2-gacbd796-J1  claudioandre-br  -      Pristine Twitter app
caddy-hduran  0.9.3                hduran           -      The HTTP/2 web server with automatic HTTPS

Como listar os snaps instalados

Use o comando ‘list’ para obter uma relação dos snaps atualmente instalados no seu sistema.
Veja um exemplo:

snap list
Name             Version              Rev  Developer        Notes
anatine          1.0.0-2-gacbd796-J1  9    claudioandre-br  -
hexchat          2.12.3               6    tingping         -
telegram-latest  0.10.19              3    pain7            -
ubuntu-core      16.04.1              423  canonical        -
vlc              daily                1    videolan         -

Como remover snaps do sistema

Use o comando ‘remove’ para apagar os aplicativos snap que você não mais deseja ter instalados no seu sistema:

sudo snap remove hexchat
[sudo] password for justincase: 
hexchat removed

Como atualizar o Fedora.

Há inúmeras maneiras de atualizar o Fedora.
Uma delas é não fazer nada — você espera o aviso de atualização e confirma, com um toque na tela.
Contudo, há casos em que é necessário “pular” a atualização e deixá-la para depois. Quando você está envolvido em alguma atividade que já está fazendo uso intensivo da rede, por exemplo.
Fedora logo
Para este e muitos outros casos, sempre é possível atualizar o Fedora manualmente (como qualquer outra distro GNU/Linux).
Você pode usar o ambiente gráfico ou pode abrir um terminal e usufruir de toda a flexibilidade da linha de comandos — e este será o método adotado neste post.
Os exemplos deste artigo se baseiam em uma instalação do Fedora 24 — só para nos situarmos. Tudo deve funcionar igual em outras versões atuais do sistema operacional.

Como verificar se há atualizações para o Fedora

O dnf provê uma gestão de pacotes avançada e cômoda no Fedora. Se você está chegando aqui, do Ubuntu ou do Debian, vai se sentir em casa.
Se você vem de outros sistemas operacionais, que não sejam UNIX-like, pode precisar de um tempo para se adaptar — só até entender a lógica do procedimento.
Para verificar se há atualizações para o seu sistema, comece rodando o dnf com a opção “check-update”. Veja o exemplo:

dnf check-update

O resultado pode demorar (dependendo da sua conexão) e pode ser bastante extenso — principalmente, se esta for a primeira vez que o comando estiver sendo executado no seu sistema.
O meu resultado (parcial) foi o seguinte:

Last metadata expiration check: 2:24:42 ago on Mon Aug  1 09:50:54 2016.

GeoIP-GeoLite-data.noarch              2016.05-1.fc24            fedora         
GeoIP-GeoLite-data.noarch              2016.07-1.fc24            updates        
ModemManager.x86_64                    1.6-0.3.rc3.fc24          fedora         
ModemManager.x86_64                    1.6.0-1.fc24              updates-testing

...

NetworkManager.x86_64                  1:1.2.2-1.fc24            fedora         
NetworkManager.x86_64                  1:1.2.2-2.fc24            updates        
NetworkManager-adsl.x86_64             1:1.2.2-1.fc24            fedora   

Complementarmente (e opcionalmente), você também pode inquirir o sistema sobre as atualizações que há para fazer. Veja como fazer isto:

dnf updateinfo

O comando acima irá retornar informações genéricas sobre as atualizações disponíveis para o seu sistema. Veja um resultado típico:

Last metadata expiration check: 3:07:16 ago on Mon Aug  1 09:50:54 2016.
Updates Information Summary: available
    29 Security notice(s)
    87 Bugfix notice(s)
    45 Enhancement notice(s)
     1 other notice(s)

Acima, é possível ver um resumo das informações sobre as atualizações (se estiverem) disponíveis. Vamos tentar explicá-las melhor, abaixo:

  • a última verificação dos metadados dos pacotes dos repositórios;
  • resumo das informações de atualização: available (ou disponível);
  • 29 notificações de segurança;
  • 87 correções de bugs (ou erros);
  • 45 notificações de melhorias;
  • 1 outra notificação.

Se usar o comando dnf -v updateinfo o gestor irá fornecer informações ainda mais detalhadas.
As 29 notificações de segurança e as 87 correções de erros, no sistema exemplificado, já são motivos suficientes para atualizá-lo de imediato.
Fedora 24 screenshot

Como aplicar a atualização do sistema no Fedora

O exemplo usado é o de um sistema recém instalado e que ainda não foi atualizado — há mais de 400 MB de coisas para baixar, aqui.
A atualização é feita com a opção “upgrade”:

sudo dnf upgrade

Note que o comando precisa ser dado com privilégios administrativos.
Fedora 24 terminal update
Você pode rolar a lista de atualizações com o mouse e, se quiser, confirmar que o dnf prossiga.

Use o checkinstall para criar pacotes gerenciáveis dos aplicativos que você compila no seu sistema.

Compilar softwares a partir do código fonte, é um método de instalação que possibilita obter a versão mais atual do seu aplicativo.
Outra vantagem, é poder construir automaticamente software feito sob medida para o seu sistema.
Este texto complementa o artigo Como Compilar Código Fonte de Programas no Linux.
Na maioria das vezes, é muito fácil compilar software. Mas esta abordagem traz algumas desvantagens ou riscos que convém enumerar:

  • O software compilado não participa das atualizações automáticas do sistema. Se o objetivo era ter a versão mais atual, com o tempo, você pode acabar com uma versão desatualizada do seu aplicativo favorito.
    Isto significa também que ele não receberá correções para novos bugs, à medida em que são descobertos. Tampouco receberá patches de segurança.
    Resumindo, você terá que fazer as atualizações manualmente, se quiser.
  • Em alguns casos, pode ser complicado remover software instalado através deste método. Se você não sabe exatamente aonde foi gravado cada arquivo associado do aplicativo principal, pode acabar com um sistema cheio de coisas que não usa mais.
  • Pode haver perda de dados, em casos (embora raros) de conflito com o restante do sistema.

No texto Como Preservar a Integridade e a Estabilidade da sua Instalação Debian, são enumeradas as várias armadilhas que podem quebrar o seu sistema. Entre elas, compilar softwares do código fonte.

Como usar o checkinstall

Para solucionar parte destes problemas, use o checkinstall.
Este utilitário pode ajudar a rastrear softwares locais e a produzir arquivos binários que podem ser manipulados pelo seu aplicativo de gestão de pacotes.

O checkinstall produz um pacote binário que pode ser gerenciado pelo sistema de gestão de pacotes — facilitando, entre outras coisas, a futura desinstalação.

Trata-se de um programa que monitora o processo de instalação feito por ‘make install’ ou por um script ‘install.sh’ e cria um pacote padrão para a sua distribuição.
Atualmente, o checkinstall suporta pacotes deb, rpm e tgz — que podem ser usados, respectivamente, pelos gestores dpkg, rpm e installpkg.
Na maioria dos casos, o checkinstall precisa ser executado com privilégios administrativos, para ser realmente útil.
Sua sintaxe segue o padrão de linha de comando GNU:
checkinstall opções comando-de-instalação
Seu funcionamento segue os seguintes passos:

# entre no diretório em que se encontra o código fonte
./configure
make
sudo checkinstall

Se você prefere gerar pacotes .deb, para o seu sistema Debian/Ubuntu, use a opção ‘-D’:

sudo checkinstall -D 

Se preferir gerar pacotes RPM, use a opção ‘-R’; ou ‘-S’, para criar um pacote Slackware.
Use a opção ‘–install=no’ para evitar a instalação automática do pacote.
O exemplo, abaixo, cria um pacote RPM e sai, sem instalar nada:

sudo checkinstall -R --install=no

O novo pacote criado, ficará disponível no mesmo local em que você executou o comando. Basta usar o comando ls, para encontrá-lo.

Referências

https://manpages.debian.org/cgi-bin/man.cgi?sektion=8&query=checkinstall&apropos=0&manpath=sid&locale=en.
https://wiki.debian.org/CheckInstall.

Gestão de pacotes para iniciantes.

A mudança de sistema operacional comumente vem acompanhada de um choque cultural. Um dos principais momentos em que isto ocorre, quando um usuário Mac ou Windows se posiciona em frente à uma máquina Linux é aquele em que precisa instalar algum software novo ou atualizar o sistema.
Este é um dos pontos em que a diferença é grande.
Para quem vem do Fedora ou do Opensuse, a gestão de pacotes é diferente, mas segue a mesma lógica.
gnome software center
As várias distros GNU/Linux possuem sistemas completos para gestão de pacotes — que cuidam da instalação, configuração e, se quiser, da remoção de softwares. Além disto, o sistema cuida das dependências — o que significa que vai atrás das bibliotecas e dos softwares adicionais necessários para que o aplicativo desejado seja instalado e usado plenamente.
Este sistema varia de acordo com cada distribuição e é comum que cada uma tenha seus próprios repositórios (ou loja de aplicativos, para facilitar a compreensão do conceito).

Fora do tradicional, há exceções, como compilar o código, baixar e instalar o conjunto completo com software e bibliotecas, como o snap ou pacote em tar.gz (para citar alguns exemplos).

Quando você usa o Google Play ou a app Store da Apple, saiba que a prática de fornecer todos os aplicativos pros usuários da sua plataforma em um só lugar, centralizado, já vai completar algumas décadas no mundo Linux.
Claro que os repositórios das grandes distribuições, como a Debian ou o Ubuntu (derivado da primeira) não são “centralizados”. Eles são espelhados e distribuídos, mundo afora, em vários servidores.
Assim, quem está no Brasil, pode fazer downloads mais rápidos a partir de servidores localizados na América Latina.

Gestão de softwares no Windows e no Mac

Os usuários Windows estão acostumados a baixar arquivos .exe e .msi da Internet ou instalá-los a partir de mídias físicas CD/DVD, com assistente de instalação.
Ainda que este método continue a ser usado nas próximas décadas, as novas versões do sistema operacional caminham na direção de oferecer os programas dos usuários centralizados em uma loja online.
As atualizações dos aplicativos, ou são feitas pelos próprios aplicativos ou os usuários precisam verificar online se há novas versões para seus programas.
Os usuários Mac já estão mais acostumados com o modelo de loja central, para adquirir os seus aplicativos. Mas também instalam bastante a partir de mídias físicas ou da Internet.
Os aplicativos adquiridos na App Store são atualizados automaticamente, o que diminui a quantidade de softwares desatualizados no sistema, com possíveis falhas de segurança, inclusive.

Gestão de software no Linux

GNOME Software Center
Usuários Ubuntu não têm a prática de procurar e baixar seus softwares “em sites” da Internet. Embora seja possível, é muito incomum. Da mesma forma, dificilmente adquirem aplicativos separados em CD/DVD.
O próprio sistema é que se encarrega de mostrar um menu com os aplicativos disponíveis (e você os pode organizar por categoria), seus preços (a maioria gratuitos), entre outras informações. Se você usa um smartphone, então sabe como se faz.
Cada distribuição ou sabor Linux tem o seu próprio sistema de gestão de softwares. É comum ter mais de uma forma de acessar os repositórios, para a conveniência dos usuários.
Embora eu sempre recomende aos iniciantes os gestores gráficos, no dia a dia uso a linha de comando para instalar ou desinstalar meus aplicativos — e há muito tempo não instalo softwares individuais a partir de CD/DVD.
Contudo, aplicativos como o Firefox nightly, baixo do site oficial da Mozilla. Da mesma forma, baixo e instalo o NetBeans Nightly e o Komodo Editor — neste caso, trata-se de exceções. Estes softwares estão disponíveis nos repositórios normais, nas suas versões estáveis.
Todos softwares instalados podem ser atualizados ao pressionar um botão, ao dar um comando… ou sem fazer nada — quando chegam, as atualizações são aplicadas automaticamente.
GNOME Software Center

Os vários gestores de pacotes do Linux, pro terminal

Os aplicativos gráficos de gestão de software, mesmo que diferentes de uma distribuição para outra, não são complicados.
A busca por aplicativos, para quem usa um smartphone no dia a dia, ocorre intuitivamente no ambiente gráfico do Ubuntu, do Debian, Opensuse etc.
Mesmo assim, muita gente prefere usar o bom e velho terminal para instalar ou remover qualquer coisa ou, ainda, atualizar o sistema — é um método muito mais ágil.

Sites com tutoriais, preferem mostrar como resolver problemas usando o terminal. Entre outros motivos, por que permite ao leitor a comodidade de copiar o comando do site e colar no seu console.

Abaixo segue uma tabela com os nomes de alguns dos gestores de softwares mais comuns de algumas das principais distribuições Linux:

Distro Nome do gestor de software
Debian e Ubuntu apt, aptitude, apt-get
Fedora yum, yumex, dnf
Arch Linux emerge
Opensuse zypper

Vantagens dos sistemas de gestão de pacotes

No começo, cada novo programa era distribuído como um binário (que nem no Windows/DOS) ou em código-fonte, para ser compilado pelo usuário/administrador do sistema.
Os sistemas de gestão de pacotes, nas várias distribuições GNU/Linux oferecem diversas vantagens em relação a esta abordagem:

  1. Tornar fácil saber que versão do pacote de softwares já se encontra instalada no sistema ou está disponível no repositório.
  2. Tornar fácil a remoção de qualquer software instalado no seu sistema, bem como suas dependências e (opcionalmente) arquivos de configuração.
  3. Simplificar a verificação da integridade dos arquivos dentro do pacote — assim você não instala software corrompido ou “mexido”.
  4. Simplificar a atualização fazendo a remoção automática das versões antigas para instalar as novas — evitando que o procedimento desestabilize o seu sistema.
  5. Tornar transparente o que os pacotes requerem ou oferecem, antes de você começar a instalação.
  6. Simplificar tarefas complexas, como instalar ou remover grupos grandes de pacotes, como os que são necessários para ter um servidor LAMP, por exemplo.
  7. Quando uma versão nova, instalada, apresenta algum bug, é possível, em alguns casos, reverter com facilidade para a versão anterior do software.

Como encontrar e instalar pacotes de aplicativos via linha de comando

Os exemplos, que seguem, se baseiam nas distribuições Debian e Ubuntu, para mostrar basicamente como gerenciar softwares em seu sistema.
Para se aprofundar leia mais sobre o apt.
Se quiser saber como o processo funciona no Opensuse, leia gestão de pacotes com o zypper.
Quando desejo encontrar algum aplicativo relativo a uma determinada área ou categoria, posso usar o parâmetro search para efetuar uma pesquisa nos repositórios.
Veja um exemplo de como encontrar softwares de CAD (Computer Aided Design) para instalar no Ubuntu:

apt search cad

A lista de resultados pode ser enorme, uma vez que o apt irá procurar todos as referências que contenham a cadeia de caracteres “cad”.
Pra resolver isto, use o comando grep:

librecad - Computer-aided design (CAD) system
librecad-data - Computer-aided design (CAD) system -- shared files
tdiary-theme - Themes of tDiary to change the design
alsaplayer-gtk - PCM player designed for ALSA (GTK+ version)
geda-gsymcheck - GPL EDA -- Eletronics design software (verificador de símbolos)

Para instalar o freeCAD, uso o comando apt, assim:
sudo apt install freecad

Referências

Leia textos mais específicos sobre gestão de pacotes.