5

我正在尝试设置 Vagrant 虚拟机来支持我在七周内通过七个数据库进行的学习。我正在使用在 sudo 环境中执行适当操作的基本 shell 脚本来配置软件。但是,我使用 vagrant 用户来运行教程,并且希望配置将适当的节点/NPM 模块安装为 Vagrant,而不是通过 sudo。

我当前的 npm 命令是此配置脚本的最后一行,但是当 vagrant 尝试执行节点脚本时,该模块不可用。

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
4

4 回答 4

14

只需像privileged这样false在您的 VagrantFile 中设置:

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    ...
    config.vm.provision :shell, privileged: false, path: "script.sh"
    ...
end
于 2014-06-06T15:33:22.630 回答
6

shell 配置以root用户身份运行。如果您以vagrant用户身份运行,您可以执行以下操作:

sudo -u vagrant npm install hiredis redis

..或多行:

sudo -u vagrant << EOF
[...]
npm install hiredis
npm install redis
EOF
于 2013-08-16T15:55:56.767 回答
1

也许使用 npm install -g 在虚拟机中全局安装它?

于 2013-05-15T05:05:15.297 回答
-1

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

于 2015-09-03T20:29:49.290 回答