Artigos

16 de janeiro de 2016

Instalação de Programas no FreeBSD

Mais artigos de »
Escrito por: Leonardo Souza
Tags:,




Nesta lista de aplicativos estão os softwares desenvolvidos no mundo GNU/Linux e portados para FreeBSD e os que são desenvolvidos para FreeBSD e adaptados para o mundo GNU/Linux, como por exemplo, o OpenSSH. Vale ressaltar que o FreeBSD possui compatibilidade binário que permite que os softwares desenvolvidos para GNU/Linux serão utilizados também no FreeBSD. Dessa forma, também é possível realizar a instalação de Programas no FreeBSD, mas isso já é assunto para outro artigo.

Veremos agora as duas principais formas de instalação de programas no FreeBSD: a coleção de ports e o sistema de pacotes binários.

O sistema de Ports

Segundo o Handbook do FreeBSD “O sistema de ports consiste em uma coleção de arquivos destinados a automatizar o processo de compilação da aplicação a partir do seu código fonte.” Isso significa que cada port é instalado a partir do seu código fonte, ou seja, a instalação não acontece a partir de  um arquivo binário. Ou seja, a instalação de programas no FreeBSD realizada por meio de ports, será feita a partir do código fonte, que precisa necessária mente ser compilado primeiro, porém de forma automática.

Na prática todo o código fonte da aplicação é baixado, compilado e instalado, tudo isso de forma automática. Para que todo este processo possa ser realizado de forma automática, cada port possui uma série de arquivos contendo o código fonte e as instruções para realizar o download, compilação e instalação.

A finalidade central é prover uma gigantesca biblioteca de programas devidamente disponíveis para o FreeBSD de forma simples e automatizada e realmente segura. Para isso todo o desenvolvimento e gerenciamento é centralizado em um comitê específico para isso. Assim, todos os ports lançados ou atualizados são devidamente auditados por uma equipe responsável por sua segurança. Dessa forma  ao ser lançado, um port já possui uma garantia de sua segurança, pois este comitê é responsável por verificar possíveis vulnerabilidades.

Claro que qualquer pessoa pode desenvolver ports e submetê-los para esta equipe e até mesmo fazer parte dela, basta para isso entrar em contato através das listas de discussões relacionadas ao desenvolvimento.

Organização dos Ports

Todo este sistema está à disposição por meio de uma relação de sites FTP que ficam espalhados ao redor do mundo e armazenam o código-fonte das aplicações aprovadas pelo comitê de segurança para fazer parte dos ports do FreeBSD. Essa coleção de ports é disponibilizada através de uma árvore de diretórios, devidamente organizada e disponibilizada no diretório /usr/ports. Veja o resultado do comando ls neste diretório:

Instalação de Programas no FreeBSD

Aqui são listadas as categorias de aplicativos e dentro delas estão os aplicativos listados. Por exemplo, o apache está disponível dentro do diretório “www”, assim como centenas de outros aplicativos relacionados a serviços de internet.

É dentro de cada diretório que realizamos os comandos responsáveis por realizar o download, compilação e instalação do aplicativo. Por exemplo, para instalar o apache seria necessário acessar o diretório referente ao port e digitar o comando “make install”. Este comando fará tudo o que precisa ser feito para a instalação. De um modo geral, basta acessar o diretório do port correspondente e digitar o comando específico para instalação.

Cada ports possui dentro de si arquivos responsáveis por especificar onde está o arquivo com o fonte e realizar seu download e de suas dependências, instruções sobre a compilação e instalação destes, assim como informações sobre a configuração default de cada aplicativo. Estes arquivos são:

Makefile: arquivo que declara como o aplicativo deve ser compilado e onde seus componentes devem ser instalados.

Distiinfo: contem os nomes e meios para verificação dos arquivos que precisam ser obtidos para construir o port, ou seja, as dependências.

files/: diretórios que contem todos os patches necessários para o programa ser compilado e instalado.

pkg-descr: possui uma descrição detalhada do programa.

pkg-plist: lista de todos os arquivos que serão instalados pelo port.

Alguns ports podem possuir arquivos específicos para situações especiais. Para mais detalhes consulte o manual dos Ports em freebsd.org.

Vantagens do sistema de Ports

A maioria das vantagens relacionadas aos ports está diretamente ligada ao fato do port disponibilizar o fonte do aplicativo para instalação. Entre elas estão:

  • Um pacote que disponibiliza o fonte, permite que a compilação seja feita de acordo com o sistema específico que vai utilizá-lo.
  • Os ports permitem, durante a compilação, que sejam escolhidas opções específicas, ou seja, não estamos obrigados a utilizar as opções default, diferente do pacote binário que já possui opções definidas.
  • Alguns softwares possuem condições de licenciamento em que a distribuição precisa ser feita por meio do código fonte, nestes casos a distribuição por meio de ports é a ideal.
  • Ter acesso ao código fonte permite que este possa ser inspecionado antes de realizar a instalação, neste aspecto os ports são, sem dúvidas, mais seguros que pacotes binários.
  • Acesso ao código fonte permite que se possa estudá-lo, copiá-lo e , em alguns casos, adaptá-lo às necessidades do usuário, algo que não é possível com o pacote binário.

Diretório distfiles

O código fonte é baixado por meio de um arquivo compactado, este arquivo é guardado no diretório /usr/ports/distfiles, como pode ser visto na imagem abaixo:

Instalação de Programas no FreeBSD

A importância deste diretório é enorme no processo de instalação de ports, pois é possível que em alguns momentos o download corrompa o conteúdo do arquivo, por diversos motivos,  e a repetição só será bem sucedida após a remoção deste arquivo de dentro deste diretório.

Para que uma instalação via ports funcione é necessário que existam dois pré-requisitos, conexão com a internet e privilégios de superusuário. Para instalar o port basta acessar o diretório do port e digitar “make install clean”.

Primeiro devemos acessar o diretório através do “cd”, e, já dentro do diretório digitar o make install.

Vamos instalar o port do servidor DHCP que se encontra em “/usr/ports/net/isc-dhcp43-server

make

Logo vai começar a instalação.

Depois de concluída a instalação veremos uma tela semelhante a esta.

Pesquisando ports

Em alguns casos é possível que não se saiba em qual diretório se encontra determinado port, neste caso utilizamos o comando “whereis” seguido do port procurado. Vamos pesquisar onde se encontra o servidor apache versão 2.4.

encontrar ports

Veja que o apache se encontra no diretório “www”, onde se encontram ports relacionados à internet.

Desinstalado um port

Para desinstalar um port basta acessar o diretório do port e digitar “make deinstall clean”, este comando removerá toda a instalação do port.

deisntall

Deve-se ter atenção ao desinstalar ports, pois é possível que existem outros aplicativos que dependem dele.

A coleção de ports possui softwares que são atualizados continuamente e para que possua a versão mais atual dos aplicativos, é necessário que estes sejam atualizados também. Atenção, estamos falando aqui da atualização da coleção de ports e não dos ports instalados.

Para utilizar este recurso o FreeBSD possui alguns utilitários, entre eles estão:

Utilitário Portsnap

O mais utilizado para atualização da coleção de ports, ele já vem instalado no FreeBSD de forma nativa. Ele se conecta ao site FreeBSD, verifica a chave de segurança, e faz o download de uma nova cópia da coleção de ports. Esta chave é utilizada para verificar a integridade de todos os arquivos baixados. Para baixar a lista completa de ports compactada digite “portsnap fetch”. Este comando baixa uma cópia compactada da coleção de ports em /var/db/portsnap

# portsnap fetch

Para extrair o conteúdo do arquivo compactado digite “portsnap extract”. Este comando extrai o conteúdo em /usr/ports, desta forma a coleção de ports é atualizada.

# portsnap extract

Depois de descompactar o arquivo utilize a opção update “portsnap update”. Será realizada toda a atualização, se necessário.

# portsnap update

Utilitário subversion

De forma alternativa pode-se utilizar o utilitário sub-version, que não vem pré-instalado no FreeBSD, mas pode ser encontrado em /usr/ports/devel/subversion. Basta instalá-lo como qualquer outro ports utilizando a opção “make install clean” dentro do diretório. pode-se instalar ele, também, através do “pkg install”.

pkg subversion

Para checar versões da coleção digite “svn checkout https://svn.FreeBSD.org/ports/head /usr/ports

# svn checkout https://svn.FreeBSD.org/ports/head /usr/ports

snv

Confirme a atualização.

para realizar a atualização digite “svn update /usr/ports “.

# svn update /usr/ports

Dessa forma conseguimos verificar e realizar update da coleção completa de ports.

Existem várias formas de se realizar a atualização dos ports entre elas:

Portmaster

O modo recomendado de realizar atualizações é por meio do “portmaster” disponível no ports-mgmt/portmaster, pois ele foi desenvolvido para esta finalidade. Ele usa as informações disponíveis em /var/db/pkg para verificar quais os ports precisam ser atualizados. O portmaster divide os ports em quatro categorias, estas são divididas segundo as suas depende cias e os ports que dependem deles:

Root port: não possui dependências e nenhum outro port depende dele.

Trunk port: não possui dependências, porém outros ports dependem dele.

Branch port: possui dependências e outros ports dependem dele.

Leaf port: possui dependências e nenhum outro port depende dele.

para listar as categorias e verificar atualizações digite “portmaster -L”.

portsmaster -l

Veja neste exemplo que tenho 34 ports instalados, porém nenhum precisa ser atualizado.

Para atualizar todos os pacotes digite “portmaster –a”. Durante a atualização do port o portmaster realiza um backup do aplicativo e só exclui este quando a atualização é bem sucedida.

Para forçar a atualização, caso ocorra algum erro, utilize a opção “–f”.

Outro recurso do portmaster é a opção de instalar ports diretamente por ele, bastando para isso digitar o caminho dentro da arvore de diretórios do port correspondente.

# portmaster shells/bash     

Portupgrade

Outra forma de realizar atualização de ports é pelo portupgrade, que está disponível em ports-mgmt/portupgrade. Como qualquer outro port, basta acessar o diretório e digitar ”make install clean”.

Para realizar todas as atualizações utilize “portupgrade –a” e o sistema vai atualizar todos ports desatualizados. Caso queira que seja solicitada uma confirmação para cada aplicativo que será atualizado, utilize a opção “i” junto com a opção “a”.

# portupgrade -ai

caso queira instalar um aplicativo específico e não todos os desatualizados, utilize portupgrade nome_aplicativo. É recomendado utilizar a opção “-R” para primeiro atualizar todos os ports necessário para a aplicação que está sendo atualizada.

# portupgrade -R apache

Outra opção válida é definir “-P” para que o portupgrade procure por pacotes disponíveis em locais enumerados no PKG_PATH, outro devidamente configura anteriormente. Esta opção é ideal quando se cria um servidor de atualizações, desta forma um computador apenas realiza o download dos pacotes e os outros realiza as suas atualizações a partir deste. Se o pacote não estiver disponível localmente será buscado o pacote através de um site remoto ou rede.

Por último será buscado na coleção de ports. Caso queira evitar a busca na coleção de ports utilize a opção PP. Dessa forma a atualização será abortada caso não consiga atualizar das formas anteriores. Este cenário é ideal quando se possui um servidor de atualizações e não se deseja utilizar atualizações via ports, evitando assim consumo de banda.

# portupgrade -PP nome_port

Espaço em Disco

Quando um port é instalado seus fontes, acabam utilizando espaço em disco. Os pacotes baixados para esta instalação ficam armazenados em /usr/ports/distfiles. Uma forma de limpar estes arquivos é utilizando o comando “portsclean”.

para remover todos os diretórios temporários criados durante a instalação utilize “portsclean –C”

portupgrade -C

Quando uma atualização ocorre é possível que arquivos referentes a versões antigas permaneçam no disco, para removê-las utilize:

# portsclean -D

Para remover qualquer arquivo não referenciado por algum port instalados atualmente no sistema utilize.

# portsclean –DD

Se o portmaster estiver instalado utilize também “portmaster –clean-distfiles”.

# portmaster –clean-distfiles

O sistema de pacotes permite realizar o download de um arquivo contendo cópias pré-compiladas de todos os comandos do aplicativo, bem como cópias dos arquivos de configuração e/ou documentação. Estes pacotes podem ser instalados, removidos por meio de utilitário “pkg”.

A grande diferença entre a instalação via ports e packages, é que os packages são pacotes binários, já pre-compilados e com uma coleção básica de dependências e suas respectivas configurações default disponíveis. Isso significa que ao usar pacotes prontos, o sistema fará a instalação de binários pre-configurados.

Vantagens do sistema de pacotes

Dentre as maiores vantagens deste tipo de instalação estão:

  • Os pacotes binários possuem tamanho menor que os fontes, por exemplo, sendo assim tanto o download quanto a instalação acontecem de forma mais rápida.
  • O pacote já vem compilado, evitando qualquer tipo de processamento relacionado a compilação. Economiza-se em processamento também.
  • Não necessita qualquer tipo de conhecimento quanto a compilação.

Instalando um pacote

Os pacotes são instalados através da opção “pkg install”, desta forma tanto o aplicativo quanto suas dependências serão instaladas.

pkg install

Este modo é bem mais rápido que a instalação via ports, pois não será solicitada tanta confirmação quanto o anterior.

Pesquisando um pacote

Com o constante aumento de aplicativos disponíveis para FreeBSD, algumas vezes fica complicado lembrar o nome e versão de todos, nestes casos podemos realizar uma pesquisa para encontrar o aplicativo desejado. Podemos realizar esta pesquisa no site oficial do projeto FreeBSD.org/ports. Outra possibilidade é se registrar no site Fresh.ports.org e escolher os aplicativos desejados, assim sempre que determinado aplicativo for atualizado, será enviado um e-mail com esta informação.

É possível utilizar o utilitário pkg para encontrar pacotes, basta para isso digitar “pkg search nome_pacote”.

pkg search

Veja que pesquisamos por “apache2” e recebemos como retorno as versões disponíveis para instalação.

Informações de pacotes

para visualizar informações sobre pacotes instalados utilize a opção “info” como parametro para o pkg

pkg info

Serão mostradas várias informações sobre o pacote, como versão, data de instalação, diretório, etc.

Desinstalando um pacote

Para desinstalar um pacote basta digitar “pkg delete nome_pacote”.

pkg delete

 

Será solicitada a confirmação e logo depois desinstalado o pacote.

Conclusão

A instalação de programas no FreeBSD permite uma enorme flexibilidade, e possui opções tanto para quem gosta de instalar programas através do fonte do aplicativo, quanto para quem prefere pacotes binários e suas facilidades. Esteja você procurando por opções de customização ou a praticidade de seus binários, não tenha dúvidas que o FreeBSD pode te surpreender.






Sobre o Autor

Foto de perfil de Leonardo Souza
Leonardo Souza
Bacharel em Informática, pós graduado em Segurança de Redes de Computadores e analista de Segurança da Informação. Entusiasta de Segurança da Informação e usuário FreeBSD, porém sem xiismo.





  1. Foto de perfil de arlindovisk

    Amigo, a única coisa que falta para tornar o freebsd um grande concorrente aos demais sistema, é uma vídeo aula de como instalar com particionamento manual em dual boot com linux, fica aqui a minha sugestão para ti, valeu amigo.


  2. […] NOTA O presente artigo foi adaptado do site “Mundo FreeBSD” e seu conteúdo está disponível por meio do link: http://mundofreebsd.com.br/instalacao-de-programas-no-freebsd/ […]



You must be logged in to post a comment.