rpm: o que determina se um pacote atualiza um anterior ou é instalado além disso

2

É simplesmente o caminho da instalação? Se for esse o caso, qualquer pacote que tenha versão no nome / caminho nunca atualizará outro, de modo que não pode ser. Eu não vejo uma menção disso na informação de dependência manual. Ao criar um RPM, como eu digo 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 crie um novo caminho sob / usr / lib e ignore o pacote existente?

    
por Gregg Leventhal 06.11.2015 / 15:07

2 respostas

1

É a combinação %{name}.%{arch} . Se isso é o mesmo, então é upgrade. Se difere, então é outra instalação.

Ou seja. você pode ter cAPI-3.1.6-x86_64 e cAPI-3.1.6-i386 instalados simultaneamente. Mas você não pode ter cAPI-3.1.6-x86_64 e cAPI-2.1.7-x86_64 em um sistema (a menos que você faça truques realmente sujos).

    
por 06.11.2015 / 16:47
1

Geralmente concordando com @msuchy que o recurso relevante é a combinação do pacote nome e arquitetura , ajuda a fornecer uma visão geral.

O local para procurar informações não é "upgrade", mas instalando várias versões de um pacote:

Múltiplas versões instaladas (no rpm.org) oferece uma boa visão geral:

All of the package management tools operate using certain keys to refer to packages/programs. Normally that key is package name or package name and package arch

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

kernel packages are built specifically so they do not offer any conflicting files from one version of the kernel to the next

Ou seja, os kernels são tratados especialmente porque é conhecido (para os desenvolvedores de pacotes) que todos os arquivos em um pacote do kernel Linux têm nomes distintos (os nomes dos arquivos têm a versão incorporada ou os arquivos vivem em diretórios com o versão incorporada). Esse é um caso especial. Muitos casos especiais tornam 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 pacote nome , permitindo assim que várias versões do programa sejam instaladas em a 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

Quando você vê esses pacotes, é fácil ficar confuso sobre quais números fazem parte do nome do pacote, e quais são a versão e o release . O RPM usa traços ( - ) para separá-los: se não houver traço, o número faz parte do nome.

    
por 07.11.2015 / 02:27