установка пакета - команда не найдена - работает от имени пользователя root

Я использую экземпляр Amazon EC2, и когда я запускаю bundle install от имени пользователя ec2, он работает нормально, но когда я пытаюсь сделать то же самое от имени пользователя root, возникает ошибка.

bash: bundle: command not found

Когда я запускаю gem list для обоих пользователей, существует драгоценный камень комплекта. Я установил ruby-devel rubygems ruby-libs как пользователь root. Может ли кто-нибудь помочь мне понять эту проблему? Я искал и читал часами.

echo $PATH обоих пользователей, как показано ниже.

корень: /sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin

ec2-пользователь: /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/bin


person Sohail Ahmed    schedule 26.07.2014    source источник
comment


Ответы (2)


Я добавил /usr/local/bin и /usr/local/sbin в параметр secure_path в /etc/sudoers.

sudo visudo

Затем измените эту строку:

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

Изменил это на

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin

Объяснение:

Gems были установлены по пути /usr/local, и без добавления этого параметра в secure_path пользователь root не может запускать оттуда сценарии. Вы можете проверить путь к драгоценным камням, запустив gem env в оболочке.

У меня также была другая проблема. Я установил драгоценные камни как пользователь ec2, используя пакет и путь rubygems по умолчанию в Amazon Linux, установил их только для пользователя ec2, что мне не понравилось, поэтому я установил ruby ​​и rubygems из источника, у которого есть путь к их установке в центральном месте в /usr/ местный. Я знаю, что это не рекомендуется многими, но мне это нравится. Кстати, я пытался найти способ изменить путь к rubygems, но не смог.

person Sohail Ahmed    schedule 27.07.2014
comment
Привет, какое-нибудь объяснение этому? - person Tommy; 30.07.2014
comment
Привет, Томми, я добавил в ответ. - person Sohail Ahmed; 31.07.2014

Попробуйте sudo -i -u $USER bundle install

где $USER - правильное имя пользователя, поэтому: sudo -i -u root bundle install

Если это не сработает, попробуйте плагин rbenv-sudo.

person Pak    schedule 26.07.2014
comment
Все та же ошибка bash: bundle: command not found. Я пробовал как пользователь root, а также как пользователь ec2. - person Sohail Ahmed; 26.07.2014