데비안 대체 시스템: 이름과 우선순위가 같은 프로그램

데비안 대체 시스템: 이름과 우선순위가 같은 프로그램

update-alternatives우선 순위 시스템이 어떻게 작동하는지 문서에서 이해할 수 없습니다 .

Nodejs 애플리케이션이 무엇보다도 햄 라디오 쇼를 가리 /usr/bin/node키도록 하고 싶다고 가정해 보겠습니다 . 나는 말해야 한다:nodejsnode

update-alternatives --install /usr/bin/node nodejs /usr/bin/nodejs 100 --slave /usr/share/man/...

서로 다른 두 가지 프로그램이 있다고 가정해 보겠습니다 /usr/bin/node. 첫 번째는 Nodejs이고 두 번째는 아마추어 라디오입니다. 어떤 것을 사용할지 어떻게 결정합니까?

이 과정에서 우선순위는 어떤 역할을 합니까?

추가됨: npmnodejs 패키지 관리자가 nodejs 명령을 호출해야 하므로 nodenodejs를 node.

답변1

여기서 교체 시스템이 하는 일을 오해하고 계신 것 같습니다. 유사한 유형의 대체 프로그램을 사용하는 간단한 방법을 제공하는 데 사용됩니다. 매뉴얼 페이지의 일반적인 예는 편집기를 사용하는 것입니다.

예를 들어, 텍스트 편집기 ed(1)와 nvi(1)가 모두 시스템에 설치된 경우 대체 시스템에서는 일반 이름 /usr/bin/editor가 /usr/bin/nvi로 기본값이 설정됩니다.

귀하의 경우에는 node완전히 다른 두 가지 응용 프로그램을 나타냅니다.

둘 다 메인 데비안 저장소에서 설치할 수 있다면, 패키지 관리자 중 한 명이 다른 패키지와 충돌하지 않도록 실행 파일의 이름을 지정했을 가능성이 높습니다. 예를 들어 Node.js /usr/bin/node_radio와 충돌하지 않도록 라디오 애플리케이션 바이너리의 이름을 바꿀 수 있습니다./usr/bin/node

반면에 아마추어 라디오를 직접 컴파일하는 경우 동일한 node이름의 바이너리가 생성되지 않도록 컴파일을 변경하거나 다른 경로에 설치되는지 확인해야 합니다. 명령 프롬프트에 명령을 입력할 때 실행되는 명령은 변수의 검색 순서에 따라 달라 /usr/local/bin/node집니다 . 만약에node$PATH잘못된하나를 실행한 후 이를 실행하려면 전체 경로를 입력해야 합니다 /usr/local/bin/node.

어쨌든 update-alternatives여기서는 도움이 되지 않습니다.

위의 모든 내용은 아마추어 라디오가 실행 파일로 설치되었음을 보여주는 링크가 apt-get download node뒤따르는 빠른 확인과 같은 예일 뿐입니다 . Node.js가 설치되어 있어 둘이 충돌하지 않습니다.dpkg --contents node_0.3.2-7.4_all.debnode/usr/sbin/ax25-node/usr/sbin/node/usr/bin/nodejs

답변2

언제든지 /usr/bin/node하나의 옵션만 있을 수 있습니다. 대체 메커니즘은 선택 수단입니다.

둘 다 설치되면 우선순위에 따라 어느 것이 기본값인지 제어됩니다. 그들은 어떻게든 둘 다 갖고 다른 프로그램이 이 프로그램이라고 부르는 것에 따라 둘 중 하나를 선택하는 방법을 제공하지 않습니다.

프로그램이 이름으로 서로를 호출할 때 검색 경로에는 지정된 이름을 가진 프로그램이 하나만 있을 수 있습니다. node프로그램에서 명령을 명확하게 구분 해야 합니다 .데비안 팔로우, nodejsNode.js 및 ax25-nodeHAM 프로그램용. 변경 사항이 정말 짜증나는 경우 이 node패키지( /usr/bin/node별칭 생성용 ax25-node) 또는 이 nodejs-legacy패키지( /usr/bin/node별칭 생성용 nodejs)를 설치하세요.

node많이 호출하고 쉽게 변경할 수 없는 프로그램이 있는 경우 다른 PATH변수를 사용하여 실행하십시오. 하나는 심볼릭 링크를 포함하는 디렉토리를 포함 ax25-node하고 다른 하나는 심볼릭 링크를 포함하는 디렉토리를 포함합니다 nodejs.

mkdir -p /usr/local/etc/nodejs/bin /usr/local/etc/ax25/bin
ln -s ../../../../bin/nodejs /usr/local/etc/nodejs/bin/node
ln -s ../../../../bin/ax25-node /usr/local/etc/ax25/bin/node

PATH=/usr/local/etc/ax25/bin:$PATH program-using-ax25
PATH=/usr/local/etc/node/bin:$PATH program-using-nodejs

관련 정보