dpkg: advertencia: 'ldconfig' no encontrado en PATH o no ejecutable – Ubuntu 12 – Vagrant

Estoy trabajando en la installation de una installation Vagrant / Puppet para que los nuevos desarrolladores puedan tener un entorno de desarrollo limpio para nuestro proyecto Rails.

Los commands básicos de configuration de Vagrant son:

config.vm.box = 'precise32' config.vm.box_url = 'http://files.vagrantup.com/precise32.box' 

En general, la installation parece ir bien. Tengo RVM, Postgres y Ruby instalados y en ejecución.

Sin embargo, cada vez que bash instalar el "Heroku Toolbelt" usando este command:

 su -l vagrant -c 'wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh' 

Me encuentro con este problema:

 ... Lots of Hits and downloads... The following extra packages will be installed: foreman heroku libruby1.9.1 ruby1.9.1 Suggested packages: ruby1.9.1-examples ri1.9.1 graphviz ruby1.9.1-dev The following NEW packages will be installed: foreman heroku heroku-toolbelt libruby1.9.1 ruby1.9.1 0 upgraded, 5 newly installed, 0 to remove and 132 not upgraded. Need to get 0 B/4,997 kB of archives. After this operation, 13.1 MB of additional disk space will be used. dpkg: warning: 'ldconfig' not found in PATH or not executable. dpkg: warning: 'start-stop-daemon' not found in PATH or not executable. dpkg: error: 2 expected programs not found in PATH or not executable. Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin. E: Sub-process /usr/bin/dpkg returned an error code (2) 

( Nota ) Esto sucede si ejecuto el command manualmente después de vagnt ssh. Además, la configuration de shell real obtiene el error cuando se ejecuta inicialmente.

Dado que se trata de una caja vagabunda, es fácil "destruir vagrant" y luego intentarlo de nuevo, pero me sale el mismo problema de forma consistente.

Lo extraño es que mi RUTA definitivamente incluye esas carpetas:

 echo $PATH /home/vagrant/.rvm/gems/ruby-1.9.3-p194/bin:/home/vagrant/.rvm/gems/ruby-1.9.3-p194@global/bin:/home/vagrant/.rvm/rubies/ruby-1.9.3-p194/bin:/home/vagrant/.rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/vagrant_ruby/bin 

el file 'ldconfig' está en / sbin y es un ejecutable:

 cd /sbin ls -ll* -rwxr-xr-x 1 root root 465 Apr 20 2012 ldconfig 

Lo mismo con start-stop-daemon:

 -rwxr-xr-x 1 root root 26752 Apr 12 2012 start-stop-daemon 

Entonces, no estoy seguro de qué se está quejando realmente … ¿Alguna sugerencia? Algunos permissions emiten con Vagrant?

Solutions Collecting From Web of "dpkg: advertencia: 'ldconfig' no encontrado en PATH o no ejecutable – Ubuntu 12 – Vagrant"

Como está conectando su wget a un nuevo shell, el entorno no se conserva.

Para probar esto, intente lo siguiente desde adentro de su caja vagabunda

 root@lucid32:~# export PATH=$PATH:/foo root@lucid32:~# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/vagrant_ruby/bin:/foo 

Ahora ejecuta el mismo command como un usuario diferente

 root@lucid32:~# su -l vagrant -c 'echo $PATH' /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/vagrant_ruby/bin 

Compare el resultado de ambos commands y verá que el entorno no se conserva en el shell secundario. (/ foo desapareció)

Para que el entorno sea persistente, use --preserve-environment o -p o -m . Los 3 son equivalentes.

 root@lucid32:~# export PATH=$PATH:/foo root@lucid32:~# su --preserve-environment -l vagrant -c 'echo $PATH' -su: /root/.bash_profile: Permission denied /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/vagrant_ruby/bin:/foo:/opt/vagrant_ruby/bin 

No se preocupe por el error de permiso denegado, que se espera

Soluciones


Solución 1.

Use -p , -m o --preserve-environment

 su --preserve-environment -l vagrant -c 'wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh' 

Probado en la caja vagabunda lucid32 (10.04)

Solución 2.

Si su manifiesto de marionetas se ejecuta antes de su script heroku, simplemente agregue / sbin a la ruta del usuario vagrant a través de marionetas


Probado lucid32 con los siguientes commands

 root@lucid32:~# su --preserve-environment -l vagrant -c 'wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh' -su: /root/.bash_profile: Permission denied This script requires superuser access to install apt packages. You will be prompted for your password by sudo. --2013-08-20 07:40:13-- https://toolbelt.heroku.com/apt/release.key .... root@lucid32:~# su vagrant - vagrant@lucid32:/root$ heroku login Enter your Heroku cnetworkingentials. Email: