developer tip

npm / yeoman 설치-sudo없이 각진 생성기

copycodes 2020. 10. 28. 08:11
반응형

npm / yeoman 설치-sudo없이 각진 생성기


sudo없이 Yo ( Yoeman ) 사용하여 generator-angularjs를 설치하려고했습니다 .

npm install -g generator-angular

나는 얻다:

Error: EACCES, mkdir '/usr/lib/node_modules/generator-angular'

를 입력 할 때 sudo yoyo는 sudo (완벽하게 이해할 수 있음)를 사용해서는 안된다고 말합니다.

나는이 ~/node_modules이유 요이 그 패키지를 설치하지 않습니다 - 디렉토리를?


발전기는 전 세계적으로 설치되도록 설계되었습니다. 그렇지 않으면 항상 각 프로젝트에서 사용하려는 발전기를 설치해야하므로 불필요하게 고통 스럽습니다. 또한 yo사용 가능한 모든 생성기를 나열 하는 멋진 메뉴 를 볼 수 없습니다 (물론 모두 로컬로 설치하지 않는 한 ).

에야디야

전역 설치를위한 npm 설정

그렇다면 npm을 통해 전역 적으로 패키지를 설치하려면 어떻게해야합니까? 올바르게 말했듯이 절대 yosudo로 실행해서는 안됩니다 . 이 문제에 대한 많은 다른 해결책 이 있으며 종교적으로 장단점을 논의하는 데 시간을 할애 할 수 있습니다.

개인적으로 사용자 패키지를 전역 /usr/ 폴더에 설치하는 것을 싫어 합니다. /usr/컴퓨터의 모든 사용자가 공유하는 소프트웨어 용입니다. 시스템 만 사용하는 경우에도 유닉스 파일 시스템 계층 구조를 설계하는 방식을 존중해야 할 충분한 이유가 있습니다. 예를 들어 한 지점에서 전체 노드 설치를 지우기로 결정한 경우입니다.

가능하게 나의 선호하는 방법으로 npm전 세계적으로 패키지를 설치하기 위해 밖으로 파괴하지 않고는$HOME 것입니다 로컬 노드 접두사를 설정합니다 . 이것은 달리기만큼 쉽습니다.

echo 'prefix = ~/.node' >> ~/.npmrc

로컬 셸에서. 그 후, 즐겨 찾는 쉘의 구성을 조정하여 전역 노드 실행 파일의 새 설치 대상을 가리 키도록 $ PATH를 조정하려고합니다. 예 : 추가

export PATH="$PATH:$HOME/.node/bin"

귀하의 ~/.bashrc. 그 후에는 npm install -g generator-angular권한 충돌없이 sudo없이 행복하게 실행할 수 있으며 무언가가 완전히 손상되어 처음부터 시작하려는 경우 ~/.node디렉토리를 제거하기 만하면됩니다.


@passy 덕분에 마침내 다음과 함께 우분투 13.04 (누구나 비슷한 설정 문제가있는 경우)에서이 작업을 수행 할 수있었습니다.

sudo apt-get update
sudo apt-get install python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

실행하려고 :

npm install -g yo

결과

Error: EACCES, mkdir '/usr/lib/node_modules/yo'

다음을 사용하여 수정 :

echo prefix = ~/.node >> ~/.npmrc
echo 'export PATH=$HOME/.node/bin:$PATH' >> ~/.bashrc 
. ~/.bashrc

달리는:

yo webapp

결과 :

Error: EACCES, permission denied '/home/username/.config/configstore/update-notifier-yo.yml'

다음을 사용하여 수정 :

sudo chown yourusername:yourusername /home/yourusername/.config/configstore/update-notifier-yo.yml

제 경우에는 (우분투 12.04에서) ~ / .npmrc의 접두사 추가가 아무것도 변경하지 않았습니다.

그렇다면 노드 패키지를 직접 빌드하고 / opt / node 또는 /home/user/.node 에 설치하십시오 .


.yo-rc.json이전에 설치 한 프로젝트의 루트 디렉토리에 있는 불량 파일 과 관련된 거의 동일한 오류가 발생했습니다 . Yeoman은 설치 중간에 설치 디렉토리에서 루트 디렉토리로 cwd를 전환했지만 설치 디렉토리가 .NET이라는 세부 정보없이 EACCESS 권한 오류 만 출력했습니다 /. 이것이 왜 그런지 알아내는 데는 오랜 시간이 걸렸고 Yeoman 소스를 통한 디버깅이 포함되었지만 결국 Yeoman이를 찾을 때까지 디렉토리 트리 .yo-rc.json를 검색하고 새 위치로 chdir을 호출하여 코드를 생성 한다는 것을 알게 되었습니다.

Yeoman은 사용자에게 디렉토리에 대한 쓰기 권한이 있는지 확인해야합니다. 또는 출력에 cwd가 변경되었음을 언급하거나 찾은 위치 .yo-rc.json가 cwd와 다른 경우 설치 디렉토리의 이름을 인쇄 할 수 있습니다.

불량 .yo-rc.json 파일 찾기 명령

sudo find / -name .yo-rc.json


에서 시작 페이지를 받고 yoeman 명령을 나타납니다 :

yo doctor

제 경우에는 $ NODE_PATH (내 경우 Ubuntu 14.04는 /etc/profile.d에 정의되어 있음)가 npm 루트와 동일하지 않습니다. $ NODE_PATH에 npm 루트를 추가하면 문제가 해결됩니다.


나는 yeomanvagrant상자를 잘 다루 려고 노력해 왔으며 이것이 npm전 세계적으로 패키지 를 설치하기 위해해야했던 sudo일입니다 ubuntu.

1. 전역 패키지를 저장할 디렉토리를 만듭니다.

$ mkdir "${HOME}/.npm-packages"

2. npm전역 적으로 설치된 패키지를 어디에 둘 것인지 알려줍니다 .

다음 스 니펫을 ~/.npmrc파일에 삽입 하십시오.

prefix=${HOME}/.npm-packages

3. npm설치된 binaries등을 찾을 수 있는지 확인

이 스 니펫을에 삽입하십시오 .bashrc/.zshrc.

NPM_PACKAGES="${HOME}/.npm-packages"

PATH="$NPM_PACKAGES/bin:$PATH"

// `unset` `manpath` to allow inheritance from `/etc/manpath` with
// the `manpath` command
unset MANPATH // remove this line if you have previously modified `manpath`
export MANPATH="$NPM_PACKAGES/share/man:$(manpath)"

4. 다음을 실행하거나 터미널을 다시 시작하십시오.

$ source ~/.bashrc

이것이 비슷한 상황에 처한 사람에게 도움이되기를 바랍니다.

참고 URL : https://stackoverflow.com/questions/18212175/npm-yeoman-install-generator-angular-without-sudo

반응형