Najprostszym podejściem, o ile to możliwe, jest użycie tylko jednego nvm
lub .deb
pakietów. To prawdopodobnie zaoszczędzi ci wielu bólów głowy na dłuższą metę, więc spójrz na to najpierw. Wygląda na to, że prawie wszystko, co związane z węzłem, które jest dostarczane przez .deb
pakiet, może zostać zainstalowane nvm
zamiast tego.
Jeśli tak naprawdę nie jest to możliwe, możesz być w stanie utworzyć „obojętne” .deb
pakiety za pomocą equivs-control
i equivs-build
powiedzieć, apt
że masz zainstalowane zależności. Zauważ, że może to potencjalnie pomylić apt, jeśli źle coś zrobisz. Ponadto, nawet jeśli odinstalujesz nvm
pakiety, apt nadal będzie myślał, że masz substytuty zdefiniowane w fikcyjnych pakietach, dopóki sam nie odinstalujesz pakietów fikcyjnych.
Najpierw zainstaluj „equivs”, abyśmy mogli zbudować atrapy pakietów:
sudo apt-get install equivs
Utwórz plik kontrolny, który opisuje atrapę pakietu:
cd ~
equivs-control nodejs-dummy
Edytuj ten plik kontrolny:
nano nodejs-dummy
Cofnij komentarz i zmień wiersze w pliku sterującym zgodnie z potrzebami. W szczególności ustaw wiersz „Zapewnia:”, aby wyświetlić listę pakietów, które zastąpiłeś nvm
. Na przykład:
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 ;)
Zbuduj pakiet:
equivs-build nodejs-dummy
Na koniec zainstaluj:
sudo dpkg -i nodejs-dummy_use_the_actual_filename.deb
Opłucz i powtórz dla wszystkich używanych opakowań nvm
. Jeśli pakiet zależy od konkretnej wersji innego pakietu, który zastąpiłeś nvm
, może być konieczne użycie dokładnego numeru wersji, od którego zależy. Nie jestem jednak pewien, jakie mogą z tego wynikać problemy, i prawdopodobnie będziesz musiał nadal odbudowywać atrapę pakietów, ilekroć pakiety OS zmieniają wersje.
Jest to problem z tym, jak nvm dystrybuuje oprogramowanie. Po prostu nie robią żadnych opakowań specyficznych dla dystrybucji. Mówiąc konkretnie, szybko przeczytałem nvm i są to po prostu binarne pliki binarne. Na przykład oto, co instaluje dla nodejs 6: https://nodejs.org/.../lates.../node-v6.3.1-linux-x64.tar.gz To nie zawiera żadnego standardowego pliku .deb lub .rpm metadane, więc dopóki właściwie nie wydadzą prawdziwych pakietów, niewiele menedżerów pakietów na poziomie dystrybucji może zrobić i prawdopodobnie będą ze sobą kolidować. Jeśli rozumiem, że nvm wypuszczanie odpowiednich pakietów nie jest czymś, czym są zainteresowani, ponieważ wiąże je z obsługą pakietów specyficznych dla dystrybucji. Zamiast tego mamy hack, którym jest nvm. Może zgłoś problem z ich dupkiem. Może to naprawić tylko społeczność nodejs.
W szczególności npm i nvm wydają się obecnie nie obsługiwać żadnej koncepcji podpisywania kodu ( źródła ), więc w porównaniu z pakietem dystrybucyjnym, który jest dobrze obsługiwany przez większość menedżerów pakietów dystrybucyjnych. Jest to dość niepewne podejście do instalowania pakietów systemowych.
źródło
Nie, nie możesz, jak już powiedziałeś. Apt działa na poziomie systemu, gdzie zwykłe NVM instaluje pakiety na poziomie użytkownika.
Masz dwie opcje -
Albo żądany pakiet przez nvm i użyj innych już zainstalowanych pakietów nvm, lub
zainstaluj pakiet za pomocą
apt-get
i zainstaluj z nim wszystkie zależności.źródło