Não é realmente um erro de transação do que eu vejo, é um conflito de arquivos. IMO (talvez alguém possa me corrigir) você praticamente tem que remover o pacote npm
. Fisicamente ou apenas a partir do banco de dados RPM.
-
Se você estiver confortável com isso, basta fazer um
rpm -e npm
para desinstalar o pacote e remover os arquivos conflitantes do sistema de arquivos. Isso causaria perda de dados, mas se os conflitos existirem porquenodejs
é uma substituição completa do pacotenpm
, não deve haver muita perda, pois a instalação denodejs
substituirá os arquivos perdidos devido à desinstalação. -
Se você não acha que pode remover o pacote (ele possui arquivos que o outro pacote não possui), você pode tentar a sua sorte com a opção
--justdb
pararpm -e
. Esteja avisado que isso pode causar conflitos que você não verá necessariamente imediatamente (onde versões conflitantes de arquivos são instaladas ou fragmentos do pacote antigo permanecem no sistema, etc). Você só precisa adivinhar se tudo ficará bem, contanto que os arquivos sejam sobrescritos.
Exemplo:
[root@vml-lvprod04 ~]# ll -h /usr/bin/nc
-rwxr-xr-x 1 root root 22K Feb 9 2010 /usr/bin/nc
[root@vml-lvprod04 ~]# rpm -e --justdb nc
[root@vml-lvprod04 ~]# rpm -ql nc
package nc is not installed
[root@vml-lvprod04 ~]# ll -h /usr/bin/nc
-rwxr-xr-x 1 root root 22K Feb 9 2010 /usr/bin/nc
[root@vml-lvprod04 ~]# yum install -y nc
[ ...snip... ]
Running Transaction
Warning: RPMDB altered outside of yum.
Installing : nc-1.84-22.el6.x86_64 1/1
Verifying : nc-1.84-22.el6.x86_64 1/1
Installed:
nc.x86_64 0:1.84-22.el6
Complete!
Como você pode ver, eu removi o pacote do banco de dados sem tocar no próprio arquivo. Isso impedirá que rpm
veja quaisquer conflitos de arquivo. Fui então capaz de instalar um pacote com um arquivo no mesmo local sem errar o yum. rpm
foi projetado para prever conflitos, portanto, use novamente por sua conta e risco.