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.
Tout d’abord, vérifiez que portmapper fonctionne ou non, utilisez rpcinfo
pour le vérifier. Si vous obtenez une erreur, installez portmap
.
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.
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".
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.
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
Le problème se pose en raison de l'indisponibilité d'un utilitaire tel que "portmap" ou "rpcbind".