2013-05-04 18 views
5

Tôi đang cố gắng thiết lập các máy ảo Vagrant để hỗ trợ việc học của mình thông qua Seven Databases in Seven Weeks. Tôi đang cung cấp phần mềm bằng cách sử dụng các kịch bản shell cơ bản, thực hiện các hành động thích hợp trong một môi trường sudo. Tuy nhiên, tôi đang sử dụng người dùng lang thang để chạy các hướng dẫn, và muốn cung cấp để cài đặt các nút/NPM mô-đun thích hợp như Vagrant, thay vì thông qua sudo.Cách cung cấp phần mềm bằng Vagrant mà không cần sudo

Lệnh npm hiện tại của tôi là dòng cuối cùng trong tập lệnh cấp phép này, nhưng mô-đun không khả dụng khi người lang thang cố gắng thực thi tập lệnh nút.

apt-get update 
apt-get -y install build-essential 
apt-get -y install tcl8.5 
wget http://redis.googlecode.com/files/redis-2.6.0-rc3.tar.gz 
tar xzf redis-2.6.0-rc3.tar.gz 
cd redis-2.6.0-rc3 
make 
make install 
make test 
mkdir /etc/redis 
mv redis.conf /etc/redis/redis.conf 
sed -i.bak 's/127.0.0.1/0.0.0.0/g' /etc/redis/redis.conf 
sed -i.bak 's/daemonize no/daemonize yes/g' /etc/redis/redis.conf 
sed -i.bak 's/dir .\//dir \/var\/lib\/redis/g' /etc/redis/redis.conf 

cd src/ 
wget https://raw.github.com/gist/1053791/880a4a046e06028e160055406d02bdc7c57f3615/redis-server 
mv redis-server.1 /etc/init.d/redis-server 
mv redis-cli /etc/init.d/redis-cli 
chmod +x /etc/init.d/redis-server 
sed -i.bak 's/DAEMON=\/usr\/bin\/redis-server/DAEMON=\/usr\/local\/bin\/redis-server/g'  /etc/init.d/redis-server 
useradd redis 
mkdir -p /var/lib/redis 
mkdir -p /var/log/redis 
chown redis.redis /var/lib/redis 
chown redis.redis /var/log/redis 
update-rc.d redis-server defaults 
/etc/init.d/redis-server start 
cd /etc/init.d/ 
echo ./redis-cli 
echo http://blog.hemantthorat.com/install-redis-2-6-on-ubuntu/ 

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

npm install hiredis redis csv 

Trả lời

9

Đơn giản chỉ cần thiết lập privileged-false trong VagrantFile của bạn như thế này:

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
    ... 
    config.vm.provision :shell, privileged: false, path: "script.sh" 
    ... 
end 
1

Có thể sử dụng npm install -g để cài đặt nó trên toàn cầu trong vm?

4

Quy tắc vỏ chạy với tư cách là người dùng root. Nếu bạn để chạy như là người dùng vagrant, bạn có thể làm một cái gì đó như thế này:

sudo -u vagrant npm install hiredis redis 

..or cho nhiều dòng:

sudo -u vagrant << EOF 
[...] 
npm install hiredis 
npm install redis 
EOF 
-1

sed -i 's /.* requiretty $/Defaults requiretty! /'/etc/sudoers

Các vấn đề liên quan