APT no RedHat/Fedora
Hugo Cisneiros, hugo_arroba_devin_ponto_com_ponto_br
Última atualização em 05/03/2004
1. O que é o APT?
O APT (Advanced Package Tool, ou Ferramenta de Pacotes Avançada) é uma ferramenta que gerencia de uma maneira muito intuitiva os pacotes de programas no Linux. O APT foi originalmente criado para funcionar junto com dpkg, do Debian, mas ele foi portado pela Conectiva para funcionar com o sistema de pacotes RPM, criado pela RedHat. O APT resolve os conflitos e dependências de pacotes de uma maneira muito fácil e automática. Além disso ela é uma ótima ferramenta para a atualização do sistema através da Internet, instalação de programas adicionais, entre outros. Neste tutorial irei ensinar como instalar e usar o APT em sistemas RedHat ou Fedora, mas com algumas adaptações, os métodos descritos aqui podem ser feitos em outras distribuições que utilizam o RPM. No caso do Debian, nada precisa ser feito pois o sistema já vem com o APT por padrão.
2. Instalando o APT no RedHat ou Fedora
Para cada versão do sistema, há pacotes específicos a serem baixados. No site (http://apt.freshrpms.net/) você obtém uma lista das versões do APT para cada versão do seu RedHat ou Fedora. Abaixo segue o link direto para o RPM dos principais sistemas:
Neste tutorial, iremos usar como exemplo o RedHat 9. Então para instalar o RPM no seu sistema depois de baixado através dos links acima, utilize o comando:
# rpm -Uhv apt-0.5.5cnc6-fr1.i386.rpm
Depois de instalado no sistema, você terá de configurar o APT através de seus arquivos de configuração. O diretório /etc/apt foi criado na instalação do pacote e é nele que você vai editar os arquivos necessários para o funcionamento da ferramenta.
O arquivo /etc/apt/apt.conf contém as configurações padrões do utilitário APT. As configurações neste arquivo já vêm prontas para o uso, e você só precisará modificar alguma coisa se realmente estiver precisando disso. Um exemplo do que você teria que fazer é habilitar o campo Proxy na seção Acquire para utilizar um Proxy ao baixar os pacotes na Internet.
Já o arquivo /etc/apt/sources.list precisa de nossa configuração. Este arquivo contém a localização dos índices dos pacotes e os próprios pacotes na Internet. Editando este arquivo, você ira especificar onde o APT irá baixar os pacotes para instalá-los na sua máquina. O nome que damos à essa localidade é "repositório apt". Vamos pegar o exemplo que já vem por padrão na configuração:
rpm http://ayo.freshrpms.net redhat/9/i386 os updates freshrpms
rpm-src http://ayo.freshrpms.net redhat/9/i386 os updates freshrpms
As duas linhas acima especificam dois tipos de repositórios APT: um de RPMs binários, e outro de RPMs com código-fonte (SRPMS). Caso você não utilize SRPMS, só é necessário a primeira linha. A linha consiste em campos: O primeiro campo pode ser rpm ou rpm-src como já explicado. O segundo campo é o Host onde o APT se conectará para chegar ao repositório do APT. Este host pode ser HTTP ou FTP. O terceiro campo é o diretório onde o repositório está localizado. E por último, o quarto campo em diante são os módulos contidos no repositório.
Na primeira linha, eu especifiquei que acessaria o repositório ayo.freshrpms.net, e faria o índice dos RPMS do os (parte principal do sistema, ou seja, os RPMs que vem no CD; updates que são as atualizações de segurança da distribuição; e freshrpms que é um repositório especial do http://freshrpms.net/ que contém pacotes extras que a distribuição oficial não disponibiliza (por exemplo, o apt é um desses pacotes extras).
Como host do repositório apt, você pode também usar os mirrors (espelhos) disponíveis, como listado na página do http://apt.freshrpms.net/:
...Ou você pode criar seu próprio mirror, como explicado mais a frente neste tutorial.
3. Utilizando o APT
Agora é hora de colocar a ferramenta pra funcionar. Antes de mais nada precisamos atualizar os índices do repositório APT, armazenando-o no nosso sistema. Para fazer isso, você só precisa de um comando:
# apt-get update
E ele irá atualizar o índice do repositório configurado no arquivo /etc/apt/sources.list como explicado antes. Se tudo ocorrer bem, tudo ira seguir mais ou menos como mostro abaixo:
# apt-get update
Get:1 http://ayo.freshrpms.ne redhat/9/en/i386 release [714B]
Fetched 714B in 0s (4010B/s)
Hit http://ayo.freshrpms.net redhat/9/en/i386/os pkglist
Hit http://ayo.freshrpms.ne redhat/9/en/i386/os release
Get:1 http://ayo.freshrpms.ne redhat/9/en/i386/updates pkglist [434kB]
Hit http://ayo.freshrpms.ne redhat/9/en/i386/updates release
Fetched 434kB in 2s (208kB/s)
Reading Package Lists... Done
Building Dependency Tree... Done
Depois do indice atualizado no sistema, é hora de você começar a colocar as coisas pra funcionar. Vamos agora por exemplo, tentar atualizar o sistema:
# apt-get upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be upgraded
libxml2
1 packages upgraded, 0 newly installed, 0 removed and 0 not upgraded.
Need to get 584kB of archives.
After unpacking 160B of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://ayo.freshrpms.net redhat/9/en/i386/updates libxml2 2.5.4-3.rh9 [584kB]
Fetched 584kB in 0s (4262kB/s)
Executing RPM (-Uvh)...
warning: /var/cache/apt/archives/libxml2_2.5.4-3.rh9_i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################################### [100%]
1:libxml2 ########################################### [100%]
Como você pôde ver acima, eu utilizei o comando apt-get upgrade para procurar por pacotes mais novos e atualizar o sistema com eles. Na minha configuração, eu coloquei o módulo updates no /etc/apt/sources.list, então isso quer dizer que as atualizações que estiverem neste local do repositório serão reconhecidas pelo APT. É assim que fica fácil de se atualizar o sistema.
Se eu fizer novamente o processo acima, olha o que vou conseguir:
# apt-get upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
0 packages upgraded, 0 newly installed, 0 removed and 0 not upgraded.
Ou seja, todos os pacotes estão atualizados no meu sistema.
Suponhamos agora que você queira instalar uns pacotes do PHP, mas não sabe ao certo como eles se chamam. Com o APT, você pode procurar no índice por pacotes que tenham em sua descrição certas palavras, como por exemplo PHP. Para fazer isso, utilizamos o comando apt-cache, veja só:
# apt-cache search php
asp2php - Converts WWW Active Server Pages to PHP pages
asp2php-gtk - gtk+ frontend for asp2php
quanta - K Desktop Environment - core files
php - The PHP HTML-embedded scripting language. (PHP: Hypertext Preprocessor)
php-devel - Files needed for building PHP extensions.
php-imap - An Apache module for PHP applications that use IMAP.
php-ldap - A module for PHP applications that use LDAP.
php-manual - The PHP manual, in HTML format.
php-mysql - A module for PHP applications that use MySQL databases.
php-odbc - A module for PHP applications that use ODBC databases.
php-pgsql - A PostgreSQL database module for PHP.
php-snmp - A module for PHP applications that query SNMP-managed devices.
squirrelmail - SquirrelMail webmail client
Viu só? Estes são os pacotes relacionados com o PHP. Que tal a gente instalar o php-manual e dar uma lida pra aprender? Veja só como se faz:
# apt-get install php-manual
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
php-manual
0 packages upgraded, 1 newly installed, 0 removed and 0 not upgraded.
Need to get 13.7MB of archives.
After unpacking 92.7MB of additional disk space will be used.
Get:1 http://ayo.freshrpms.net redhat/9/en/i386/updates php-manual 4.2.2-17.2 [13.7MB]
Fetched 13.7MB in 1s (10.9MB/s)
Executing RPM (-Uvh)...
warning: /var/cache/apt/archives/php-manual_4.2.2-17.2_i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################################### [100%]
1:php-manual ########################################### [100%]
Uma coisa muito legal do APT é que se você quer instalar ou remover um pacote, e este pacote depende de outros pacotes, o APT sabe disso e resolve isso pra você: ele pergunta se você quer também instalar/remover os pacotes dependentes. Ou seja, se você não tiver o PHP instalado em sua máquina e tentar instalar o php-imap, o APT vai querer instalar também o pacote principal php, pois o php-imap é dependente dele. Teste para ver.
E agora que eu já li o manual do PHP inteiro em apenas alguns segundos, eu quero removê-lo. Você pode remover muito bem utilizando o RPM, mas aqui estamos aprendendo sobre o APT, então utilizaremos:
# apt-get remove php-manual
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
php-manual
0 packages upgraded, 0 newly installed, 1 removed and 0 not upgraded.
Need to get 0B of archives.
After unpacking 92.7MB disk space will be freed.
Do you want to continue? [Y/n] y
Executing RPM (-e)...
E lá se vai o manual do PHP. Como eu disse acima, se algum outro pacote depender do manual do PHP, o APT perguntará a você se deseja remover o outro pacote também.
E agora como nota final de uso, você pode atualizar uma versão de distribuição inteira através do APT. Para isso você só precisa mudar a versão do seu repositório (arquivo /etc/apt/sources.list) para uma versão superior a sua e executar o comando apt-get dist-upgrade.
E pra terminar essa seção, vamos à tabelinha básica dos comandos e suas funções:
Comando Função
apt-get install Instala um pacote e suas dependências.
apt-get remove Remove um pacote e suas dependências.
apt-get upgrade Procura por pacotes mais novos para fazer atualizações.
apt-get dist-upgrade Faz uma atualização de versão da distribuição.
apt-cache search Procura por termo nas descrições dos pacotes disponíveis
E basicamente é isso. Utilizar o APT é muito simples e não requer muito segredo, nem esforço. Mas uma coisa é certa: uma vez que você começa a usar o APT, não quer parar nunca por causa de sua praticidade.
4. Montando um repositório local do APT/RedHat
Se você é um usuário doméstico ou tem poucas máquinas em sua mão rodando Linux, já é muito prático você utilizar o APT com os repositórios disponíveis por aí na Internet. Mas para os administradores de Rede que possuem várias máquinas Linux, seja na mesma rede ou não, pedir para cada uma delas instalar ou atualizar pacotes da Internet é um desperdício de banda, além de um péssimo favor para os servidores externos. Então por que não fazer um repositório APT local?
O método aqui utilizado criará um mirror (espelho) do FTP da RedHat no seu sistema local, e scripts irão criar os índices do APT em sua máquina. Para fazer o espelho, precisaremos do pacote lftp, então se você não o possue, o que está esperando? apt-get install lftp!
Criando o espelho da distribuição
Baixe o script make-redhat-mirror disponível nesta página e coloque-o no diretório /usr/local/bin. Então rode inicialmente o seguinte comando:
# /usr/local/bin/make-redhat-mirror full 9
E espere. Espere bastante. O script irá baixar todo o conteúdo do RedHat 9 (inclusive as atualizações) para o diretório /var/mirror/redhat. Este diretório de destino pode ser configurado dentro do script, editando-o. Inclusive você pode editar também o FTP onde o mirror vai tirar seus arquivos. Tente achar um mirror da RedHat mais próximo de você.
Só será necessário rodar este comando uma vez. Mas depois você vai querer se manter atualizado com os novos pacotes, então para atualizar apenas a parte de updates, utilize o seguinte comando:
# /usr/local/bin/make-redhat-mirror quick 9
Mais tarde iremos também colocar no crontab para rodar as atualizações de índice com o FTP da RedHat automaticamente todo dia.
Preparando o território do APT
Antes de criar os índices, você precisará primeiro de um método para os clientes do APT baixarem as coisas. O método pode ser HTTP e FTP (Pode ser CD-ROM também, mas isso não vem ao caso). Fica ao seu critério escolher o método. No meu caso eu prefiro criar um host virtual no Apache chamado de apt.meudominio.com.br. Ou se você não tem domínio, pode usar seu próprio IP.
Isto será extremamente necessário, e a configuração disto está fora do escopo deste tutorial. Se você não sabe, procure saber como configurar um servidor HTTP ou FTP. Provavelmente você sabe um pouco, senão não estaria lendo esta parte do tutorial :)
Aqui, como eu disse, o lugar do repositório APT vai ser apt.meudominio.com.br, e o diretorio real no sistema vai ser /var/www/dominios/apt.meudominio.com.br/html.
Criando o repositório APT
Agora é a hora de criar o repositório do APT em sua máquina. Para isso, baixe o script make-apt disponível nesta página e coloque-o em /usr/local/bin. Edite o script e você verá algumas variáveis no começo para serem configuradas:
# Absolute directory for top of redhat mirror
MIRRORDIR=/var/mirror/redhat
# Absolute directory for top of apt repository
APTDIR=/var/www/dominios/apt.meudominio.com.br/html
# URL of repository
ORIGINURL=apt.meudominio.com.br
Veja aí o que você precisa. A variável MIRRORDIR indica onde você colocou o mirror do RedHat (isto está configurado também no script make-redhat-mirror). A variável APTDIR indica o diretório no sistema onde vai ficar o repositório do APT, que no nosso caso ficou sendo como /var/www/dominios/apt.meudominio.com.br/html. E por último a variável ORIGINURL indica a URL onde vai estar disponível o repositório, que no nosso caso ficou sendo apt.meudominio.com.br.
Depois de configurado estas três variáveis, é hora de finalmente criar o repositório. Na primeira vez que você for fazer isso, utilize o comando:
# /usr/local/bin/make-apt full 9
Isso irá iniciar o processo de criação do repositório, que deve demorar um pouquinho. Depois de feito, está pronto! Agora seus usuários já podem acessar o seu repositório APT através do seu servidor HTTP.
Configurando os clientes para usar seu repositório
Tudo que você precisará fazer para configurar os clientes do APT para utilizar o seu repositório será alterar o arquivo /etc/apt/sources.list e utilizar a seguinte linha:
rpm http://apt.meudominio.com.br redhat/9/en/i386 os updates
E pronto! Se você estiver rodando várias máquinas numa rede interna, apenas uma terá o repositório e o resto irá baixar tudo localmente :)
Atualizando o repositório diariamente
Como existem as atualizações de segurança, é sempre bom você estar sempre atualizando seu repositório. Para fazer isso diariamente, crie um arquivo chamado /usr/local/bin/mirror-apt com o seguinte conteúdo:
#!/bin/bash
/usr/local/bin/make-redhat-mirror quick 9
/usr/local/bin/make-apt quick 9
Depois edite o arquivo /etc/crontab, e adicione as seguintes linhas:
# Atualizacao do Mirror RedHat e APT
01 1 * * * root /usr/local/bin/mirror-apt
Isso fará com que o sistema verifique as atualizações no FTP da RedHat e crie o repositório APT caso necessário todo dia às 1:00 da manhã. Se você quiser aprender mais sobre como agendar as tarefas através do crontab, visite meu outro tutorial: Utilizando o crontab.
E pronto! Seu trabalho está feito. Experimente e modifique as coisas para aprender mais. Não é tão difícil adaptar estas informações para criar um repositório do Fedora por exemplo, ou de outra versão do RedHat. A única coisa que irá mudar será a localização do mirror, entre outras pequenas coisas.
5. Conclusão e Referências
Espero que você tenha gostado desse tutorial, e que ele possa ter te ajudado a lidar melhor com sua distribuição. Críticas e Sugestões podem ser mandadas para o meu e-mail. E agora os créditos para este tutorial:
taken from: http://www.devin.com.br/eitch/apt-redhat/