nodejs sobrescrito / usr / bin / qual, como corrigir?

1

Eu tenho um centos 7 recém-instalado com apenas alguns projetos de nodejs. Então eu encontrei o comando which não está funcionando corretamente.

# which ls
which: illegal option -- -
usage: which [-as] program ...

# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

mas isso funciona:

# /usr/bin/which ls
/usr/bin/ls

Então eu fiz um cat /usr/bin/which , achei que foi substituído por um programa nodejs!

#!/usr/bin/env node
var which = require("../")
if (process.argv.length < 3)
  usage()

function usage () {
  console.error('usage: which [-as] program ...')
  process.exit(1)
}
... ...

O comando which é um programa de nó

# ls -la /usr/bin/which
lrwxrwxrwx 1 root root 63 Jul  5 20:43 /usr/bin/which -> ../local/share/.config/yarn/global/node_modules/which/bin/which

Estou confuso como o inferno, por que diabos o nó substituiria um comando perfeitamente funcional do sistema?

Agora a pergunta é: qual é a maneira correta de corrigir isso? Posso apenas excluir o arquivo e copiar which de outro computador (vm)?

atualização:

Aqui está como eu instalei o nodejs e o fio. Outros módulos foram instalados no diretório do projeto.

curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
yum install nodejs

sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
yum install yarn

yarn global add nuxt
yarn global add cross-env
npm install pm2 -g
    
por Reed 06.07.2017 / 17:19

1 resposta

2

Eu tenho o mesmo problema quando instalo fio no Fedora.

Eu percebo que o comando que , chamando sem usar o caminho absoluto, na realidade, é um alias.

# alias which
alias which='(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot'

Usando o seguinte comando rpm no Fedora, eu também pude confirmar que o link virtual / usr / bin / which foi substituído.

# rpm -V which
....L....    /usr/bin/which

Eu resolvi o problema ao reinstalar o pacote .

sudo yum reinstall which

Eu não acho que seja correto nodejs deve substituir um programa de sistema importante para um convidado que era um problema na equipe de desenvolvedores do nodejs.

PS: Desculpe pelo meu inglês.

    
por 22.07.2017 / 03:00