Ask Your Question
1

'rosdep init' error when running without internet

asked 2014-02-24 21:56:40 -0500

prince gravatar image

updated 2014-02-25 20:40:45 -0500

Hi I am trying to follow catkin tutorial for hydro. I realise 'sudo rosdep init' and rosdep update command need connection to internet repository. We have a local deb repository of ubuntu & ros in lab and are not connected directly to net. Is there a work around of this problem?

EDIT 2: I have created /etc/ros/rosdep/sources.list.d . In this directory I copied https://github.com/ros/rosdistro/tree... . I modified https URL with local URI as file:///hoe/rosdep/base.yaml etc. Other files are copied from https://github.com/ros/rosdistro/tree... . I have set 20-default.list properly. rosdep update can read from it. After generating HIT for listed yaml files, rosdep start looking for net with the following prompt

 query rosdistro index
 https://raw.github.com/ros/rosdistro/master/index.yaml

This file I have added as one of the yaml files! My current sources.list.d/20-default.list files have following contents

yaml file:///mnt/store/rosdep/osx-homebrew.yaml osx
#yaml https://github.com/ros/rosdistro/raw/master/rosdep/osx-homebrew.yaml osx
# generic
#yaml https://github.com/ros/rosdistro/raw/master/rosdep/base.yaml
yaml file:///mnt/store/rosdep/base.yaml
#yaml https://github.com/ros/rosdistro/raw/master/rosdep/python.yaml
yaml file:///mnt/store/rosdep/python.ymal
#gbpdistro https://github.com/ros/rosdistro/raw/master/releases/fuerte.yaml fuerte

I do not have any entry relataed to hydro which IMHO rosdep is trying to access.

This link https://github.com/ros/rosdistro/raw/... do not works! I do not know whether gbpdistro resolves this into an actual link? A fuerte.yaml is available at https://github.com/ros/rosdistro/tree... but nothing related to hydro or groovy. It is probably because in hydro rosdep is updated. There is a hint in 20-default.list, which read as follows :

newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

I have no idea how set it up.I need help in resolving this issue.

thanks prince

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
1

answered 2014-02-25 02:51:50 -0500

RedoXyde gravatar image

updated 2014-02-25 22:34:44 -0500

Hi

rosdep uses a source.list file (pretty much like apt does): On my system it's located here:

/etc/ros/rosdep/sources.list.d/20-default.list

In this .list file you can find several links to github-hosted yaml files.

  • Try creating the file by hand if it doesn't exist
  • Make the necessary changes in the sources.list file, and probably in the .yaml files, so rosdep update can work without Internet access...

Edit: Here's the content of the file. cat /etc/ros/rosdep/sources.list.d/20-default.list

# os-specific listings first
yaml https://github.com/ros/rosdistro/raw/master/rosdep/osx-homebrew.yaml osx
yaml https://github.com/ros/rosdistro/raw/master/rosdep/gentoo.yaml gentoo

# generic
yaml https://github.com/ros/rosdistro/raw/master/rosdep/base.yaml
yaml https://github.com/ros/rosdistro/raw/master/rosdep/python.yaml
yaml https://github.com/ros/rosdistro/raw/master/rosdep/ruby.yaml
gbpdistro https://github.com/ros/rosdistro/raw/master/releases/fuerte.yaml fuerte
gbpdistro https://github.com/ros/rosdistro/raw/master/releases/groovy.yaml groovy
gbpdistro https://github.com/ros/rosdistro/raw/master/releases/hydro.yaml hydro

For the yaml files, just fetch the files from github since they're too big to post here.

Edit2 (I can't reply until someone else replies first): You're right, it looks like the gbpdistro lines are useless (rosdep update throws "Ignore legacy gbpdistro "<ros_distro_here>") (It's funny I have them since my setup is only two weeks old...)

Actually, the <ros_distro> specifics can be found in the __index.yaml__ file you linked. There:

[...]
hydro:
    distribution: hydro/distribution.yaml
    distribution_cache: http://ros.org/rosdistro/hydro-cache.yaml.gz
    [...]

But I'm not sure you'll need this since you won't have any Internet access to fetch the git sources (for the ROS packages).

From there, I see two options:

  • You trick rosdep, changing your /etc/hosts file and setting up a webserver (where you put the file rosdep tries to download) so it'll use yours and not try to access the Internet
  • You can try the command lines options (see Here) to enforce the update so rosdep is happy and then provides you the system dependencies management you need.
edit flag offensive delete link more

Comments

Can you post contents of this file other relevant yaml files?

prince gravatar imageprince ( 2014-02-25 14:05:20 -0500 )edit

I do not have gbpdistro in the 20-default.list. I have edited question to reflect my observations.

prince gravatar imageprince ( 2014-02-25 20:47:43 -0500 )edit
1

answered 2014-02-26 04:41:53 -0500

Dirk Thomas gravatar image

Besides the urls listed in the sources file rosdep also checks rosdistro for all ROS packages.

In order to use rosdistro locally you need to have a local index.yaml file (from https://github.com/ros/rosdistro/blob... ) and point to it by setting ROSDISTRO_INDEX_URL to a local file url.

Additionally the index file references cache files hosted on ros.org . You will also need to have them locally and update the references in the index file to point to the local file location.

edit flag offensive delete link more

Comments

Hi, can you tell me how to "setting ROSDISTRO_INDEX_URL to a local file url". So that rosdep update will ignore querry index.yaml from "https://raw.githubusercontent.com/ros/rosdistro/master/index.yaml"

dviettu134 gravatar imagedviettu134 ( 2017-09-26 22:26:43 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2014-02-24 21:56:40 -0500

Seen: 1,180 times

Last updated: Feb 26 '14