Самый простой подход, когда это возможно, это использовать только один nvm
или несколько .deb
пакетов. Это, вероятно, избавит вас от многих головных болей в долгосрочной перспективе, так что сначала посмотрите на это. Кажется, что почти все связанное с узлами, предоставляемое .deb
пакетом, может быть установлено через nvm
него.
Однако, если это действительно невозможно, вы можете создать «фиктивные» .deb
пакеты, используя equivs-control
и equivs-build
сообщить, apt
что у вас установлены зависимости. Обратите внимание, что это может сбить с толку apt, если вы ошибаетесь. Кроме того, даже если вы удалите nvm
пакеты, apt все равно будет думать, что у вас есть заменители, которые вы определили в фиктивных пакетах, пока вы не удалите сами фиктивные пакеты.
Во-первых, установите «эквиваленты», чтобы мы могли создать пустые пакеты:
sudo apt-get install equivs
Создайте контрольный файл, описывающий фиктивный пакет:
cd ~
equivs-control nodejs-dummy
Отредактируйте этот контрольный файл:
nano nodejs-dummy
Откомментируйте и измените строки в контрольном файле по желанию. В частности, установите строку «Обеспечивает:» для отображения списка пакетов, которые вы заменили nvm
. Например:
Package: nodejs-dummy
Version: (version slightly higher than what the apt package actually provides)
Maintainer: Your Name <yourname@example.com>
Provides: nodejs
Architecture: all
Description: Something that will remind you what this does ;)
Построить пакет:
equivs-build nodejs-dummy
Наконец, установите его:
sudo dpkg -i nodejs-dummy_use_the_actual_filename.deb
Промойте и повторите для любых пакетов, которые вы заменили, используя nvm
. Если пакет зависит от конкретной версии другого пакета, которым вы заменили nvm
, вам может потребоваться использовать именно тот номер версии, от которого он зависит. Однако я не уверен, какие проблемы могут возникнуть из-за этого, и вам, вероятно, придется пересматривать фиктивные пакеты всякий раз, когда пакеты ОС меняют версии.
Это проблема с тем, как nvm распространяет программное обеспечение. Они просто не делают какой-либо дистрибутив специфической упаковки. Чтобы быть точным, мы быстро прочитали nvm, и они просто получают двоичные файлы. Например, вот что он устанавливает для nodejs 6: https://nodejs.org/.../lates.../node-v6.3.1-linux-x64.tar.gz. Он не содержит никаких стандартных .deb или .rpm метаданных, поэтому до тех пор, пока они должным образом не выпустят реальные пакеты, не все, что могут сделать менеджеры пакетов на уровне дистрибутива, вероятно, будут конфликтовать друг с другом. Если я понимаю, смысл nvm в выпуске соответствующих пакетов - это не то, что их интересует именно потому, что это связывает их с поддержкой пакетов, специфичных для дистрибутива. Таким образом, вместо этого у нас есть взлом, который является NVM. Возможно подать проблему против их мерзавца. Это может быть исправлено только сообществом nodejs.
В частности, npm и nvm в настоящее время, похоже, не поддерживают какую-либо концепцию подписывания кода ( источника ), поэтому по сравнению с дистрибутивом, который хорошо поддерживается в большинстве менеджеров пакетов дистрибутива. Это довольно небезопасный подход к установке системных пакетов.
источник
Нет, ты не можешь, как ты уже сказал. Apt работает на системном уровне, где обычные nvm устанавливают пакеты на уровне пользователя.
У вас есть два варианта -
Либо желаемый пакет через nvm и используйте другие уже установленные пакеты nvm, либо
установить пакет, используя
apt-get
и установить все зависимости с ним.источник