Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automatically installing apps #211

Open
stonier opened this issue Apr 19, 2014 · 6 comments
Open

Automatically installing apps #211

stonier opened this issue Apr 19, 2014 · 6 comments

Comments

@stonier
Copy link
Member

stonier commented Apr 19, 2014

Ye olde multimaster_experimental had a nice way of handling this (I think they used this for the pr2 as well). It consisted of

  • A script, rosget that helps you install debs with a name of ros-*.
  • Configuration for passwordless use of rosget in /etc/sudoers
  • There is also some code in the exchange part of ye olde app manager by Ken & his team.
@stonier stonier added this to the Indigo - Rapp Upgrade milestone Apr 19, 2014
@stonier
Copy link
Member Author

stonier commented Apr 19, 2014

Some information on passwordless settings for sudoers:

# One user, snorri, one command privelege without a password
snorri ALL = NOPASSWD: /opt/ros/indigo/bin/rosget

ORDER IS VERY IMPORTANT!!!! - this command should be last (if I recall correctly).

Perhaps you can also configure sudoers without a full pathname (just expect it on the path). This would be useful to ensure rosget would work even when in the source workspace.

@bit-pirate
Copy link
Collaborator

This is required for #196.

@dirk-thomas (@wjwwood) is this already implemented in rosdep? If not, do you have a suggestion for implementing this?

@bit-pirate
Copy link
Collaborator

sudoers seems to do the trick. However, we now face a new problem: How to update the environment variables to let the app manager/roslaunch know about the newly installed packages, especially important for nodelets.

Any ideas?

Which variable contains the information about available packages, nodelets, etc.?

PS: Some hints for modifying suders using a script. This would be important when enabling automatic installation when install the app manager:
http://stackoverflow.com/questions/323957/how-do-i-edit-etc-sudoers-from-a-script
http://stackoverflow.com/questions/8784761/adding-users-to-sudoers-through-shell-script?lq=1

@bit-pirate
Copy link
Collaborator

especially important for nodelets.

Currently this is a showstopper. In our current situation we already have a nodelet manager running (launched by the capability server). After the app manager installed a package, which contains a nodelet, the running nodelet manager is not aware of it and the load nodelet service call fails.

I was playing around with nodelet and pluginlib, but couldn't find a way to update the list of available plugins, e.g. calling refreshDeclaredClasses() (http://docs.ros.org/hydro/api/pluginlib/html/class__loader__imp_8h_source.html#l00619) did not do the trick.

@dirk-thomas @esteve do you have an idea how this could be implemented.

@dirk-thomas
Copy link
Contributor

I am pretty sure that rosdep does nothing in regards to sudoers. It simply need to be invoked with sudo rosdep init. I am not sure what you would like rosdep to provide for this?

The menthod refreshDeclaredClasses in pluginlib should be the right way of doing so. Since it uses roslib which uses rospack behind the scene all queries are potentially using cached data. Try invoking rospack profile before to ensure that the cache has been invalidated / refreshed.

@bit-pirate
Copy link
Collaborator

Dirk, updating the cache using rospack profile together with refreshDeclaredClasses did indeed do the trick. Please take a look at the newly created issues for nodelet and pluginlib (see links above) to check, if we can get this implemented quickly.

Regarding the other issues, my basic question is: What is a good way to allow automatic installation of ROS packages and their system dependencies?

rosget linked by Daniel further up seems like a pre-rosdep. Since it only could install ros packages, adding password-less usage of this tool did not add a big security risk as opposed to doing the same for apt-get. Now, I wonder, if we could use rosdep in place of rosget and by allowing only password-less use of rosdep lower the potential security leak.

Also, I'm curious, if you have found a good way to resolve the permission problem for rosdep - either by using sudoers or doing it in a different way?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants