rpm: o que determina se um pacote atualiza um pacote anterior ou é instalado adicionalmente

rpm: o que determina se um pacote atualiza um pacote anterior ou é instalado adicionalmente

É simplesmente o caminho de instalação? Se for esse o caso, qualquer pacote que tenha versão no nome/caminho nunca atualizará outro, então não pode ser isso. Não vejo menção a isso nas informações de dependência manual. Ao criar um RPM, como posso dizer ao cAPI-3.1.6-x86_64.rpm que ele deve atualizar o cAPI-2.1.7-x86_64.rpm quando eu o instalar, não criar um novo caminho em /usr/lib e ignorar o pacote existente?

Responder1

Geralmente concordando com@msuchyque a característica relevante é a combinação do pacotenomeearquitetura, ajuda a fornecer uma visão geral.

O local para procurar informações não é "upgrade", masinstalando múltiplas versõesde um pacote:

Várias versões instaladas(em rpm.org) dá uma boa visão geral:

Todas as ferramentas de gerenciamento de pacotes operam usando certas chaves para se referir a pacotes/programas. Normalmente essa chave é package nome ou pacote nome e pacote arco

Ou seja, existem duas opções (normalmente): o nome do pacote sozinho ou o nome do pacote em combinação com a arquitetura. Continua dizendo

os pacotes do kernel são construídos especificamente para que não ofereçam arquivos conflitantes de uma versão do kernel para a próxima

Ou seja, os kernels são tratados especialmente porque é conhecido (pelos desenvolvedores de pacotes) que todos os arquivos em um pacote de kernel Linux têm nomes distintos (ou os nomes dos arquivos têm a versão incorporada ou os arquivos residem em diretórios com a versão incorporada) . Esse é um caso especial. Muitos casos especiais dificultam o trabalho dos mantenedores do RPM.

Ele continua mostrando como pacotes para programas com versões estáveis ​​de longo prazo são construídos usando esses números de versão como parte do pacotenome, permitindo assim que várias versões do programa sejam instaladas na mesma máquina. O exemplo dado é para python. Outros programas que você pode ver usando o mesmo esquema incluem Apache, autoconf, gcc, java. Aqui estão alguns exemplos do Fedora22:

SDL2-2.0.3-5.fc22.x86_64
openjpeg2-2.1.0-6.fc22.x86_64
pygobject2-2.28.6-13.fc22.x86_64
pygobject3-3.16.2-1.fc22.x86_64
pygobject3-base-3.16.2-1.fc22.x86_64
python3-3.4.2-6.fc22.x86_64
qt5-qtbase-5.5.0-15.fc22.x86_64
vte291-0.40.2-1.fc22.x86_64
vte3-0.36.4-1.fc22.x86_64
webkitgtk3-2.4.9-1.fc22.x86_64
webkitgtk4-2.8.5-2.fc22.x86_64

Ao ver esses pacotes, é fácil ficar confuso sobre quais números fazem parte do nome do pacote e quais são osversãoeliberar. O RPM usa travessões ( -) para separá-los: se não houver travessão, o número faz parte do nome.

Responder2

É a %{name}.%{arch}combinação. Se for o mesmo, então é uma atualização. Se for diferente, então é outra instalação.

Ou seja, você pode ter cAPI-3.1.6-x86_64e cAPI-3.1.6-i386instalar simultaneamente. Mas você não pode ter cAPI-3.1.6-x86_64e cAPI-2.1.7-x86_64em um sistema (a menos que faça truques realmente sujos).

informação relacionada