пакетно инсталиране - командата не е намерена - работи като 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
възможен дубликат на Using $ sudo bundle exec ... повдига грешка „пакет: командата не е намерена“   -  person Pak    schedule 26.07.2014


Отговори (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

Обяснение:

Скъпоценните камъни бяха инсталирани в /usr/local path и без да добавите това в secure_path, root потребителят не може да изпълнява скриптове от там. Можете да проверите пътя на скъпоценните камъни, като стартирате gem env в shell.

Имах и друг проблем. Инсталирах gems като ec2-user, използвайки пакет и подразбиращ се път за rubygems в Amazon Linux, инсталирах ги само за ec2-user, нещо, което не ми хареса, затова инсталирах 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-user. - person Sohail Ahmed; 26.07.2014