Gerenciador de pacotes e apt

1. O que é um pacote

Um "pacote" (ou "pacote de software") geralmente se refere a um aplicativo, que pode ser um aplicativo GUI, uma ferramenta de linha de comando ou uma biblioteca de software (exigida por outros programas de software). Um pacote é essencialmente um arquivo compactado que contém arquivos binários executáveis, arquivos de configuração e, às vezes, informações de dependência.

Antigamente, o software costumava ser instalado a partir de seu código-fonte. Você irá consultar um arquivo (geralmente denominado README) para ver de quais componentes de software ele precisa e a localização dos arquivos binários. Geralmente inclui um script de configuração ou Makefile. Você tem que compilar o software sozinho ou lidar com todas as dependências sozinho (alguns softwares requerem a instalação de outro).

Para se livrar dessa complexidade, a distribuição Linux criou seu próprio formato de pacote para fornecer aos usuários finais arquivos binários prontos para usar (software pré-compilado) para instalar o software, enquanto fornece alguns metadados (número da versão, descrição ) e dependências.

É como fazer um bolo e comprar um bolo.
Em meados da década de 1990, o Debian criou o formato de empacotamento DEB (.deb) e o Red Hat Linux criou o sistema de empacotamento RPM (abreviação de Red Hat Package Manager) (.rpm). A forma de compilar o código-fonte ainda existe, mas agora é opcional.
Insira a descrição da imagem aqui
Para interagir ou usar o sistema de empacotamento, você precisa de um gerenciador de pacotes. Os usuários só precisam decidir que bolo comer e como fazê-lo em um depósito de software semelhante a uma loja.

2. Como funciona o gerenciador de pacotes?

Lembre-se de que o gerenciador de pacotes é um conceito geral, não é exclusivo do Linux. Freqüentemente, você encontrará gerenciadores de pacotes para vários softwares ou linguagens de programação. Existem gerenciadores de pacotes PIP apenas para pacotes Python. Até o editor Atom tem seu próprio gerenciador de pacotes. Como o foco deste artigo é o Linux, começarei pela perspectiva do Linux. No entanto, a maioria das explicações aqui também pode ser aplicada a gerenciadores de pacotes gerais. Eu criei este diagrama (baseado no SUSE Wiki) para que você possa entender facilmente como o gerenciador de pacotes funciona.
Insira a descrição da imagem aqui
Quase todas as distribuições do Linux têm um " repositório de software ", que é basicamente uma coleção de pacotes de software. Sim, pode haver mais de uma biblioteca de software. A biblioteca de software contém diferentes tipos de pacotes de software.

O warehouse de software também possui um arquivo de metadados, que contém informações sobre o pacote de software, como o nome do pacote de software, o número da versão, a descrição do pacote de software e o nome do warehouse de software. Isso é o que você vê usando o comando apt show no Ubuntu / Debian.

O gerenciador de pacotes em seu sistema irá primeiro interagir com os metadados. O gerenciador de pacotes cria um cache local de metadados em seu sistema. Quando você executa a opção de atualização do gerenciador de pacotes (como o apt update), ele atualiza o cache de metadados local referenciando os metadados no repositório.

Quando você executa o comando de instalação do gerenciador de pacotes (por exemplo, apt install nome_do_pacote), o gerenciador de pacotes fará referência a este cache. Se encontrar as informações do pacote no cache, ele usará a Internet para se conectar ao warehouse correspondente e baixar o pacote antes de instalá-lo em seu sistema.

Um pacote pode ter dependências. Isso significa que pode ser necessário instalar outros pacotes de software. O gerenciador de pacotes geralmente lida com essas dependências e as instala automaticamente junto com o pacote que você está instalando.

Insira a descrição da imagem aqui
O gerenciador de pacotes no Linux lida com dependências : Da mesma forma, quando você usa o gerenciador de pacotes para excluir um pacote, ele o excluirá automaticamente ou notificará que o sistema possui pacotes não usados ​​que podem ser limpos.

Além de instalar e excluir essas tarefas óbvias, você também pode usar o gerenciador de pacotes para configurar o pacote e gerenciá-lo de acordo com suas necessidades. Por exemplo, você pode impedir que a versão de um pacote seja atualizada durante as atualizações regulares do sistema. Seu gerenciador de pacotes pode fazer muito mais.

Diferentes tipos de gerenciadores de pacotes Os gerenciadores de
Insira a descrição da imagem aqui
pacotes variam dependendo do sistema de empacotamento, mas o mesmo sistema de empacotamento pode ter vários gerenciadores de pacotes. O gerenciador de pacotes não é necessariamente baseado na linha de comando, também existem ferramentas gráficas de gerenciamento de pacotes, como o Synaptic. O "Centro de Software" da sua distribuição também é um gerenciador de pacotes, mesmo se estiver executando apt-get ou DNF por baixo. Por exemplo, o RPM tem gerenciadores de pacotes Yum e DNF. Para DEB, você tem gerenciadores de pacotes baseados em linha de comando, como apt-get e aptitude.

Três, ferramenta apt do Ubuntu

Advanced Packaging Tools (Inglês: Advanced Packaging Tools, abreviado como APT) é Debian e seu gerenciador de pacotes Linux derivado. Usando esta ferramenta, podemos facilmente baixar, configurar e instalar formatos de software em formato binário ou de código-fonte. Para sistemas Debian, a ferramenta dpkg é freqüentemente falada. Esta função é semelhante à função apt.

apt fornece uma interface de linha de comando avançada para o sistema de gerenciamento de pacotes. Se você é um usuário relativamente antigo do Ubuntu, pode frequentemente usar o apt-get em vez do apt. Comparado ao apt-get, o apt é mais como uma versão simplificada do apt-get. A simplificação se reflete apenas na menção dos comandos mais comuns . E opções. Afinal, nem todo mundo gosta de comandos de controle longos. Dê uma olhada na comparação entre apt e apt-get:

comando apt comando apt-get significado
apt instalar apt-get install Instale um pacote
apt remover apt-get remove Desinstalar um pacote
purgar apto apt-get purge Desinstalar e remover arquivos de configuração
atualização apt apt-get update Atualizar o índice do repositório
atualização apt apt-get upgrade Atualize todos os pacotes atualizáveis
apt autoremove apt-get auto remove Exclua automaticamente pacotes desnecessários
apt full-upgrade apt-get dist-upgrade Gerenciar dependências automaticamente ao atualizar pacotes
busca apt apt-get search Aplicativo de pesquisa
show apto apt-cache show Mostrar detalhes do pacote de instalação

Tome cmake como exemplo para ver como usar essa ferramenta.

Desinstalar cmake : sudo apt remove cmake
Insira a descrição da imagem aqui
install cmake : sudo apt install cmake
Insira a descrição da imagem aqui
cmake application information view :
Insira a descrição da imagem aqui
A partir das informações exibidas pelo gerenciador do apt, você pode ver:

  • a versão cmake é3.16.3
  • Tamanho
  • confiar
  • Pagina inicial
  • Descrição
  • Localização da fonte APT: http://mirrors.aliyun.com/ubuntu focal / main amd64 Packages

A localização específica pode ser um pouco diferente da fonte APT: http://mirrors.aliyun.com/ubuntu/dists/focal/main/binary-amd64/Packages.gz, neste pacote compactado, podemos ver a configuração relacionada ao cmake :

Package: cmake
Architecture: amd64
Version: 3.16.3-1ubuntu1
Multi-Arch: foreign
Priority: optional
Section: devel
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Debian CMake Team <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 18758
Depends: cmake-data (= 3.16.3-1ubuntu1), procps, libarchive13 (>= 3.3.3), libc6 (>= 2.17), libcurl4 (>= 7.16.2), libexpat1 (>= 2.0.1), libgcc-s1 (>= 3.0), libjsoncpp1 (>= 1.7.4), librhash0 (>= 1.2.6), libstdc++6 (>= 9), libuv1 (>= 1.11.0), zlib1g (>= 1:1.1.4)
Recommends: gcc, make
Suggests: cmake-doc, ninja-build
Filename: pool/main/c/cmake/cmake_3.16.3-1ubuntu1_amd64.deb
Size: 3668668
MD5sum: 0901cd90df683245c1c63aa25494e895
SHA1: 987da0bb67fef6ed1cc4bdf791c983534dea4341
SHA256: 1f09f5bd58627092ed1787538051ce9f5f016ab279fe4c795e01faa1f9619180
Homepage: https://cmake.org/
Description: cross-platform, open-source make system
Description-md5: 47b53839da906127970f1e8c870afc2d

Para simplificar, dado um endereço, sempre que a autenticação do Ubuntu é passada, o novo pacote de instalação será atualizado para o pacote no site, e o usuário pode sincronizar o endereço do novo software através da atualização. Então, há uma maneira de instalar uma versão superior do cmake?

  • ppa
  • Código binário
  • Código fonte

Quatro, ferramentas de gerenciamento de armazém de software Ubuntu

Um warehouse de software é um conjunto de arquivos que contém informações sobre vários softwares e suas versões, bem como outras informações detalhadas, como somas de verificação. Cada versão do Ubuntu tem seus próprios quatro repositórios de software oficiais :

  • Software Main-Free e open source suportado pela Canonical;
  • Software livre e de código aberto mantido pela comunidade;
  • Restrito - o driver proprietário do dispositivo;
  • Software Multiverse restrito por direitos autorais ou questões legais.
    Insira a descrição da imagem aqui
    Além do software oficial, existem outros softwares (Outros Softwares) , o mais comum pode ser o VSCODE!
    Insira a descrição da imagem aqui

O sistema recupera as informações correspondentes por meio /etc/aptdos sources.listarquivos armazenados no diretório , o que pode ajudar o sistema a obter o pacote de software correspondente do site onde o software está realmente armazenado. Nesse caso, ao executar o sudo apt updatecomando, seu sistema usará a ferramenta APT para verificar o repositório de software e armazenar o software e suas informações de versão no cache. Quando você usa o sudo apt install package_namecomando, ele obtém o pacote da URL do software de armazenamento real por meio das informações. Se não houver informações sobre um determinado pacote no warehouse de software, ele será solicitado E:Unable to locate package. Há um problema com o uso do repositório oficial: para garantir a compatibilidade, as novas ferramentas desenvolvidas e atualizadas no Ubuntu não serão atualizadas para o sistema existente imediatamente, mas serão oficialmente adicionadas ao repositório oficial após alguns testes. Desta vez, pode vários meses. Então, como podemos resolver isso? Por meio do PPA!

PPA

PPA (Personal Package Archive) é um warehouse que contém informações de software quando um pacote pessoal é arquivado.O significado pessoal é exclusivo do desenvolvedor e não possui uma licença formal para distribuição. O Ubuntu fornece uma plataforma chamada Launchpad que permite aos desenvolvedores de software criar seus próprios repositórios de software. Usuário final, ou seja, você pode adicionar o repositório PPA ao arquivo sources.list ao atualizar o sistema, seu sistema saberá a disponibilidade deste novo software, então você pode usar o sudo apt installcomando padrão para instalá-lo.

  • sudo add-apt-repository <PPA_info>Este comando adiciona o repositório PPA à lista.
  • sudo apt-get update Este comando atualiza a lista de pacotes que podem ser instalados no sistema atual.
  • sudo apt-get install <package_in_PPA> Este comando instala o pacote.

Tal como:

sudo add-apt-repository ppa:dr-akulavich/lighttable

Você notará que este comando não possui a URL do repositório do software. Isso ocorre porque a ferramenta foi projetada para abstrair as informações da URL antes de mostrá-las a você.

Uma pequena nota: se você adicionar ppa: dr-akulavich / lighttable, obterá a Light Table. Mas se você adicionar ppa: dr-akulavich, você obterá todos os repositórios ou pacotes no "repositório de software superior". Está dividido por nível.

Basicamente, quando você adiciona um PPA usando add-apt-repository, ele executa as mesmas operações que executar manualmente estes comandos:

deb http://ppa.launchpad.net/dr-akulavich/lighttable/ubuntu YOUR_UBUNTU_VERSION_HERE main
deb-src http://ppa.launchpad.net/dr-akulavich/lighttable/ubuntu YOUR_UBUNTU_VERSION_HERE main

As duas linhas acima são a maneira tradicional de adicionar qualquer repositório de software ao arquivo sources.list do seu sistema. Mas o PPA completará automaticamente essas tarefas para você, sem considerar o URL exato do warehouse de software e a versão do sistema operacional.

O ponto menos importante aqui é que, ao usar o PPA, ele não altera o arquivo sources.list original. Ao contrário, ele /etc/apt/sources.dcria dois arquivos no diretório de nível de sistema, um .list e arquivos de backup com um sufixo .save.
Insira a descrição da imagem aqui
Esta é uma medida de segurança para garantir que o PPA adicionado não seja confundido com o arquivo sources.list original. Também ajuda a remover o PPA.
Você pode perguntar por que deseja usar o PPA, o PPA precisa ser usado por meio da linha de comando, nem todo mundo gosta de usar a linha de comando. Por que não distribuir diretamente os pacotes DEB que podem ser instalados graficamente?

A resposta está no processo de atualização. Se você usar o pacote DEB para instalar o software, não há garantia de que o software instalado será atualizado para uma versão mais recente quando você executar os comandos sudo apt update e sudo apt upgrade.

Isso ocorre porque o processo de atualização do apt depende do arquivo sources.list. Se não houver nenhuma entrada de software correspondente no arquivo, ele não será atualizado por meio do procedimento de atualização de software padrão.

Então, isso significa que o software instalado com o DEB nunca será atualizado? não. Depende de como o pacote DEB foi criado.

Alguns desenvolvedores adicionarão automaticamente uma entrada a sources.list para que o software possa ser atualizado como um software normal. O navegador Google Chrome é um exemplo.

Alguns softwares irão notificá-lo quando uma nova versão estiver disponível quando for executado. Você deve baixar o novo pacote DEB e executá-lo novamente para atualizar o software atual para uma versão mais recente. Oracle Virtual Box é um exemplo.

Para os pacotes DEB restantes, você deve encontrar manualmente as atualizações, o que é muito inconveniente, especialmente quando o seu software é para testadores Beta, você precisa adicionar muitas atualizações com frequência. Este é exatamente o problema que o PPA está tentando resolver.

[1] [APT] https://zh.wikipedia.org/wiki/APT
[2] [A diferença entre rpm e deb] https://www.cnblogs.com/longchang/p/12530697.html
[3] [Linux (3): ferramentas de gerenciamento de pacotes Linux] https://blog.csdn.net/xu_fengyu/article/details/85218057

Acho que você gosta

Origin blog.csdn.net/weixin_39258979/article/details/111772857
Recomendado
Clasificación