ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

I want to install ROS Kinetic in multiple machines (say 40-50). But I don't want to run sudo apt-get install ros-kinetic-desktop-full and so on for other packages for each machine [..]

This question has come up before -- and I'll try to find it -- but for now: assuming you're using Ubuntu or Debian (and since you show an apt install command I believe you are): ROS is distributed as .deb packages for that platform, so what you're asking for is a way to provision multiple machines with the same installation commands.

That would make this a non-ROS question: there are multiple ways to manage a large number of Ubuntu/Debian machines, and none of them are ROS-specific.

as it will take internet bandwidth.

a pointer here would be to look at setting up an apt-mirror and make all machines use that. An alternative could be to use a simple caching http(s) proxy and seed it by having one machine run through the regular install procedure. All others would then get files from the cache of the proxy.

Is there a way to "Clone" the ROS Kinetic from my machine to other machines (like copy/paste) provided the machine specifications (architecture, OS version, etc.) are the same in target machine and my machine.

You'll want to avoid doing this, as, if you're not using any kind of centralised management now, chances are there will be differences between those machines and simply cloning a set of packages could very well result in missing dependencies and/or version conflicts.

Let apt deal with those and properly install the packages and their dependencies.

I want to do the above exporting for my catkin packages as well for multiple machines.

With 50 machines it may make sense to take a look at setting up a ROS buildfarm or one of its alternatives. You may also be able to provision other machines with packages built on one machine and then distributed as .deb packages. There are multiple Q&As on this site about that.

(tip: use Google to search ROS Answers. Append site:answers.ros.org to your query)

I want to install ROS Kinetic in multiple machines (say 40-50). But I don't want to run sudo apt-get install ros-kinetic-desktop-full and so on for other packages for each machine [..]

This question has come up before -- and I'll try to find it -- but for now: assuming you're using Ubuntu or Debian (and since you show an apt install command I believe you are): ROS is distributed as .deb packages for that platform, so what you're asking for is a way to provision multiple machines with the same installation commands.

That would make this a non-ROS question: there are multiple ways to manage a large number of Ubuntu/Debian machines, and none of them are ROS-specific.

Chef, ansible and similar tools are things you could look at.

as it will take internet bandwidth.

a pointer here would be to look at setting up an apt-mirror and make all machines use that. An alternative could be to use a simple caching http(s) proxy and seed it by having one machine run through the regular install procedure. All others would then get files from the cache of the proxy.

Is there a way to "Clone" the ROS Kinetic from my machine to other machines (like copy/paste) provided the machine specifications (architecture, OS version, etc.) are the same in target machine and my machine.

You'll want to avoid doing this, as, if you're not using any kind of centralised management now, chances are there will be differences between those machines and simply cloning a set of packages could very well result in missing dependencies and/or version conflicts.

Let apt deal with those and properly install the packages and their dependencies.

I want to do the above exporting for my catkin packages as well for multiple machines.

With 50 machines it may make sense to take a look at setting up a ROS buildfarm or one of its alternatives. You may also be able to provision other machines with packages built on one machine and then distributed as .deb packages. There are multiple Q&As on this site about that.

(tip: use Google to search ROS Answers. Append site:answers.ros.org to your query)

I want to install ROS Kinetic in multiple machines (say 40-50). But I don't want to run sudo apt-get install ros-kinetic-desktop-full and so on for other packages for each machine [..]

This question has come up before -- and I'll try to find it -- but for now: assuming you're using Ubuntu or Debian (and since you show an apt install command I believe you are): ROS is distributed as .deb packages for that platform, so what you're asking for is a way to provision multiple machines with the same installation commands.

That would make this a non-ROS question: there are multiple ways to manage a large number of Ubuntu/Debian machines, and none of them are ROS-specific.

Chef, ansible and similar tools are things you could look at.

as it will take internet bandwidth.

a pointer here would be to look at setting up an apt-mirror and make all machines use that. An alternative could be to use a simple caching http(s) proxy and seed it by having one machine run through the regular install procedure. All others would then get files from the cache of the proxy.

Is there a way to "Clone" the ROS Kinetic from my machine to other machines (like copy/paste) provided the machine specifications (architecture, OS version, etc.) are the same in target machine and my machine.

You'll want to avoid doing this, as, if you're not using any kind of centralised management now, chances are there will be differences between those machines and simply cloning a set of packages could very well result in missing dependencies and/or version conflicts.

Let apt deal with those and properly install the packages and their dependencies.

I want to do the above exporting for my catkin packages as well for multiple machines.

With 50 machines it may make sense to take a look at setting up a ROS buildfarm or one of its alternatives. You may also be able to provision other machines with packages built on one machine and then distributed as .deb packages. There are multiple Q&As on this site about that.

(tip: use Google to search ROS Answers. Append site:answers.ros.org to your query)


Edit: and if you're not setting up those machines for development purposes (ie: they're embedded in a product) then perhaps using Docker (or another containerisation technology) may actually make more sense.

I want to install ROS Kinetic in multiple machines (say 40-50). But I don't want to run sudo apt-get install ros-kinetic-desktop-full and so on for other packages for each machine [..]

This question has come up before -- and I'll try to find it -- but for now: assuming you're using Ubuntu or Debian (and since you show an apt install command I believe you are): ROS is distributed as .deb packages for that platform, so what you're asking for is a way to provision multiple machines with the same installation commands.

That would make this a non-ROS question: there are multiple ways to manage a large number of Ubuntu/Debian machines, and none of them are ROS-specific.

Chef, ansible and similar tools are things you could look at.

as it will take internet bandwidth.

a pointer here would be to look at setting up an apt-mirror and make all machines use that. An alternative could be to use a simple caching http(s) proxy and seed it by having one machine run through the regular install procedure. All others would then get files from the cache of the proxy.

Is there a way to "Clone" the ROS Kinetic from my machine to other machines (like copy/paste) provided the machine specifications (architecture, OS version, etc.) are the same in target machine and my machine.

You'll want to avoid doing this, as, if you're not using any kind of centralised management now, chances are there will be differences between those machines and simply cloning a set of packages could very well result in missing dependencies and/or version conflicts.

Let apt deal with those and properly install the packages and their dependencies.

I want to do the above exporting for my catkin packages as well for multiple machines.

With 50 machines it may make sense to take a look at setting up a ROS buildfarm or one of its alternatives. You may also be able to provision other machines with packages built on one machine and then distributed as .deb packages. There are multiple Q&As on this site about that.

(tip: use Google to search ROS Answers. Append site:answers.ros.org to your query)


Edit: and if you're not setting up those machines for development purposes (ie: they're embedded in a product) then perhaps using Docker (or another containerisation technology) may actually make more sense.


Edit:

Will the generated .deb also account for the dependent packages that ROS needs or my package needs?

If the package manifest of the package(s) that the .deb packages have correctly stated their dependencies, then, yes, the .deb should also contain a declaration of those dependencies.

Yes, those machines are not for development purposes, the machines will be used by other people for separate applications. All the machines will be identical (same OS, same architecture, same Hardware).

If they're really identical, then it might also be possible to use disk cloning software. There are a few caveats to watch out for though (such as disk serial nrs, ethernet configuration, etc). There are tons of sites with extensive documentation on how to set that up with Linux.

How can Docker be useful? From what I understand, Docker is lightweight VM, which can manager multiple machines.

Docker is not a vm.

Will it take care of the external dependencies that ROS Kinetic or my package needs?

I'd suggest to read up on what Docker can do when using it to package applications and integrating it into your deployment pipeline. In short: you'd create a Docker image that contains everything needed to run your application.