web-dev-qa-db-fra.com

Erreur lors de la tentative d'exécution d'un programme RPC simple

J'essaie de lancer un programme RPC simple que j'ai créé à l'aide de rpcgen. C’est un programme factoriel simple. Ceci est mon premier programme RPC. La marque fonctionne bien. Des exécutables sont également créés. Mais en essayant d’exécuter les exécutables, j’obtiens cette erreur: 

$Sudo ./fact_server 
Cannot register service: RPC: Unable to receive; errno = Connection refused
unable to register (FACTPROGRAM, FACTVERSION, udp).

J'ai essayé d'exécuter le même programme sur un autre ordinateur avec le même système d'exploitation (Ubuntu). Il fonctionne parfaitement là-bas. 

18
arkiver

Tout d’abord, vérifiez que portmapper fonctionne ou non, utilisez rpcinfo pour le vérifier. Si vous obtenez une erreur, installez portmap.

23
rekenerd

Vérifiez si le service est en cours d'utilisation à l'aide de rpcinfo. Voici ce que je reçois.

$ rpcinfo 
   program version netid     address                service    owner
    100000    4    tcp6      ::.0.111               portmapper superuser
    100000    3    tcp6      ::.0.111               portmapper superuser
    100000    4    udp6      ::.0.111               portmapper superuser
    100000    3    udp6      ::.0.111               portmapper superuser
    100000    4    tcp       0.0.0.0.0.111          portmapper superuser
    100000    3    tcp       0.0.0.0.0.111          portmapper superuser
    100000    2    tcp       0.0.0.0.0.111          portmapper superuser
    100000    4    udp       0.0.0.0.0.111          portmapper superuser
    100000    3    udp       0.0.0.0.0.111          portmapper superuser
    100000    2    udp       0.0.0.0.0.111          portmapper superuser
    100000    4    local     /run/rpcbind.sock      portmapper superuser
    100000    3    local     /run/rpcbind.sock      portmapper superuser
        24    5    udp       0.0.0.0.3.99           -          superuser
        24    5    tcp       0.0.0.0.3.100          -          superuser

Si le service ne fonctionne pas, vous devez le démarrer avec rpcbind. Sur Ubuntu, j'avais besoin des privilèges root pour exécuter le service. 

6
Muneeb

Il y a un bogue/fonctionnalité dans les dernières versions Linux de rpcbind - il n'est plus actif/en cours d'exécution après le démarrage du système, mais devrait en quelque sorte être "socket activé" conformément à la configuration de systemctl. Le fichier rpcbind.service de/usr/lib/systemd/system /:

[Install] 
Also=rpcbind.socket

Vérifier ce fil sur le même bug/la même fonctionnalité a causé des problèmes Ubuntu ( https://bugs.launchpad.net/ubuntu/+source/rpcbind/+bug/1558196 ).

La réponse courte à votre (notre) problème avec rpcbind est - pour exécuter le code du serveur RPC, apportons cette modification à la configuration de systemctrl de votre système:

Sudo systemctl add-wants multi-user.target rpcbind

Maintenant, le moyen de mettre en marche rpcbind consiste à accéder à /var/run/rpcbind.sock, je dois beaucoup à un gourou Unix/Linux qui peut m'éclairer sur ce que le code d'application du serveur RPC doit faire pour atteindre cet objectif. effet "activation de socket".

4
vleo

Comment installer rpcgen

Tapez cette commande sur le terminal.

Sudo apt-get install rpcbind

mais parfois, le code ci-dessus ne vous aidera pas à insérer le rpcgen.

enter image description here

A ce moment, vous devez suivre ces étapes. Ensuite, vous pouvez facilement l’installer. Vous devez suivre cette étape par étape

1) Sudo apt-get update
2) Sudo apt-cache search Apache2 3) Sudo apt-get install rpcbind

Enfin, vous pouvez le vérifier en utilisant cette commande rpcinfo  

enter image description here

1
S.W.L.Nirmani

Le problème se pose en raison de l'indisponibilité d'un utilitaire tel que "portmap" ou "rpcbind". 

  • Installez soit portmap ou rpcbind. Cela résoudra le problème.
1
pritam