web-dev-qa-db-fra.com

gem ne peut pas accéder à rubygems.org

J'ai un serveur avec Rackspace que j'utilise pour quelques sites Ruby. Quand j'essaie bundle install sur un nouveau site, je reçois

Retrying download gem from http://rubygems.org/ due to error (2/4): Gem::RemoteFetcher::UnknownHostError timed out (http://rubygems.org/gems/rake-12.3.1.gem)

Ou essayer gem update --system je reçois

ERROR:  While executing gem ... (Gem::RemoteFetcher::UnknownHostError)
timed out (http://api.rubygems.org/specs.4.8.gz)

Ce que j'ai essayé

  • Utilisation de curl pour télécharger l'URL de la gemme dans la première erreur (réussie)
  • Changer la source de gem de https://rubygems.org en http://rubygems.org
  • Modifier les serveurs de noms sur la tranche pour utiliser ceux de Google
  • Téléchargement et mise à jour de gem à partir des sources (sous 2.7.6)
  • Exécuter apt-get update
  • Ajout de AddTrustExternalCARoot-2048.pem

Ce que je n'ai pas essayé

  • Sacrifice animal
  • Pied de lapin chanceux
  • Supprimer tous les fichiers et réinstaller l'image

J'étais enfin (juste avant de soumettre cela) capable de faire fonctionner bundle install en supprimant rubygems.org comme source et en ajoutant https://gems.Ruby-china.org/ . Pourquoi gem serait-il incapable d'accéder à rubygems.org?

16
mrturtle

api.rubygems.org rencontre actuellement des problèmes avec la configuration IPv6: ce nom d'hôte a 4 adresses IPv6, mais ne répond à aucune de ces adresses. Ni à ping, ni aux tentatives de connexion TCP. Lorsque vous exécutez gem, votre gem essaie d'abord les adresses IPv6 et expire, sans même avoir le temps d'essayer les adresses IPv4.

La solution consiste à réduire la priorité des adresses IPv6 pour api.rubygems.org, de sorte que gem essaiera d'abord les adresses IPv4. Pour ce faire, mettez ces lignes dans /etc/gai.conf:


# Debian defaults.
precedence  ::1/128         50
precedence  ::/0            40
precedence  2002::/16       30
precedence  ::/96           20
precedence  ::ffff:0:0/96   10

# Low precedence for api.rubygems.org IPv6 addresses.
precedence  2a04:4e42::0/32  5

19

Je n'ai pas trouvé /etc/gai.conf sur MacOS. Pour contourner ce problème, je viens de désactiver IPV6 pour télécharger les gemmes. Cela a fonctionné pour moi.

'Préférences Système' -> 'Réseau' -> Sélectionnez WiFi -> cliquez sur le bouton 'Avancé' -> sélectionnez l'onglet 'TCP/IP' -> configurez la sélection Configurer IPV6 sur 'Lien local uniquement'.

13
Mauricio

À ce jour, les problèmes IPv6 avec rubygems.org existent toujours, bien que cela ne semble pas toujours ou partout. Je l'ai rencontré avec des VPS dans un centre de données, mais pas dans un autre. La réponse ci-dessus d'Alexei Khlebnikov est de loin le moyen le plus simple et le plus simple de contourner le problème (au moins sous Linux). Cependant, veillez à effectuer votre propre recherche pour les adresses IPv6 de api.rubygems.org; J'ai trouvé que les adresses spécifiques ci-dessus ne sont plus correctes.

$ Dig AAAA api.rubygems.org +short
rubygems.org.
2a04:4e42::70
2a04:4e42:400::70
2a04:4e42:600::70
2a04:4e42:200::70
2
bpope

Pour les utilisateurs Windows, le problème peut être résolu en hiérarchisant les adresses IPv4 sur IPv6 (voir https://superuser.com/a/436944 ). Vérifiez vos stratégies de préfixe en utilisant PowerShell en tant qu'administrateur:

netsh interface ipv6 show prefixpolicies

Vous devriez voir que les adresses IPv6 (::/0) ont une priorité supérieure à IPv4 (::/96 et :: ffff: 0: 0/96). Pour résoudre ce problème, supprimez l'entrée IPv6 et rajoutez-la avec une priorité inférieure, par exemple:

netsh interface ipv6 del prefixpolicy ::/0
netsh interface ipv6 add prefixpolicy ::/0 3 6

où la priorité 3 sur ma machine était inférieure à toutes les autres, et l'étiquette 6 était inutilisée.

0
Boon