2012-07-18 4 views
40

có cài đặt được đề xuất cho nvm để tất cả người dùng có thể sử dụng nó không? tôi không thể tìm thấy bất cứ điều gì trên web liên quan đến điều này.NVM & Node.js - Đề xuất cài đặt cho tất cả người dùng

đây là những gì tôi đã làm

  • nvm được cài đặt trong một thư mục chung
  • đưa kịch bản nvm.sh locationin .profile cho tất cả người dùng
  • tạo ra một nvm/thư mục bí danh (nvm phàn nàn nếu điều này không có ở đây cho những người dùng khác)

sau đó mỗi người dùng phải hoặc chạy "nvm sử dụng" hoặc đặt nó trong hồ sơ của họ theo mặc định

không chắc chắn nếu có cách nào tốt hơn?

nhờ

Trả lời

44

Dưới đây là những gì tôi đã làm:

  1. cài đặt nvm trong /opt/nvm như root. Dường như một vị trí thích hợp.

    # git clone [email protected]:creationix/nvm.git /opt/nvm 
    
  2. Tạo thư mục /usr/local/nvm. Đây là nơi các tải sẽ đi ($NVM_DIR)

    # mkdir /usr/local/nvm 
    
  3. Tạo thư mục /usr/local/node. Đây là nơi mà những thứ NPM toàn cầu sẽ đi:

    # mkdir /usr/local/node 
    
  4. Tạo một tập tin gọi nvm.sh trong /etc/profile.d với các nội dung sau:

    export NVM_DIR=/usr/local/nvm 
    source /opt/nvm/nvm.sh 
    
    export NPM_CONFIG_PREFIX=/usr/local/node 
    export PATH="/usr/local/node/bin:$PATH" 
    
  5. lại đăng nhập vào một phiên vỏ, sau đó thiết lập mặc định phiên bản nút.

    # nvm install 0.10 
    # nvm alias default 0.10 
    

Các mã nhị phân nút bây giờ sẽ được trong PATH cho tất cả người dùng lần sau khi bạn đăng nhập vào một phiên vỏ. NPM sẽ cài đặt mọi thứ trên toàn cầu vào tiền tố /usr/local/node.

+1

lớn thiết lập - tuy nhiên NPM_CONFIG_PREFIX không được tôn trọng khi tôi làm theo thiết lập này và các mô-đun toàn cầu đang được cài đặt trong nvm so với phiên bản nút hiện tại. Ý tưởng nào? – leepowell

+1

Tôi bỏ lỡ bước 4.5: 'source/etc/profile.d/nvm.sh'. Chỉ sau đó nvm có sẵn cho tôi. – czerasz

+0

@czerasz bạn không cần phải làm điều đó; hãy thử đăng nhập lại? Tôi chạy vào đó quá nhưng nó đã biến mất sau khi tôi đăng xuất/trong – jcollum

22

Tốt nhất là cài đặt một bản sao của nút trên toàn cầu để người dùng khác có thể truy cập nó. Để làm điều này, hãy chạy lệnh sau đây (nhập mật khẩu của người dùng của bạn tại dấu nhắc):

n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local 

khen thưởng này được sao chép bất kỳ phiên bản của nút bạn có hoạt động qua nvm vào thư mục /usr/local/ và thiết lập các điều khoản để tất cả người dùng có thể truy cập chúng.

Để kiểm tra xem nó hoạt động, trở thành người dùng root và làm khác mà lệnh để đảm bảo rằng nút hiện đang được cài đặt để /usr/local/bin:

sudo -s 
which node 

Nếu bạn đã bao giờ muốn thay đổi phiên bản của nút đó là hệ thống được cài đặt rộng, chỉ cần làm một nvm khác sử dụng vXX.XX.XX để chuyển nút của người dùng sang phiên bản bạn muốn, và sau đó chạy lại lệnh đầu tiên ở trên để sao chép nó vào thư mục hệ thống.

+0

điều này đã phá vỡ rất nhiều cho phép tôi, chỉ cần một fyi – Shane

+2

CẢNH BÁO !!!!!!! lệnh đầu tiên đã phá vỡ các quyền và di chuyển các tập tin. – enterx

2

Vì LJHarb khuyên bạn không nên cài đặt tính năng này trên toàn cầu, tôi quyết định tạo tập lệnh để cài đặt nvm khi bạn đăng nhập vào máy chủ. Tôi cần điều này vì tôi đã có nhiều người dùng thiết lập rằng có thể đăng nhập nhưng cần quyền truy cập vào PM2 (để theo dõi một trong các ứng dụng của chúng tôi).

Tạo kịch bản trong /etc/profile.d/ (tên nvm.sh ví dụ):

#!/bin/bash 
NODE_VER=6.2.2 
if [ ! -f ~/.nvm/nvm.sh ]; then 
    # May need to be updated with the latest nvm release 
    wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash 
fi 
source ~/.nvm/nvm.sh 
if ! command -v node | grep -q $NODE_VER; then 
    echo "Node is not installed" 
    nvm install $NODE_VER 
    nvm alias default $NODE_VER 
fi 

Đối với ứng dụng của chúng tôi, chúng tôi cần PM2 chia sẻ giữa người sử dụng:

if ! command -v pm2 &>/dev/null; then 
    echo "pm2 not installed" 
    npm install -g pm2 
fi 
# Share pm2 configuration between users 
alias pm2='env HOME=/opt/sora pm2' 
+0

Bạn cũng có thể muốn thêm NVM_DIR = "" vào đầu.Nếu không, thì 'su-ing' vào một người dùng khác sẽ khiến cài đặt thất bại. Điều này là do NVM_DIR được sử dụng bởi tập lệnh cài đặt, nhưng không được thiết lập ban đầu trước khi nó được sử dụng. Vì vậy, nó có giá trị thiết lập, mà thực sự có thể là người dùng trước đó. – DerekE

7
  1. sudo -s
  2. Cài đặt nvm: curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | NVM_DIR=/usr/local/nvm bash
  3. Cài đặt nút: nvm install 7.2.0
  4. Tạo một tập tin gọi nvm.sh trong /etc/profile.d với các nội dung sau: export NVM_DIR="/usr/local/nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm