A abordagem mais simples, sempre que possível, é usar apenas um nvm
ou .deb
pacotes. Provavelmente, isso poupará muitas dores de cabeça a longo prazo, então verifique isso primeiro. Parece que quase tudo relacionado ao nó que é fornecido por um .deb
pacote pode ser instalado via nvm
.
Se isso realmente não for possível, no entanto, você poderá criar .deb
pacotes "fictícios" usando equivs-control
e equivs-build
informando apt
que possui as dependências instaladas. Observe que isso pode confundir o apt se você errar. Além disso, mesmo se você desinstalar nvm
pacotes, o apt ainda pensará que você tem os substitutos que você definiu nos pacotes fictícios até desinstalar os pacotes fictícios.
Primeiro, instale "equivs" para que possamos construir os pacotes fictícios:
sudo apt-get install equivs
Crie um arquivo de controle que descreva o pacote fictício:
cd ~
equivs-control nodejs-dummy
Edite este arquivo de controle:
nano nodejs-dummy
Remova o comentário e altere as linhas no arquivo de controle, conforme desejado. Em particular, defina a linha "Fornece:" para listar os pacotes que você substituiu usando nvm
. Por exemplo:
Package: nodejs-dummy
Version: (version slightly higher than what the apt package actually provides)
Maintainer: Your Name <[email protected]>
Provides: nodejs
Architecture: all
Description: Something that will remind you what this does ;)
Crie o pacote:
equivs-build nodejs-dummy
Por fim, instale-o:
sudo dpkg -i nodejs-dummy_use_the_actual_filename.deb
Enxágue e repita os pacotes que você substituiu usando nvm
. Se um pacote depende de uma versão específica de outro pacote que você substituiu nvm
, pode ser necessário usar o número exato da versão em que ele depende. Entretanto, não tenho certeza de quais problemas podem surgir e você provavelmente precisará continuar reconstruindo seus pacotes fictícios sempre que os pacotes do sistema operacional mudarem de versão.
Este é um problema com a forma como a nvm distribui software. Eles simplesmente não estão fazendo nenhuma embalagem específica da distribuição. Para ser específico, fiz uma rápida leitura da nvm e elas são apenas binários. Por exemplo, aqui está o que ele instala para o nodejs 6: https://nodejs.org/.../lates.../node-v6.3.1-linux-x64.tar.gz Isso não contém nenhum padrão .deb ou .rpm, portanto, até que eles liberem adequadamente os pacotes reais, não há muito o que os gerentes de pacotes no nível da distribuição possam fazer e provavelmente entrarão em conflito um com o outro. Se estou entendendo que o nvm liberar pacotes adequados não é algo em que eles estejam interessados exatamente porque os vincula ao suporte a pacotes específicos de distribuição. Então, em vez disso, temos o hack que é nvm. Talvez arquive um problema contra o git deles. Isso só pode ser corrigido pela comunidade nodejs.
Notavelmente, atualmente, o npm e o nvm parecem não suportar nenhum conceito de assinatura de código ( fonte ); portanto, quando comparado ao pacote de distribuição, que é bem suportado na maioria dos gerenciadores de pacotes da distribuição. Essa é uma abordagem bastante insegura para instalar pacotes de sistema.
fonte
Não, você não pode como você já disse. O Apt trabalha no nível do sistema, onde a nvm regular instala pacotes no nível do usuário.
Você tem duas opções -
O pacote desejado via nvm e use os outros pacotes nvm já instalados ou
instale o pacote usando
apt-get
e instale todas as dependências com ele.fonte