logo

Gerenciador de pacotes Linux

Introdução

A sistema de gerenciamento de pacotes ou gerenciador de pacotes é um grupo de ferramentas de software. Ele automatiza o processo de instalação, processo de atualização, processo de configuração e processo de remoção dos programas de computador para um sistema operacional do computador de maneira eficiente. A gerenciador de pacotes trabalha com pacotes, dados em arquivos compactados e distribuições de software.

Os pacotes incluem metadados como o nome do software, descrição do seu objetivo, checksum (preferencialmente uma função hash criptográfica), d lista de dependências, fornecedor, e número da versão essencial para que o software funcione corretamente.

  • Os metadados são salvos no banco de dados de um pacote local durante a instalação.
  • Normalmente, os gerenciadores de pacotes gerenciam o banco de dados de informações de versão e dependências de software para evitar a falta de pré-requisitos e incompatibilidades de software.
  • Eles operam em estreita colaboração com lojas de aplicativos, gerenciadores de repositórios binários e repositórios de software.
  • Os gerenciadores de pacotes são desenvolvidos para eliminar a necessidade de atualizações e instalações manuais.
  • Especificamente, pode ser útil para grandes organizações cujos sistemas operacionais geralmente combinam centenas ou mais pacotes de software diferentes.

Funções do Gerenciador de Pacotes

Um pacote de software pode ser definido como o arquivo combinando também um programa de computador e metadados essenciais para o desenvolvimento. O programa do sistema pode estar dentro do código-fonte que deve ser construído e compilado primeiro.

Os metadados do pacote contêm a versão do pacote, a descrição do pacote e as dependências (pacotes que requerem instalação prévia). Muitos gerenciadores de pacotes possuem a função de instalar, desinstalar, manter ou localizar pacotes de software sob o comando do usuário.

O sistema de gerenciamento de pacotes contém alguns típicos funções que são mencionados abaixo:

  • Lidar com os arquivadores de arquivos para extrair arquivos de pacotes.
  • Garantir a autenticidade e integridade do pacote autenticando seus certificados digitais e somas de verificação respectivamente.
  • Atualizar, instalar, baixar ou pesquisar software existente por meio de uma loja de aplicativos ou repositório de software.
  • Combinar pacotes via função para reduzir a confusão do usuário.
  • Manter dependências para garantir que um pacote foi instalado junto com todos os pacotes necessários. Então, ignorando 'inferno da dependência'.
Gerenciador de pacotes Linux

Front-ends para pacotes compilados (localmente)

Administradores de sistema pode instalar e gerenciar o software com a ajuda de algumas ferramentas diferentes do software de gerenciamento de pacotes. Por exemplo, um administrador local pode baixar o código-fonte (descompactado), compilá-lo e instalá-lo.

Isso pode fazer com que o estado do sistema local saia da sincronização junto com o banco de dados do estado do gerenciador de pacotes. O administrador local seria necessário para tomar algumas medidas adicionais, como integrar manualmente as modificações em um gerenciador de pacotes ou gerenciar algumas dependências.

java booleano

Existem algumas ferramentas presentes para garantir que os pacotes de compilação (localmente) são desenvolvidos com o gerenciamento de pacotes.

VerificarInstalar está disponível para .rpm ou Distribuições baseadas em arquivo .deb e SlackwareLinux também. Para híbrido sistemas como Arco Linux e sistemas baseados em receitas como GentooLinux, é possível especificar inicialmente uma receita, que então confirma se um pacote cabe em um banco de dados de pacotes local.

Desafios com bibliotecas distribuídas

Vários sistemas de computador que dependem da vinculação dinâmica de bibliotecas, em vez da vinculação estática de bibliotecas, distribuem bibliotecas de instruções de máquina (executáveis) entre aplicativos e pacotes.

Nesses tipos de sistemas, os relacionamentos típicos entre pacotes distintos que necessitam de versões de biblioteca resultam em um desafio chamado 'inferno da dependência'.

Também é conhecido como 'Inferno de DLL' no Microsoft Windows ao lidar com bibliotecas vinculadas dinamicamente. Um bom gerenciamento de pacotes é crucial para esses sistemas.

De OPENSTEP , o sistema de estrutura foi uma tentativa de resolver esse problema, permitindo que mais de uma versão da biblioteca fosse instalada simultaneamente e que muitos pacotes de software descrevessem a qual versão eles estavam vinculados.

Manutenção de configuração

As atualizações do arquivo de configuração são particularmente problemáticas com atualizações de software. Pelo menos no Unix, já que os gerenciadores de pacotes se originaram como a extensão do utilitário de arquivamento de arquivos.

Normalmente, eles apenas retêm ou sobrescrevem os arquivos de configuração, em vez de usar regras para eles. Vários problemas podem surgir quando o formato do arquivo de configuração é modificado. Por exemplo, se um arquivo de configuração antigo não desabilitar explicitamente as opções mais recentes, elas deverão ser exibidas. Alguns gerenciadores de pacotes, como o dpkg do Debian, permitem a configuração no momento da instalação. Em alguns outros casos, é desejável instalar pacotes usando a configuração padrão e sobrescrever a configuração na instalação (sem cabeça) para um grande número de sistemas. Este tipo de instalação (pré-configurada) também é suportada via dpkg.

Supressão de atualização

É tradicional disponibilizar ao usuário junto com a lista de ações a serem executadas (geralmente a lista de pacotes a serem atualizados e fornecer possivelmente os números de versão nova e antiga) se um usuário cooperar com o software de gerenciamento de pacotes para realizar a atualização.

Ele permite que o usuário selecione um único pacote para atualizações ou faça uma atualização em massa. Vários gerenciadores de pacotes podem ser configurados para nunca atualizar muitos pacotes, ou para atualizá-los apenas se instabilidades ou vulnerabilidades críticas forem detectadas no padrão antigo, conforme especificado pelo pacote de software. Às vezes, esse processo é conhecido como fixação de versão.

Por exemplo:

yum suporta isso com o excluir=openoffice* sintaxe

pacman com a sintaxe Ignorar=openoffice (em ambos os casos, para suprimir a atualização do openoffice)

dselect e dpkg suportam parcialmente pelo sinalizador hold dentro das seleções de pacote.

aptidão tem 'proibir' e 'segurar' bandeiras.

o portage suporta isso através de um arquivo de configuração, ou seja, pacote.mask.

APT estende a flag, ou seja, segurar pelo complexo 'fixar' método (os usuários também podem colocar o pacote na lista negra).

Repositórios

Para fornecer aos usuários controle extra sobre os tipos de software que eles permitem que sejam instalados em seus sistemas (às vezes por conveniência e motivos legais por parte do distribuidor), o software às vezes é baixado usando vários repositórios de software.

travessia de árvore

Remoção de pacotes em cascata

Alguns dos aspectos mais desenvolvidos de gerenciamento de pacotes facilitam 'remoção de pacote em cascata', onde todos os pacotes que dependem do pacote de destino e todos os pacotes dos quais o pacote de destino depende também são removidos.

Comparação de comandos

No entanto, os comandos são exclusivos para todos os gerenciadores de pacotes específicos. Esses comandos são em grande parte traduzíveis porque a maioria dos gerenciadores de pacotes facilitam as mesmas funções.

Prevalência do Gerenciador de Pacotes

Gerenciadores de pacotes como o dpkg estão disponíveis já em 1994. Várias distribuições de Linux orientadas para pacotes binários dependem fortemente do sistema de gerenciamento de pacotes por causa de seu principal meio de manutenção e gerenciamento de software.

Muitos sistemas operacionais móveis como Windows Phone, iOS (semelhante ao Unix) e Android (baseado em Linux) dependem quase da respectiva App Store do fornecedor. Portanto, eles usam seu sistema de gerenciamento de pacotes (dedicado).

Comparação com os instaladores

Freqüentemente, um gerenciador de pacotes é conhecido como 'gerenciador de instalação'. Isso pode causar confusão entre instaladores e gerenciadores de pacotes. Algumas das principais diferenças são fornecidas abaixo:

Critério Gerenciador de pacotes instalador
Enviado com Normalmente, o sistema operacional Todos os programas de computador
Local das informações de instalação Um banco de dados central para instalação Totalmente, fica a critério do instalador. Pode ser um arquivo na pasta do aplicativo ou entre as pastas e arquivos do sistema operacional. Eles podem se registrar na lista de um desinstalador sem divulgar as informações de instalação.
Escopo de manutenção Potencialmente todos os pacotes em um sistema Apenas o produto ao qual foi embalado
Desenvolvedor Fornecedor de gerenciador de pacotes único Mais de um fornecedor de instalador
Formato do pacote Alguns formatos reconhecidos Pode haver tantos formatos quanto o número do aplicativo
Compatibilidade do formato do pacote Pode ser utilizado desde que um gerenciador de pacotes o utilize. Ou o usuário não atualiza um gerenciador de pacotes ou as novas versões do gerenciador de pacotes continuam a suportá-lo. Se o instalador usar qualquer formato de arquivo, o instalador será sempre compatível com ele. Embora os instaladores possam ser influenciados pela podridão do software, como qualquer computador.

Comparação com utilitário de automação

Quase todos os sistemas de gerenciamento de configuração de software representam a implantação e a construção de software separadamente. Normalmente, o utilitário de automação de construção pega os arquivos de código-fonte que já estão no formato legível por humanos em um sistema e acelera o procedimento de conversão deles em um pacote executável (binário) em um sistema semelhante.

Normalmente, um gerenciador de pacotes executado posteriormente em alguns outros sistemas baixa esses pacotes executáveis ​​(binários pré-construídos) na Internet e os instala.

Embora ambos os tipos de ferramentas incluam vários fatores comuns mencionados abaixo:

  • A classificação topológica do gráfico de dependência é aplicada em um gerenciador de pacotes para lidar com dependências entre muitos componentes binários.
  • Além disso, é aplicado dentro de um gerenciador de construção para lidar com a dependência entre muitos componentes de origem.
  • Vários makefiles fornecem suporte, não apenas a construção de executáveis.
  • Além disso, eles suportam a instalação usando make install.
  • Todos os gerenciadores de pacotes suportam a tradução do código-fonte (legível por humanos) em executáveis ​​​​binários e, em seguida, instalam-no para a distribuição baseada na fonte, como Homebrew, Sorcery, Portage, etc.

Algumas ferramentas como AP e Fazer são desenvolvidos para gerenciar a implantação e a construção. Eles também podem ser usados ​​como gerenciador de pacotes, utilitário de automação de compilação ou ambos.

Gerenciadores de pacotes básicos e seus formatos

Gerenciador de pacotes universal

Também é chamado gerenciador de repositório binário. Este gerenciador de pacotes é uma ferramenta de software criada para otimizar o armazenamento e download de arquivos binários, pacotes e artefatos produzidos e usados ​​em um processo de desenvolvimento de software.

Gerenciadores de pacotes universais foco em padronizar a forma como os usuários tratam cada tipo de embalagem. Eles fornecem aos usuários a capacidade de usar métricas de conformidade e segurança em torno de cada tipo de artefato. Eles foram designados como estando no meio de um Conjunto de ferramentas DevOps.

Gerenciador de pacotes Linux

Sistemas de software livre e de código aberto

Os pacotes com licenças compatíveis e semelhantes existem para uso em diversos sistemas operacionais pelo comportamento de software livre e de código aberto.

Esses pacotes poderiam ser distribuídos e combinados usando sistemas de empacotamento internamente complexos e configuráveis ​​para gerenciar vários conflitos e dependências específicas de versão e permutações de software.

Além disso, alguns sistemas de empacotamento de software livre e de código aberto são publicados como software livre e de código aberto.

Uma diferença entre o gerenciamento de pacotes em sistemas operacionais como Windows e Mac OS X e aqueles em software de código aberto e livre, como Linux, é que os sistemas de software livre e de código aberto permitem que pacotes de terceiros sejam atualizados e instalados a partir de um mecanismo semelhante. . Considerando que muitos gerenciadores de pacotes do Windows e Mac OS X atualizarão o software fornecido pela Microsoft e pela Apple, respectivamente.

A capacidade de atualização contínua de software de terceiros é adicionada incluindo a URL do repositório correspondente no arquivo de configuração do gerenciamento de pacotes.

Formatos de pacote

Todos os gerenciadores de pacotes dependem dos metadados e do formato dos pacotes que podem gerenciar. Os gerenciadores de pacotes exigem que os grupos de arquivos sejam agrupados para o gerenciador de pacotes específico com metadados adequados, como dependências.

Uma coleção principal de utilitários geralmente gerencia a instalação geral por meio desses pacotes e mais de um gerenciador de pacotes aplica esses utilitários para fornecer funcionalidades adicionais.

Exemplo:

  1. yum depende do rpm como backend. Yum desenvolve a funcionalidade de backend adicionando aspectos como configuração simples para manter a rede do sistema.
  2. O gerenciador de pacotes sinápticos fornece uma GUI aplicando a biblioteca da Advanced Packaging Tool que depende do dpkg.

Estrangeiro pode ser definido como um programa que traduz entre formatos distintos de pacotes Linux. Está apoiando a conversão entre Slackware (.tgz, .tlz, .tbz, .txz) pacotes, Solaris (.pkg), Stampede (.slp), .deb, pacotes .rpm, e Base Padrão Linux (LSB) compatível.

Em vários sistemas operacionais móveis, como Google Play utiliza o formato de pacote do Pacote de aplicativos Android (resumidamente APK ) enquanto o Loja do Windows usa os formatos de XAP e APX. Ambos Loja do Windows e Google Play contêm gerenciadores de pacotes homônimos.

Gerenciadores de pacotes em nível de aplicativo

Existem alguns gerenciadores de pacotes (complementos) para sistemas operacionais para linguagens de programação e com capacidades restritas onde os desenvolvedores necessitam das bibliotecas atuais. Os gerenciadores de pacotes em nível de aplicativo concentram-se na pequena parte do sistema de software, em contraste com os gerenciadores de pacotes em nível de sistema.

Normalmente, eles residem em uma árvore de diretórios. Não é organizado por um gerenciador de pacotes em nível de sistema como /usr/local/fink ou c:cygwin. Embora possa não ser a condição para um gerenciador de pacotes que trabalha com bibliotecas de programação, causando um possível conflito, pois ambos os gerenciadores de pacotes podem interromper as atualizações e solicitar 'ter' o arquivo.