O FreeBSD utiliza seu próprio esquema para instalação de aplicativos, isso pode ser feito por meio da coleção de ports ou dos pacotes binários. A coleção de ports é um conjunto de arquivos de configuração responsáveis por baixar, compilar e instalar aplicativos, tudo isso de forma automática. Por outro lado, os pacotes binários são arquivos já compilados e que podem ser instalados a partir de comando específicos.
Os Ports
A coleção de ports instala uma série de diretórios que representam categorias de softwares com seus respectivos subdiretórios, por exemplo, o aplicativo apache fica dentro do subdiretório /usr/ports/www/apache24. Nestes diretórios existem makefiles, arquivos responsáveis por definir as opções básicas para instalação dos aplicativos, entre outros.
Todo o sistema de Ports, é disponibilizado por meio de uma hierarquia de diretórios, devidamente organizados, e permite que estes aplicativos sejam instalados através do comando make. Cada diretório possui um conjunto de arquivos que informam ao FreeBSD como, e onde, baixar, compilar e instalar o programa desejado. Ou seja, basta acessar o diretório desejado, executar o comando "make install" e o sistema vai procurar nestes arquivos o procedimento que precisa realizar para instalar o software, tudo de forma automática.
Quando o usuário utiliza o sistema de ports tudo é feito pelo sistema, a aplicação é baixada da internet, compilada, instalada, adaptada e registrada na base de pacotes instalados. Mesmo que existam dependências de outras aplicações e/ou bibliotecas estas são devidamente instaladas.
Cada Port é desenvolvido por um "mantenedor de port", pessoa responsável por manter o port atualizado em relação ao desenvolvimento original do software. Qualquer é bem-vindo a se tornar um mantenedor pela contribuição com seu software favorito ou escolher um que não possui mais um mantenedor e adotá-lo. Atualmente existem mais de 32.000 pacotes disponíveis na lista de coleções de ports.
Cada port possui basicamente os seguintes arquivos:
- 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.
- 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 inglês).
Instalação via "Packages"
Outra forma de instalação de aplicativos no FreeBSD são os "packages" ou pacotes, que consiste em um único arquivo contendo uma cópia pré-compilada de todos os comandos do aplicativo, assim como cópia dos arquivos de configuração e documentação. Estes pacotes podem ser gerenciados através de comandos específicos como, por exemplo, "pkg install, utilizado para instalar programas. Dessa forma a instalação de um novo aplicativos pode ser realizado através da execução de um único comando.
Semelhante aos ports, os packages também tratam as dependências do aplicativo. Logo, quando tentamos instalar um pacote ou port que dependem de uma biblioteca específica e esta não está instalada no sistema, o FreeBSD vai informar que a biblioteca necessária para o funcionamento do aplicativo não está instalada corretamente e vai instalar automaticamente a biblioteca. Isso independentemente da forma que o aplicativo foi instalado, ou seja, por meio da coleção de ports ou pacotes.
Tanto o desenvolvimento de Ports, packages, como todo o projeto é todo no modelo colaborativos, desta forma qualquer um que desejar pode fazer parte do projeto. Este, aliás, é o assunto da próxima parte deste artigo.