Bu, çalıştırılması gereken bash kodudur. Bu yüzden önce kullanıcı openproject yerine geçer ve sonra tüm kodu çalıştırır:
su openproject -c "bash -l"
cd ~/openproject
git checkout Gemfile.lock
git pull
bundle install
RAILS_ENV="production" bundle exec rake db:migrate
RAILS_ENV="production" bundle exec rake db:seed
RAILS_ENV="production" bundle exec rake assets:precompile
Bu yukarıdaki betiği chnaging denedim:
su - openproject -c "cd ~openproject/openproject"
su - openproject -c "git checkout stable"
su - openproject -c "git checkout Gemfile.lock"
su - openproject -c "git pull"
su - openproject -c "bundle install"
su - openproject -c "RAILS_ENV="production" bundle exec rake db:migrate"
su - openproject -c "RAILS_ENV="production" bundle exec rake db:seed"
su - openproject -c "RAILS_ENV="production" bundle exec rake assets:precompile"
ancak bu düzgün çalışmaz ve her adımda parola ister. Çevrilmiş komut dosyası çalışabilmesi için nasıl geliştirilebilir?
GÜNCELLEME 1:
Bu konuda öneriler aldıktan sonra kodun değiştirildiği nokta:
cd ~openproject/openproject
sudo -u openproject git checkout stable
sudo -u openproject git checkout Gemfile.lock
sudo -u openproject git pull
# the output is good thill here
sudo -u openproject bundle install
sudo -u openproject RAILS_ENV="production" bundle exec rake db:migrate
sudo -u openproject RAILS_ENV="production" bundle exec rake db:seed
sudo -u openproject RAILS_ENV="production" bundle exec rake assets:precompile
Çıktı, kodun içinde yazan satıra kadar tamam. Oradan 4 hata alıyorum
sudo: bundle: komut bulunamadı
GÜNCELLEME 2:
Dmitry Vasilyanov öneri denedikten sonra -i eklemek eğer kullanıcı giriş olarak simüle edeceğini buldum. Ancak bunu yapmanın son yolu bu değil.
echo $PATH
Openproject olarak giriş yaptıktan sonra çalıştırırsam çıkış/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/openproject/.rvm/bin
Koşarsam echo $PATH
sonra su openproject -c "bash -l"
çıkışı/home/openproject/.rvm/gems/ruby-2.1.0/bin:/home/openproject/.rvm/gems/ruby-2.1.0@global/bin:/home/openproject/.rvm/rubies/ruby-2.1.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/openproject/.rvm/bin
cd
bir kabuk yerleşimi olduğu için sudo yapamazsınız .
sudo
başka bir kullanıcı olarak çalıştırmak için kullanılır, root
hiçbir şey belirtilmezse varsayılan olarak mükemmel bir şekilde çalıştırabilirsiniz sudo -u openproject bundle install
.
bundle: command not found
Ayarladığınız için PATH
veya GEM_PATH
sizin .bash_profile
ya da .bashrc
giriş yapmayan / etkileşimli olmayan kabuklarda yürütülmediği için hatayı alıyorsunuz sanırım , bu yüzden girişi simüle -i
etmek sudo
için bu şekilde geçmeniz gerekiyor :sudo -iu openproject bundle install
sudo
, değilsu
.