2012-05-04 10 views
16

Próbuję uruchomić prosty program RPC, który utworzyłem przy pomocy rpcgen. To jest prosty program silni. To jest mój pierwszy program RPC. Wykonaj prace dobrze. Wykonywane są również robaki. Ale kiedy próbuje uruchomić pliki wykonywalne, otrzymuję ten błąd:Błąd podczas próby uruchomienia prostego programu RPC

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

Próbowałem uruchomiony ten sam program na innym komputerze z tym samym OS (Ubuntu). Działa tam idealnie.

+0

Wygląda na to, że coś innego działa już na porcie, który chcesz powiązać z – Nick

Odpowiedz

21

Najpierw sprawdzasz, czy portmapper działa, czy nie, użyj rpcinfo, aby to sprawdzić. Jeśli wystąpi błąd, zainstaluj portmap

+0

Tak, dziękuję. To rozwiązało mój problem. – arkiver

+0

@arcarver: Witamy – rekenerd

6

Sprawdź, czy usługa działa z wykorzystaniem rpcinfo. Oto, co otrzymuję.

$ 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 

Jeśli usługa nie działa, należy ją uruchomić pod numerem rpcbind. W systemie Ubuntu do uruchomienia usługi potrzebowałem uprawnień roota.

1

Problem powstaje z powodu niedostępności narzędzia, takiego jak "portmap" lub "rpcbind".

  • Zainstaluj portmap lub rpcbind. To rozwiąże problem.
+0

Tak. To rozwiązało problem. Dzięki. – arkiver

1

Jak zainstalować rpcgen

wpisaniu tego polecenia w terminalu.

sudo apt-get install rpcbind

ale czasami w powyższym kodzie nie pomoże Ci Insalla na rpcgen.

enter image description here

W tym czasie trzeba śledzić te steps.Then można łatwo zainstalować. należy wykonać ten krok po kroku

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

Wreszcie można sprawdzić go za pomocą tego komenda rpcinfo

enter image description here

3

jest bug/funkcja w ostatnich wersjach Linuksa rpcbi nd - nie jest teraz aktywna/działa po starcie systemu, ale powinna być jakoś "gniazdo aktywowane" według systemctl pliku rpcbind.service konfiguracja w/usr/lib/Systemd/system /:

[Install] 
Also=rpcbind.socket 

zobacz ten wątek na ten sam błąd/funkcję spowodował problemy z Ubuntu (https://bugs.launchpad.net/ubuntu/+source/rpcbind/+bug/1558196).

Krótka odpowiedź na twoje (nasz) problem z rpcbind jest - w celu uruchomienia kodu serwera RPC, zrobić tę poprawkę do systemctrl konfigurację o systemie:

sudo systemctl add-wants multi-user.target rpcbind 

Teraz zamierzonym sposobem na uruchomienie programu rpcbind jest uzyskanie dostępu do /var/run/rpcbind.sock, wiele zawdzięczam guru Unix/Linux, który może poinformować mnie o tym, jaki kod aplikacji serwera RPC powinien wykonać, aby uzyskać aktywację gniazda rpcbind "efekt.

+0

Miałem ten problem po ponownym uruchomieniu i pomógł ci twój ostatni wiersz - dzięki – serup

+0

@serup: Masz na myśli linię "sudo systemctl ...."? Ponieważ mój ostatni akapit jest pytaniem, nie znam odpowiedzi na pytanie. Jak osiągnąć tę "aktywację gniazda" - od próby użycia usługi rpc tego nie robi. – vleo

+0

tak po uruchomieniu ostatniego wiersza i ponownym uruchomieniu systemu, a następnie problem tam, gdzie nie ma – serup