La solución definitiva al fallo de sudo rosdep init y la actualización de rosdep en la instalación de ROS (para celebrar el 100 aniversario de la fundación de la fiesta, la última versión)

1. Introducción

Con respecto a los problemas encontrados sudo rosdep inity rosdep updatefallas durante el proceso de instalación de ROS , las publicaciones en Internet son simplemente una gran canasta. Recientemente, el autor instaló ROS nuevamente y descubrió que las soluciones registradas anteriormente ya no son efectivas. Busqué todas las publicaciones en Internet y el 99% de ellas fueron reimpresas o desactualizadas. Finalmente, finalmente encontré un artículo que lo dejaba claro.Puede consultar este artículo: La solución definitiva para ROS rosdep init / update error reporting .

Así que recuérdeles a todos que, a veces, es necesario consultar las últimas publicaciones. . Los más leídos no son necesariamente mejores que los más recientes. Así que estamos en 2021 y el partido se fundó hace 100 años. Es suficiente para que todos lean mi artículo.

2. Razones del fracaso

Para resolver el problema, primero averigüe la causa del problema. sudo rosdep initY rosdep updatela causa raíz no puede permitirse ejecutar un "raw.githubusercontent.com" Este sitio no ayuda .

"raw.githubusercontent.com" es en realidad el servidor de usuario de Google GitHub, sudo rosdep inity rosdep updatealgunos archivos se descargan de este sitio web. Cuando se instala ROS por primera vez, generalmente es inaccesible para la red doméstica.

Tres. Solución

Dado que es un problema de red, es suficiente para resolver el problema de red. (Si desea ver la solución definitiva, pase al método tres)

(1) Método 1

Conéctese científicamente. No diré más al respecto. Si puede encontrar una manera de conectarse, no sucederá nada. En vista del hecho de que la mayoría de los camaradas no tienen esta condición, este método no es recomendado. (Muchas publicaciones dicen que usar un teléfono móvil para abrir hotspots, los hotspots móviles que he estado usando resultaron inútiles)

(Dos) método dos

sudo rosdep initDe hecho, lo que debe hacer es descargar un 20-default.listarchivo a una /etc/ros/rosdep/sources.list.dcarpeta, puede crear este archivo manualmente y luego pegar el contenido, crear un archivo:

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

Luego pega el siguiente contenido en él:

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

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

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

Esto completa el sudo rosdep inittrabajo. El 20-default.listcontenido final como se muestra en la figura
Inserte la descripción de la imagen aquírosdep updatees 20-default.listdescargar el archivo correspondiente según el enlace URL en el archivo de arriba . Puede ver que osx-homebrew.yawl,base.yawl,python.yawl,ruby.yawl,fuerte.yawlse utilizan cinco archivos, y las direcciones están "raw.githubusercontent.com"debajo, porque la red Si puede por supuesto, rosdep updatesi no puede descargarlo, no puede ejecutarlo.

Dado que la IP predeterminada no es accesible desde este sitio web, puede encontrar una IP alternativa "raw.githubusercontent.com"yendo a la dirección IP de la red de consulta de IP (https://site.ip138.com) y haga clic para ingresar . El resultado de la consulta es así (el resultado no es fijo ):
Inserte la descripción de la imagen aquí
Puede ver que hay cuatro direcciones IP que se pueden usar, 185.199.108.133-185.199.111.133, la dirección es holandesa, no se preocupe por esto. Intente hacer ping a estos ips:

ping 185.199.108.133

El resultado es el siguiente, que indica que la conexión es normal, y cuanto menor sea el tiempo de atraso, más rápida será la velocidad de transmisión de la red. Puede probar las cuatro direcciones IP y elegir la más rápida. Tome 185.199.108.133 como ejemplo aquí.
Inserte la descripción de la imagen aquí
Comando de entrada de terminal:

sudo gedit /etc/hosts 

Agregar una fila

185.199.108.133 raw.githubusercontent.com

/ etc / hosts finalmente se ve así:
Inserte la descripción de la imagen aquí
(Muchos blogs también hablan sobre este método y le dicen que agregue directamente "152.XXX.XXX.XXX raw.githubusercontent.com" u otras direcciones IP, pero estas direcciones IP están desactualizadas porque se actualizarán, de Por supuesto. Usado. Por lo tanto, asegúrese de consultar este sitio web de consulta de IP usted mismo)

Bien, puedes visitar ahora. Vuelve a ejecutarlo rosdep update. Si va bien, puedes tener éxito. Este método es muy fácil de usar a partir de 2020 y puede considerarse como la solución definitiva.

Pero este año puede ser desfavorable y este año no funcionará bien.

Los errores básicos informados son los tiempos de espera de la red y el tiempo de espera del protocolo de enlace puede aparecer durante la descarga de cualquiera de los cinco archivos anteriores.

ERROR: unable to process source [http://github.com/ros/rosdistro/raw/master/rosdep/base.yaml]:

<urlopen error _ssl.c:489: The handshake operation timed out> (http://github.com/ros/rosdistro/raw/master/rosdep/base.yaml)

De acuerdo, muchas personas se han encontrado con este problema y muchas publicaciones nos enseñan a modificar el período de tiempo de espera. El método consiste en cambiar los valores /usr/lib/python2.7/dist-packages/rosdep2/en los tres archivos sources_list.py、gbpdistro_support.py、rep3.pysiguientes DOWNLOAD_TIMEOUT = 15.0y cambiarlos a un valor mayor.

sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py

Ctrl+ FBuscar DOWNLOAD_TIMEOUT, cambie los siguientes 15 a un valor mayor, como 100. Modifique varios otros archivos de la misma manera.

Intente unas cuantas veces más rosdep updatey puede que tenga éxito. Solo puedo decirles que fallé, así que continúe cambiando, cambié el tiempo de espera a 500 y aún se agotó. . .

Inserte la descripción de la imagen aquí

Bueno, esto no está en ninguna parte. Para conocer el método definitivo, consulte el método tres.

(3) Método 3

Lo que dije anteriormente rosdep updatees descargar el archivo correspondiente de acuerdo 20-default.listcon el enlace URL ( "raw.githubusercontent.com") en el archivo. Dado que no se puede descargar a través de Internet, ¿puedo descargarlo manualmente? La respuesta es sí.

raw.githubusercontent.com es en realidad el servidor de datos de usuario de github, y los archivos descargados por el programa rosdep son los archivos del repositorio github.com/ros/rosdistro.

Ejecute el siguiente comando:

git clone https://github.com/ros/rosdistro.git

(Por supuesto, puedes ir directamente al https://github.com/ros/rosdistro.gitpunto de Download Zipdescarga)

La velocidad de Internet puede ser un poco lenta, no se preocupe, puede descargarlo del recurso CSDN que le proporcioné, haga clic para descargar gratis: archivo de instalación ROS rosdistro-master.zip .

Se descargará en una rosdistro-master.zipcarpeta nombrada en el directorio actual , todos los archivos mencionados anteriormente están en él.

Primero descomprime este archivo y luego lo coloco en un nuevo directorio, lo coloco /etc/rosdebajo y ejecuto el comando (la ruta específica se modifica de acuerdo con su directorio )

sudo cp -r /home/ubuntu/Documents/rosdistro-master /etc/ros

Primero modifique 20-default.list, ejecute:

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

"raw.githubusercontent.com"Reemplace todo el contenido vinculado con el enlace al archivo local, el 20-default.listcontenido final es así (la ruta específica del archivo se cambia de acuerdo con la ubicación que coloque ):

# os-specific listings first
#yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx
yaml file:///etc/ros/rosdistro-master/rosdep/osx-homebrew.yaml osx

# generic
#yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
#yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
#yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
#gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte
yaml file:///etc/ros/rosdistro-master/rosdep/base.yaml
yaml file:///etc/ros/rosdistro-master/rosdep/python.yaml
yaml file:///etc/ros/rosdistro-master/rosdep/ruby.yaml
gbpdistro file:///etc/ros/rosdistro-master/releases/fuerte.yaml fuerte

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

Luego, modifique los siguientes tres archivos y "raw.githubusercontent.com"reemplace también todos los contenidos vinculados con enlaces a archivos locales. Puede usar Ctrl+ para Fbuscar raw.githubusercontent.com, hay un lugar en cada archivo que debe modificarse.

1. /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
2. /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
3. /usr/lib/python2.7/dist-packages/rosdistro/__init__.py

Modificar gbpdistro_support.py, ejecutar:

sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py

Localice raw.githubusercontent.comesta línea (use Ctrl+ Fbuscar), comente el enlace original y cámbielo a un archivo local. El contenido modificado es el siguiente:

# FUERTE_GBPDISTRO_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml'
FUERTE_GBPDISTRO_URL = 'file:///etc/ros/rosdistro-master/releases/fuerte.yaml'

La captura de pantalla en el archivo es así:
Inserte la descripción de la imagen aquí
modificar rep3.py, ejecutar:

sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py

También ubique raw.githubusercontent.comesta línea (use Ctrl+ Fbuscar), comente el enlace original y cámbielo a un archivo local. El contenido modificado es el siguiente:

# REP3_TARGETS_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/releases/targets.yaml'
REP3_TARGETS_URL = 'file:etc/ros/rosdistro-master/releases/targets.yaml'

Modificar __init__.py, ejecutar:

sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/__init__.py

También ubique raw.githubusercontent.comesta línea (use Ctrl+ Fbuscar), comente el enlace original y cámbielo a un archivo local. El contenido modificado es el siguiente:

# DEFAULT_INDEX_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
DEFAULT_INDEX_URL = 'file:///etc/ros/rosdistro-master/index-v4.yaml'

Ok, ejecútalo de nuevo rosdep update, esta vez debe ser exitoso, y el resultado se muestra a continuación.
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_30267617/article/details/115028689
Recomendado
Clasificación