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

Any idea where those packages are located (if there's some sort of archive)?

The ROS package repositories only retain the latest released versions, so you cannot install older versions.

That is: right now. One of the tasks in the work towards an enhanced ROS 2 release / packaging infrastructure is to use aptly instead of reprepro. The former does support keeping older versions around. That work is ongoing though, with no date for completion scheduled yet.


An alternative would be to build what you need from source.

All packages released through the ROS buildfarm are built from specific tags in the source repositories of those packages. If you know which package you want to build an older version for, the process basically becomes:

  1. make a local clone of the repository containing the sources of the package
  2. checkout the tag of the specific version you want
  3. make sure to have installed all dependencies (see q#252478 for the general procedure)
  4. build the workspace

This sort of approach typically works for packages that don't have too many dependencies.

If there are a lot of dependencies, the likelyhood that one of those dependencies has seen a breaking change in a new release increase. Building just a single package from source in those cases can be problematic, as APIs could have gone out-of-sync (ie: the pkg that you're interested in then doesn't build any more).

Any idea where those packages are located (if there's some sort of archive)?

The ROS package repositories only retain the latest released versions, so you cannot install older versions.

That is: right now. One of the tasks in the work towards an enhanced ROS 2 release / packaging infrastructure is to use aptly instead of reprepro. The former does support keeping older versions around. That work is ongoing though, with no date for completion scheduled yet.


An alternative would be to build what you need from source.

All packages released through the ROS buildfarm are built from specific tags in the source repositories of those packages. If you know which package you want to build an older version for, the process basically becomes:

  1. make a local clone of the repository containing the sources of the package
  2. checkout the tag of the specific version you want
  3. make sure to have installed all dependencies (see q#252478 for the general procedure)
  4. build the workspace

This sort of approach typically works for packages that don't have too many dependencies.

If there are a lot of dependencies, the likelyhood that one of those dependencies has seen a breaking change in a new release increase. Building just a single package from source in those cases can be problematic, as APIs could have gone out-of-sync (ie: the pkg that you're interested in then doesn't build any more).


Edit: a project I'm involved in tries to solve this by essentially building all of ROS from source, using versions of released packages that were/are known to have been compatible. We do that by essentially rewinding ros/rosdistro to a specific point in time and then using rosinstall_generator to generate a set of packages at the versions they were released at in the past.

This may be "overkill" for what you're trying to do, but if you're interested: rosin-project/rosinstall_generator_time_machine. It's not perfect, but it's helped us quite a bit already.

Any idea where those packages are located (if there's some sort of archive)?

The ROS package repositories only retain the latest released versions, so you cannot install older versions.

That is: right now. One of the tasks in the work towards an enhanced ROS 2 release / packaging infrastructure is to use aptly instead of reprepro. The former does support keeping older versions around. That work is ongoing though, with no date for completion scheduled yet.


An alternative would be to build what you need from source.

All packages released through the ROS buildfarm are built from specific tags in the source repositories of those packages. If you know which package you want to build an older version for, the process basically becomes:

  1. make a local clone of the repository containing the sources of the package
  2. checkout the tag of the specific version you want
  3. make sure to have installed all dependencies (see q#252478 #q252478 for the general procedure)
  4. build the workspace

This sort of approach typically works for packages that don't have too many dependencies.

If there are a lot of dependencies, the likelyhood that one of those dependencies has seen a breaking change in a new release increase. Building just a single package from source in those cases can be problematic, as APIs could have gone out-of-sync (ie: the pkg that you're interested in then doesn't build any more).


Edit: a project I'm involved in tries to solve this by essentially building all of ROS from source, using versions of released packages that were/are known to have been compatible. We do that by essentially rewinding ros/rosdistro to a specific point in time and then using rosinstall_generator to generate a set of packages at the versions they were released at in the past.

This may be "overkill" for what you're trying to do, but if you're interested: rosin-project/rosinstall_generator_time_machine. It's not perfect, but it's helped us quite a bit already.