2012-05-04 12 views
16

Sto provando a eseguire un semplice programma RPC che ho creato usando rpcgen. È un semplice programma fattoriale. Questo è il mio primo programma RPC. La marca funziona bene. Vengono creati anche file eseguibili. Ma quando si tenta di eseguire il file eseguibile, ottengo questo errore:Errore nel tentativo di eseguire un semplice programma RPC

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

Ho provato a fare funzionare lo stesso programma su un altro PC con lo stesso sistema operativo (Ubuntu). Funziona perfettamente lì.

+0

Sembra che qualcos'altro sia già in esecuzione sulla porta che si desidera associare a – Nick

risposta

21

Prima di controllare che portmapper funzioni o meno, utilizzare rpcinfo per verificarlo. Se si verifica un errore, installare portmap

+0

Sì, grazie. Questo ha risolto il mio problema. – arkiver

+0

@arkiver: Benvenuto – rekenerd

6

Verificare se il servizio è in esecuzione utilizzando rpcinfo. Ecco cosa ricevo.

$ 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 

Se il servizio non è in esecuzione, è necessario avviarlo con rpcbind. Su Ubuntu avevo bisogno dei privilegi di root per eseguire il servizio.

1

Il problema si pone a causa di indisponibilità di utilità come "portmap" o "rpcbind".

  • Installare portmap o rpcbind. Risolverà il problema.
+0

Sì. Questo ha risolto il problema. Grazie. – arkiver

1

Come installare rpcgen

digitare questo comando sul terminale.

sudo apt-get install rpcbind

ma a volte il codice di cui sopra non vi aiuterà a Insall il rpcgen.

enter image description here

A quel tempo si deve seguire questi steps.Then si può facilmente installare. si dovrebbe seguire questo passo passo

1) sudo apt-get update
2) sudo apt-cache search apache2 3) sudo apt-get install rpcbind

Infine è possibile controllarlo utilizzando questo comando rpcinfo

enter image description here

3

C'è un bug/caratteristica nelle versioni più recenti di Linux di rpcbi nd - non è ora attiva/corsa, dopo l'avvio del sistema, ma dovrebbe essere in qualche modo "presa attiva", secondo systemctl file di configurazione rpcbind.service in/usr/lib/systemd/system /:

[Install] 
Also=rpcbind.socket 

Controllare questa discussione sullo stesso bug/funzionalità ha causato problemi di Ubuntu (https://bugs.launchpad.net/ubuntu/+source/rpcbind/+bug/1558196).

La risposta breve alla vostra (nostra) problema con rpcbind è - al fine di eseguire il codice server RPC, fare questo emendamento systemctrl la configurazione del sistema:

sudo systemctl add-wants multi-user.target rpcbind 

Ora, il il modo previsto per impostare rpcbind in esecuzione è in qualche modo accedere a /var/run/rpcbind.sock, dovrei molto a qualche guru Unix/Linux che potrebbe chiarirmi su quale codice dell'applicazione server RPC deve fare per ottenere questa attivazione socket "rpcbind" "effetto.

+0

Ho avuto questo problema dopo il riavvio e l'ultima linea mi ha aiutato - grazie – serup

+0

@serup: intendi la riga 'sudo systemctl ....'? Dato che il mio ultimo paragrafo è una domanda, non conosco ancora la risposta. Come ottenere tale 'attivazione socket' - dal momento che provare ad utilizzare il servizio rpc non lo fa. – vleo

+0

sì dopo aver eseguito l'ultima riga e il riavvio del sistema, quindi problemi dove andato – serup

Problemi correlati