npm / yeoman 설치-sudo없이 각진 생성기
sudo없이 Yo ( Yoeman ) 를 사용하여 generator-angularjs를 설치하려고했습니다 .
npm install -g generator-angular
나는 얻다:
Error: EACCES, mkdir '/usr/lib/node_modules/generator-angular'
를 입력 할 때 sudo yo
yo는 sudo (완벽하게 이해할 수 있음)를 사용해서는 안된다고 말합니다.
나는이 ~/node_modules
이유 요이 그 패키지를 설치하지 않습니다 - 디렉토리를?
발전기는 전 세계적으로 설치되도록 설계되었습니다. 그렇지 않으면 항상 각 프로젝트에서 사용하려는 발전기를 설치해야하므로 불필요하게 고통 스럽습니다. 또한 yo
사용 가능한 모든 생성기를 나열 하는 멋진 메뉴 를 볼 수 없습니다 (물론 모두 로컬로 설치하지 않는 한 ).
전역 설치를위한 npm 설정
그렇다면 npm을 통해 전역 적으로 패키지를 설치하려면 어떻게해야합니까? 올바르게 말했듯이 절대 yo
sudo로 실행해서는 안됩니다 . 이 문제에 대한 많은 다른 해결책 이 있으며 종교적으로 장단점을 논의하는 데 시간을 할애 할 수 있습니다.
개인적으로 사용자 패키지를 전역 /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 루트를 추가하면 문제가 해결됩니다.
나는 yeoman
내 vagrant
상자를 잘 다루 려고 노력해 왔으며 이것이 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
'developer tip' 카테고리의 다른 글
OnGlobalLayoutListener : 지원 중단 및 호환성 (0) | 2020.10.28 |
---|---|
테두리를 축소하는 방법 (div에서)? (0) | 2020.10.28 |
Python : 런타임에 메서드 및 속성 변경 (0) | 2020.10.28 |
벡터의 C ++ 11 emplace_back (0) | 2020.10.27 |
MySQL-피연산자는 1 개의 열을 포함해야합니다. (0) | 2020.10.27 |