Originalmente eu queria atualizar ruby2.5
para ruby2.7
.
Porém passenger
atrapalhou a atualização (yum deu um erro), então removi e passenger
instalei ruby2.5
depois ruby2.7
.
A instalação ruby2.7
funcionou, mas agora não consigo reinstalarpassenger
. (tentar ser mais esperto que um erro apenas o mudou)
$ sudo yum -y install passenger
passenger 2.7 kB/s | 833 B 00:00
Error:
Problem: conflicting requests
- package passenger-6.0.4-3.el8.x86_64 from epel requires libruby.so.2.5()(64bit), but none of the providers can be installed
- package passenger-6.0.10-1.el8.x86_64 from passenger requires libruby.so.2.5()(64bit), but none of the providers can be installed
...
- package passenger-6.0.18-1.el8.x86_64 from passenger requires libruby.so.2.5()(64bit), but none of the providers can be installed
- package passenger-6.0.19-1.el8.x86_64 from passenger requires libruby.so.2.5()(64bit), but none of the providers can be installed
...
- package passenger-6.0.9-1.el8.x86_64 from passenger requires libruby.so.2.5()(64bit), but none of the providers can be installed
- package ruby-libs-2.5.5-105.module_el8.1.0+214+9be47fd7.x86_64 from appstream is filtered out by modular filtering
...
- package ruby-libs-2.5.9-111.module_el8+475+35a6c697.x86_64 from appstream is filtered out by modular filtering
(try to add '--skip-broken' to skip uninstallable packages)
Removi passenger-repo
e reinstalei sem sucesso, referente à documentação oficial do passageiro .
Para mim, parece que algo ainda está grudado ruby 2.5
aqui.
Alguém pode me ajudar?
Meus repositórios:
appstream CentOS Stream 8 - AppStream
baseos CentOS Stream 8 - BaseOS
docker-ce-stable Docker CE Stable - x86_64
docker-ce-test Docker CE Test - x86_64
epel Extra Packages for Enterprise Linux 8 - x86_64
epel-next Extra Packages for Enterprise Linux 8 - Next - x86_64
extras CentOS Stream 8 - Extras
extras-common CentOS Stream 8 - Extras common packages
passenger passenger
powertools CentOS Stream 8 - PowerTools
remi-modular Remi's Modular repository for Enterprise Linux 8 - x86_64
remi-safe Safe Remi's RPM repository for Enterprise Linux 8 - x86_64
Isso se deve a uma tecnologia introduzida no RHEL 8 (e posteriormente disponível no CentOS Linux/Stream 8) chamada modularidade. Ele permite que a distribuição envie múltiplas versões dos mesmos pacotes, nos mesmos repositórios, com apenas um conjunto visível para o gerenciador de pacotes por vez. Provavelmente foi assim que você atualizou do Ruby 2.5 para o 2.7.
Isso
[d]
no 2.5 significa que o dnf, por padrão, verá apenas os pacotes doruby:2.5
fluxo do módulo. Os pacotes dos outros fluxos de módulo são filtrados. Se você optar por um dos outros fluxos de módulos como oruby:2.7
, o dnf verá apenas esses pacotes e filtrará todo o resto, incluindo os padrão doruby:2.5
.Funciona bem se você se limitar aos pacotes enviados pela distribuição, mas rapidamente desmorona quando você adiciona repositórios de terceiros, dos quais você tem vários habilitados. A modularidade tem uma falha crítica de design: você só pode ter dependências entre módulos que foram construídos no mesmo sistema de compilação, e pacotes não modulares só podem ter dependências de pacotes modulares de fluxos padrão. Neste caso, significa que o passageiro do EPEL ou dos repositórios de passageiros é construído com base na versão padrão do Ruby 2.5. Isso é o que mensagens de erro como esta estão dizendo:
Como o passageiro requer libruby.so.2.5, se o
ruby:2.5
fluxo do módulo for filtrado, o passageiro se tornará desinstalável, que é o que esta parte da mensagem de erro está lhe dizendo:Sua melhor opção é voltar para o
ruby:2.5
fluxo do módulo para que os pacotes de terceiros funcionem. Você pode fazer isso desinstalando todos os pacotes Ruby, mudando pararuby:2.5
e reinstalando os pacotes Ruby necessários.