Ответ 1
Сначала вы проверяете, работает ли portmapper или нет, используйте rpcinfo
, чтобы проверить его.
Если вы получите какую-либо ошибку, установите portmap
Я пытаюсь запустить простую программу RPC, которую я создал с помощью rpcgen. Это простая факториальная программа. Это моя первая RPC-программа. Работает отлично. Выполняются также исполняемые файлы. Но при попытке запустить исполняемые файлы я получаю эту ошибку:
$sudo ./fact_server
Cannot register service: RPC: Unable to receive; errno = Connection refused
unable to register (FACTPROGRAM, FACTVERSION, udp).
Я попробовал запустить ту же программу на другом ПК с той же ОС (ubuntu). Там прекрасно работает.
Сначала вы проверяете, работает ли portmapper или нет, используйте rpcinfo
, чтобы проверить его.
Если вы получите какую-либо ошибку, установите portmap
Проверьте, работает ли служба с помощью rpcinfo
. Вот что я получаю.
$ 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
Если служба не запущена, вы должны запустить ее с помощью rpcbind
. На Ubuntu мне нужны права root для запуска службы.
В последних версиях Linux rpcbind есть ошибка/функция - теперь она не активна/запущена после загрузки системы, но должна как-то быть "сокет активирована" в соответствии с конфигурацией systemctl. Файл rpcbind.service в/usr/lib/systemd/система/:
[Install]
Also=rpcbind.socket
Проверить этот поток на той же ошибке/функции, вызванной проблемами Ubuntu (https://bugs.launchpad.net/ubuntu/+source/rpcbind/+bug/1558196).
Краткий ответ на ваш (наш) вопрос с rpcbind - - для запуска кода сервера RPC выполните эту поправку к конфигурации systemctrl вашей системы:
sudo systemctl add-wants multi-user.target rpcbind
Теперь предполагаемый способ запуска rpcbind - каким-то образом получить доступ к /var/run/rpcbind.sock, я был бы обязан многим гуру Unix/Linux, который может просвещать меня по тому, что код приложения сервера RPC должен сделать, чтобы выполните этот эффект активации "сокет" rpcbind.
Проблема возникает из-за недоступности утилиты, такой как "portmap" или "rpcbind".
Как установить rpcgen
Введите эту команду на терминал.
sudo apt-get install rpcbind
но иногда код выше не поможет вам скрыть rpcgen.
В это время вам необходимо выполнить следующие действия. Затем вы можете легко установить его. вы должны следовать этому шаг за шагом
1) Обновление sudo apt-get
2) Поиск sudo apt-cache apache2
3) sudo apt-get install rpcbind
Наконец, вы можете проверить это, используя эту команду rpcinfo