apt-get이 nvm을 통해 설치된 노드 소프트웨어를 인식하지 못합니다


15

.deb패키지 를 설치하려고하는데 nodejs, nodejs-underscore와 같은 여러 종속성이 필요하지만 모든 패키지는 이미 설치되어 nvm있으며 사용 가능합니다.

어쨌든 apt-getnvm을 통해 설치된 패키지를 인식하여 충돌하지 않도록 할 수 있습니까? apt-get은 시스템 전체에 해당하지만 nvm은 로컬 사용자 공간에서 작동하므로 해킹이 필요할 수 있습니다.

답변:


13

가능할 때마다 가장 간단한 방법은 하나 또는 패키지 사용하는 것 입니다. 이것은 아마도 당신에게 장기적으로 많은 두통을 덜어 줄 것이므로 먼저 살펴보십시오. 패키지 가 제공하는 거의 모든 노드 관련 기능이 대신 설치 될 수 있습니다 .nvm .deb.debnvm

그게 정말 가능하지 않은 경우, 그러나, 당신은 "더미"를 만들 수 있습니다 .deb사용하여 패키지를 equivs-control하고 equivs-build얘기 apt가 설치 종속성이 있는지 확인하십시오. 문제가 발생하면 apt를 혼란스럽게 할 수 있습니다. 또한 nvm패키지 를 제거하더라도 apt는 더미 패키지 자체를 제거 할 때까지 더미 패키지에 정의한 대체 요소가 있다고 생각합니다.

먼저 "equivs"를 설치하여 더미 패키지를 빌드하십시오.

sudo apt-get install equivs

더미 패키지를 설명하는 제어 파일을 작성하십시오.

cd ~
equivs-control nodejs-dummy

이 제어 파일을 편집하십시오.

nano nodejs-dummy

제어 파일에서 원하는대로 주석을 해제하고 행을 변경하십시오. 특히 "Provides :"줄을 설정하여을 사용하여 대체 한 패키지를 나열하십시오 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하는 정확한 버전 번호를 사용해야합니다. 그러나 어떤 문제가 발생할지 잘 모르겠습니다 .OS 패키지가 버전을 변경할 때마다 더미 패키지를 계속 다시 작성해야 할 것입니다.


1
답장을 보내 주셔서 감사합니다! 내 순위가 낮아 투표권을 세지 않지만 투표를 마쳤습니다!
Louisgv

3
@Louisgv이 질문에 대한 답변이 있으면 수락하십시오 .
스파이더 보리스

equivs에 대해 몰랐습니다. 이것은 훌륭한 도구입니다, 감사합니다!
brandizzi

5

이것은 nvm이 소프트웨어를 배포하는 방식에 문제가 있습니다. 그들은 단순히 배포판 특정 포장을하고 있지 않습니다. 구체적으로 말하면 nvm을 빠르게 읽었으며 바이너리를 가져옵니다. 예를 들어 다음은 nodejs 6에 설치하는 내용입니다. https://nodejs.org/.../lates.../node-v6.3.1-linux-x64.tar.gz 여기에는 표준 .deb가 포함되어 있지 않습니다. .rpm 메타 데이터이므로 실제 패키지를 제대로 릴리스 할 때까지 배포판 수준 패키지 관리자가 수행 할 수있는 작업이 많지 않으며 서로 충돌 할 수 있습니다. 적절한 패키지를 공개하는 nvm의 요점을 이해하고 있다면 배포판 특정 패키지를 지원하는 것과 관련이 있기 때문에 관심있는 것은 아닙니다. 대신 우리는 nvm이라는 핵을 가지고 있습니다. 어쩌면 그들의 자식에 대해 문제를 제기 할 수 있습니다. 이것은 nodejs 커뮤니티에서만 수정할 수 있습니다.

특히 npm과 nvm은 현재 대부분의 배포판 패키지 관리자에서 잘 지원되는 배포 패키지와 비교할 때 코드 서명 ( source ) 개념을 지원하지 않는 것 같습니다 . 이것은 시스템 패키지 설치에 대해 상당히 안전하지 않은 방법입니다.


4

아니요, 이미 말한대로 할 수 없습니다. Apt는 일반 nvm이 사용자 수준에서 패키지를 설치하는 시스템 수준에서 작동합니다.

두 가지 옵션이 있습니다-

  • nvm을 통해 원하는 패키지를 선택하고 이미 설치된 다른 nvm 패키지를 사용하거나

  • 패키지를 사용 apt-get하여 설치하고 모든 종속성을 설치하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.