Repositórios no Ubuntu e outras dicas

Postador por Tiago Damasceno

Feed
Assine nosso Feed ou receba os artigos por email

Assim como todas as inúmeras outras distribuições derivadas do Debian, o Ubuntu utiliza o apt como gerenciador de pacotes. Entretanto, para facilitar as coisas, o Ubuntu inclui também um conjunto de gerenciadores gráficos que, de certa forma, permitem juntar o melhor dos dois mundos.

O gerenciamento dos repositórios é feito através do "Sistema > Administração > Canais de Software", que funciona como um configurador para o arquivo "/etc/apt/sources.list", onde são especificados os repositórios que serão usados pelo sistema. Os pacotes oficiais são divididos em 5 repositórios:

main: O repositório principal, que inclui os softwares suportados oficialmente pela equipe do Ubuntu. Este repositório inclui um número relativamente pequeno de pacotes, incluindo os pacotes do Gnome e os outros softwares instalados por padrão, os pacotes de internacionalização e alguns poucos pacotes adicionais. É basicamente o mesmo conteúdo da versão em DVD.

restricted: Este repositório inclui os drivers da nVidia, da ATI e alguns módulos adicionais para o kernel (agrupados no pacote "linux-restricted-modules") que possuem o código fonte fechado, ou possuem restrições com relação à modificação ou distribuição. Agrupá-los em um repositório separado foi a solução encontrada pela equipe do Ubuntu para poder distribuí-los como parte da distribuição.

Estes drivers ao gerenciados de maneira automática pelo gerenciador de drivers restritos ("Sistema > Administração > Drivers de hardware") que se encarrega de detectar os componentes e perguntar se você deseja ativar os drivers correspondentes.

universe: Como o nome sugere, o Universe inclui quase todos os demais pacotes, um conjunto que ultrapassa a marca dos 20 GB de arquivos. Ele é basicamente um snapshot do repositório do Debian instável, que recebe uma rodada de testes e correções antes de ser disponibilizado ao público. A grande diferença em relação aos pacotes do repositório main é que eles não são oficialmente suportados pela equipe de desenvolvimento, são apenas oferecidos como um extra.

multiverse: É uma derivação do Universe, que agrupa softwares distribuídos sob licenças "não livres", que possuam alguma restrição com relação à modificação ou distribuição. Inclui diversos codecs, emuladores, plugins, programas diversos e até mesmo alguns drivers de impressora. Assim como no caso do restricted, o multiverse foi criado para permitir que estes pacotes pudessem ser incluídos na distribuição, sem que "contaminassem" os repositórios principais.

partner: Este é um repositório mantido pela Canonical (sem relação direta com o Ubuntu) para disponibilizar componentes licenciados. Ele inclui o "adobe-flashplugin", que instala o suporte a flash no Firefox e pacotes de documentação para alguns codecs comerciais vendidos no http://shop.canonical.com.

Além das questões filosóficas, a divisão permite que os repositórios sejam seletivamente desativados, como no caso de uma empresa, onde a equipe de TI decidiu utilizar apenas os pacotes do repositório main, juntamente com alguns outros pacotes específicos, para prevenir o aparecimento de problemas.

Em situações normais, você simplesmente mantém todos os repositórios ativados, com a possível exceção dos repositórios com o código fonte, que são úteis apenas para quem está interessado em compilar seus próprios pacotes:

repos_html_58bd00d2

Você pode também escolher entre baixar os pacotes dos servidores principais (o archive.ubuntu.com) ou usar os servidores do Brasil (o br.archive.ubuntu.com) que costumam ser mais rápidos. Por default o instalador utiliza também os pacotes do CD-ROM de instalação, que inclui alguns pacotes extras que não são instalados juntamente com o sistema.

O que o gerenciador faz é simplesmente ativar ou desativar as linhas correspondentes dentro do arquivo "/etc/apt/sources.list" conforme você altera as opções, exatamente o mesmo que você faria ao editar o arquivo manualmente. As linhas referentes aos repositórios principais dentro do arquivo são:

deb http://archive.ubuntu.com/ubuntu/ intrepid main restricted
deb http://archive.ubuntu.com/ubuntu/ intrepid universe
deb http://archive.ubuntu.com/ubuntu/ intrepid multiverse
deb http://archive.canonical.com/ubuntu intrepid partner

O "intrepid" em cada linha especifica a versão do Ubuntu em uso. Ao atualizar do 8.10 para o 9.04, por exemplo, o "intrepid" em todas as linhas seria substituído por "jaunty". Aqui vai uma lista rápida dos nomes e versões para referência:

warty: 4.10
hoary: 5.04
breezy: 5.10
dapper: 6.06
edgy: 6.10

feisty: 7.04
gutsy: 7.10
hardy: 8.04
intrepid: 8.10
jaunty: 9.04

Cara cada um destes repositórios, está disponível também uma linha iniciada com "deb-src", que corresponde ao repositório com o código-fonte dos pacotes. A opção do repositório "partner" aparece na aba "Programas de Terceiros" do configurador.

Em seguida, temos as opções de atualização do sistema, que são agrupadas na terceira aba. Elas são divididas em 4 grupos:

security: Inclui as atualizações de segurança, que tapam as brechas do sistema, mas não adicionam novas funcionalidades aos programas. As atualizações de segurança são especialmente importantes no Ubuntu, já que o sistema não utiliza nenhum firewall por padrão, dependendo apenas das atualizações dos serviços. Elas são atualizações de baixo risco, que raramente causam problemas.

updates: Inclui todas as novas versões dos programas, o que representa mais de 80% das atualizações disponíveis. Se você está apenas interessado em manter seu sistema estável, baixando apenas as atualizações importantes, você pode desativar este repositório, mantendo apenas o security.

proposed: Contém atualizações em estágio de teste, que não são inteiramente estáveis. É uma espécie de versão "beta" do updates, que permite que você tenha acesso às atualizações em primeira mão, mas sem garantia de estabilidade. Se você não quer dor de cabeça, é melhor mantê-lo desativado.

backports: As versões do Ubuntu são suportadas por um período de 18 meses (nas versões normais), ou 36 meses (no caso das versões LTS), o que corresponde ao lançamento de duas ou cinco novas versões. Os backports são versões portadas de novas versões dos softwares, adaptados para rodarem nas versões antigas.

Eles permitem que você atualize alguns componentes do sistema (obtendo acesso a uma nova versão do Gnome ou do KDE, por exemplo), sem precisar atualizar o sistema inteiro. A principal observação é que os backports recebem apenas uma rodada rápida de testes, o que abre margem para o aparecimento de bugs inesperados. Justamente por isso, você tem a opção de desativá-los no gerenciador:

repos_html_m59b9f3db

Definidos os repositórios, falta a configuração das atualizações automáticas, que são feitas através do Gerenciador de Atualizações ("Sistema > Administração > Gerenciador de atualizações"), a irritante setinha ao lado do relógio. Por padrão, o sistema vem configurado para notificar sobre atualizações do security e do updates diariamente, o que resulta em um volume muito grande de pacotes a baixar e faz com que muitos optem por simplesmente desativarem as atualizações automáticas. Entretanto, você pode reduzir o número de avisos simplesmente desativando o updates (mantendo apenas o security) e especificando um intervalo maior para as atualizações.

Estas opções correspondem às linhas com o "security", "updates" e "backports" dentro do sources.list:

deb http://archive.ubuntu.com/ubuntu/ intrepid-security main restricted
deb http://archive.ubuntu.com/ubuntu/ intrepid-security universe
deb http://archive.ubuntu.com/ubuntu/ intrepid-security multiverse

deb http://archive.ubuntu.com/ubuntu/ intrepid-updates main restricted
deb http://archive.ubuntu.com/ubuntu/ intrepid-updates universe
deb http://archive.ubuntu.com/ubuntu/ intrepid-updates multiverse

deb http://archive.ubuntu.com/ubuntu/ intrepid-backports main restricted universe multiverse

O gerenciador também avisa sobre a disponibilidade de novas versões do sistema, o que é ajustado através da última opção, onde você pode escolher entre receber avisos de todas as novas versões, atualizando a cada 6 meses, ou ser avisado apenas do lançamento de versões LTS, atualizando a cada 18 meses:

repos_html_1bcd907c

Como em outros sistemas, o upgrade direto de uma versão para outra é sempre um processo passível de problemas. O grande problema é que (por simples falta de mãos de obra suficiente) os upgrades são testados apenas em configurações comuns, onde o sistema é usado sem grandes modificações. Entretanto, na prática é comum que você use um conjunto de pacotes muito diferente do original, com muitos dos programas originais substituídos por outros, somado coma instalação de vários programas adicionais. Isso faz com que o trabalho do atualizador seja muito mais complicado e os resultados mais imprevisíveis, fazendo com que a atualização apresente defeitos diversos ou mesmo falhe completamente em alguns casos específicos.

Outra observação importante é que você nunca deve desligar o sistema no meio do processo de atualização, caso contrário você criará uma situação onde parte dos pacotes estão atualizados e outros não, o que será uma receita para o desastre no próximo boot.

O ideal é que você inicie a atualização no final do dia, deixando que o sistema baixe os pacotes e inicie o processo durante a noite e você possa apenas responder as configurações e terminar o processo na manhã seguinte. Como de praxe, é sempre importante fazer um backup completo do diretório home e de outras pastas do sistema onde guarde arquivos, só por via das dúvidas.

Como quase tudo no sistema, a atualização pode ser feita também manualmente. Você precisa apenas editar o sources.list, substituindo o nome da versão em todas as linhas (de "intrepid" para "jaunty", por exemplo) e em seguida rodar o "apt-get update" seguido do "apt-get dist-upgrade", que é justamente o que é feito pelo atualizador:

$ sudo apt-get update
$ sudo apt-get dist-upgrade

Diferente do "apt-get upgrade", que faz uma atualização seletiva, instalando apenas pacotes cujas atualizações não demandem a instalação de novos pacotes, o dist-upgrade faz uma atualização completa do sistema, atualizando todos os pacotes e instalando todas as novas dependências.

Para reduzir o tempo que você precisará ficar na frente do micro acompanhando o upgrade, você pode fazer com que ele baixe os pacotes na noite anterior, deixando para fazer o upgrade propriamente dito no dia seguinte. Para isso, adicione a opção "-d", como em:

$ sudo apt-get -d dist-upgrade

O "-d" ativa o modo "download only", onde o apt apenas baixa os pacotes e os salva no cache. Isso permite que você execute o comando novamente, sem o "-d", quando quiser fazer a atualização propriamente dita.

Por default, o apt simplesmente usa toda a banda disponível, o que pode ser um problema se você quiser fazer outras coisas enquanto ele baixa os arquivos, ou se compartilha a conexão com outras pessoas. Para limitar a taxa de download, crie o arquivo "/etc/apt/apt.conf.d/98bandlimit", com o seguinte conteúdo:

Acquire {
Queue-mode "access";
http { Dl-Limit "48"; };
};

O "48" na terceira linha especifica a taxa máxima de download que será usada pelo apt, basta substituí-lo pelo valor desejado. Uma boa fórmula é limitar o apt a 50% da banda total oferecida pela conexão, o que faz com que o download continue sendo feito a um limite razoável e o impacto sobre outras atividades seja pequeno.

Outra maneira de limitar a taxa de download do apt é executar o comando através do trickle (que você pode instalar usando o "apt-get install trickle"), como em:

$ sudo trickle -s -d 48 apt-get -d dist-upgrade

Assim como no exemplo anterior, o "48" especifica a taxa máxima de download, em kbytes.

O trickle (http://monkey.org/~marius/pages/?page=trickle), que é um pequeno aplicativo de traffic shapping de linha de comando. Ele controla o acesso à rede por parte do aplicativo, monitorando o tráfego de dados e atrasando as requisições, de maneira a encaixá-lo dentro das taxas especificadas por você. A grande vantagem é que a limitação é aplicada apenas ao aplicativo especificado, sem atrapalhar a conexão de outros programas que esteja usando, nem de outros micros da rede.

O "-s" faz com que ele rode em modo stand-alone, o que é o ideal quando você quer usá-lo para apenas um comando específico, enquanto o "-d" especifica a taxa máxima de download, em kbytes. No caso de aplicativos que fazem upload de arquivos, como no caso do bittorrent, você pode especificar a taxa máxima de upload usando a opção "-u", como em:

$ trickle -s -d 48 -u 16 btdownloadcurses arquivo.torrent

Naturalmente, o uso não está limitado apenas aos aplicativos de linha de comando. Você pode limitar as taxas de download ao baixar arquivos através do Firefox, por exemplo, chamando-o através do trickle, como em:

$ trickle -s -d 48 firefox

Créditos: Carlos Morimoto

0 comentários:

Postar um comentário