Gerenciamento de pacotes
Índice
Resumo
Um sistema de gerenciamento de pacotes é uma coleção de ferramentas que fornece um método consistente de instalação, atualização e remoção de software em seu sistema. Distribuições Linux, incluindo openSUSE, tipicamente consistem de milhares de pacotes de software distintos.
Os aplicativos são distribuídos através de Pacotes que estão ligados a metadados que contêm informações adicionais tais como uma descrição da finalidade do aplicativo e uma lista de dependências necessárias para que o aplicativo seja executado corretamente. Os aplicativos são fornecidos por repositórios, ou meios de comunicação locais (CD, DVD ou disco rígido) ou repositórios online. Após a instalação, os metadados são armazenados em um banco de dados local de pacotes que é usado para recuperar os pacotes do software.
O Libzypp é a implementação do openSUSE de tal sistema de gerenciamento e fornece o software de gerenciamento YaST como interface gráfica do usuário e o Zypper como uma interface de linha de comando.
Pacotes
Os pacotes são diretórios de arquivos que incluem todos os arquivos que compõem uma peça de software (como um aplicativo em si, bibliotecas compartilhadas, pacotes de desenvolvimento que contém os arquivos necessários para construir o software em comparação a uma biblioteca, ...) e, finalmente, instruções sobre o modo como fazê-los funcionar.
Um pacote é devidamente integrado à distribuição se foi compilado com tal propósito, no que diz respeito aos caminhos de instalação, dependências, integração com o ambiente de trabalho, adequado roteiro de inicialização para servidores, etc... Por esta razão, deve-se sempre instalar os pacotes que foram compilados para a distribuição em que se deseja instalá-los, inclusive observando-se a versão exata da distribuição (por exemplo, o openSUSE 11.1). Como um exemplo, não instale os pacotes do Fedora no openSUSE, e nem mesmo os pacotes do openSUSE 11.1 no openSUSE 11.2.
Metadados do pacote
Um pacote contém também informações adicionais, vulgarmente conhecidas como Metadadados, tais como:
- um resumo,
- uma descrição,
- uma lista de arquivos contidos no pacote,
- a versão do software contido, bem como o número da versão do pacote,
- quando, onde e por quem foi compilado,
- para qual arquitetura foi compilado,
- somas de verificação dos arquivos contidos no pacote,
- a licença do software contido,
- outros pacotes que ele necessita para funcionar corretamente,
- etc...
As dependências do pacote
Um aspecto importante do repositório de pacotes são as relações contidas. Efetivamente, os pacotes também se relaciona com arquivos de outros pacotes, como os pacotes de aplicativos precisam de um ambiente de execução (outras ferramentas, bibliotecas, etc...) para realmente executar o aplicativo. As dependências do pacote são utilizadas para expressar tais relações.
Como exemplo, o pacote A necessita que os pacotes B, C e D sejam instalados em ordem para funcionar corretamente.
- Dependências de pacote são transitivas. Isto significa que: se o pacote A necessita do pacote B, e o pacote B necessita do pacote C, necessariamente o pacote A também necessita do pacote de C. Sendo este fato o porquê de, às vezes, se ter um monte de pacotes a instalar, embora se deseje apenas um aplicativo.
- Dependências em bibliotecas (tipicamente pacotes que começam com "lib" em seus nomes) são muito comuns e praticamente todos os aplicativos individuais dependem de um conjunto de pacotes de bibliotecas.
Os pacotes e as dependências do pacote são aspectos muito importantes das distribuições Linux (bem como outros sistemas BSD e UNIX), pois fornecem uma maneira modular para criar e gerir um sistema operacional e seus aplicativos. Isto é especialmente verdade para os pacotes da biblioteca.
Como exemplo, o pacote openssl contém bibliotecas de criptografia que são usadas por muitas aplicações e outras bibliotecas (por exemplo, para a criptografia SSL). Quando uma nova, uma melhorada versão do tt>openssl</tt> está disponível, todas as aplicações que o usam se beneficiarão dela apenas pela atualização de um único pacote para a nova versão.
É também uma maneira muito eficiente de manter um sistema estável e seguro. Assim, quando uma falha de segurança, exploit ou bug afeta uma biblioteca usada por um ou vários aplicativos, atualizar um pacote singular atualizará o sistema para todos aplicativos.
Formatos de pacote
No mundo das distribuições Linux, o software nativo vem embalado essencialmente em três tipos de formatos de pacotes.
- Um é o tgz (arquivos tar gzip), que são basicamente arquivos de código fonte. Podem conter qualquer coisa que o mantenedor do pacote entenda que seja útil. Além do formato do arquivo em si, necessário para extrair os arquivos, não há nada padronizado sobre o conteúdo de um arquivo tgz, que devem ser compilados, para que se possa executar o software.
- Outro é o rpm (Gerenciador de Pacotes RPM) que são arquivos pré-compilados. Criado pela Red Hat Linux e padronizado pela LSB, que atualmente é usado por muitas distribuições Linux como sistema de embalagem, inclusive pelo openSUSE.
- E por fim, o deb (Debian) que são arquivos pré-compilados usados nos sistemas baseados em Debian.
No entanto, se o formato dos arquivos, observado o sistema das dependências necessárias, não fornece a capacidade de gestão das dependências, ele apenas apresentará para o usuário quaisquer problemas encontrados à primeira vista e deixará ao usuário a decisão sobre o que fazer.
Por exemplo, se você quiser instalar um pacote RPM A que seja dependente do pacote RPM B, o RPM não instalará automaticamente o pacote B, mas apenas lhe dirá que ele precisa do pacote B e para. Cabe ao usuário instalar o pacote B e, em seguida, instalar o pacote A. Agora imagine o pacote B que depende do pacote C e do pacote D, sendo que o pacote D que possui dependências do pacote E e assim por diante e assim por diante. Você acaba perseguindo as dependências de pacotes manualmente por todos os ramos desta árvore imensa.
Gerenciador de pacotes
Nas distribuições Linux modernas como o openSUSE, a instalação de software é feita com um gerenciador de pacotes. O gerenciador de pacotes, que trabalha em cima do RPM, obtém os pacotes de software de repositórios (servidores online, CDs, DVDs, etc), resolve as dependências e os instala no seu sistema. O gerenciador de pacotes também facilita a remoção de pacotes mais tarde ou a atualização dos mesmos. O número de pacotes disponíveis para instalação depende de quais repositórios você tem adicionados aos sistema.
O gerenciador de pacotes, nativo do openSUSE, é o módulo Gerenciador de Software YaST e o módulo de linha de comando Zypper, embora a distribuição carregue com uma variedade de ferramentas de gerenciamento de pacotes.
Repositórios de pacotes
Antes que os pacotes podem ser instalados, eles deverão estar disponíveis, seja em repositórios de pacotes, seja em meios físicos, como CD ou DVD ou online através da Internet.
Os repositórios de pacotes do openSUSE incluem:
- Repositórios de pacotes oficiais que incluem os pacotes testados e suportados pelas versões do openSUSE; e
- Repositórios adicionais de pacotes administrados por terceiros, tais como o Packman e os Repositórios do Serviço de Compilação. Os quais fornecem vários pacotes adicionais, alguns dos quais estão mais atualizados, embora tenham sido minimamente testados, ou que não podem ser distribuídos juntamente com o openSUSE por razões de fundamentação legal.
Veja também
- Repositórios oficiais
- Repositórios Adicionais de pacotes
- SDB:Alteração e atualização do vendedor
- Upgrade de sistema