cmake не может найти sudo - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь запустить некоторые тесты через sudo, так как они требуют разрешений сетевого администратора, и я не могу использовать setcap, так как мы запускаем некоторые из этих тестов под valgrind, который не может быть запущен на исполняемых файлах setcap.По какой-то причине sudo не найден.sudo работает как положено, когда вызывается из терминала bash или из системного вызова () в приложении C.

Пример CMakeLists.txt:

cmake_minimum_required(VERSION 3.9)

enable_testing()

add_test(NAME dummy_test
    COMMAND sudo ls
)

Вывод:

$ make test
Running tests...
Test project /home/cmorgan/projects/test/build
    Start 1: dummy_test
Could not find executable sudo
Looked in the following places:
sudo
sudo
Release/sudo
Release/sudo
Debug/sudo
Debug/sudo
MinSizeRel/sudo
MinSizeRel/sudo
RelWithDebInfo/sudo
RelWithDebInfo/sudo
Deployment/sudo
Deployment/sudo
Development/sudo
Development/sudo
Unable to find executable: sudo
1/1 Test #1: dummy_test .......................***Not Run   0.00 sec

0% tests passed, 1 tests failed out of 1

Total Test time (real) =   0.00 sec

The following tests FAILED:
      1 - dummy_test (Not Run)
Errors while running CTest
make: *** [Makefile:73: test] Error 8

Я пытался использовать абсолютный путь к sudo, / usr / bin / sudo с той же проблемой.

Похоже, это может быть связано с тем, что sudo является приложением setuid, но я не совсем уверенкак действовать.

1 Ответ

0 голосов
/ 10 июня 2019

У меня была такая же проблема, и она была вызвана двоичным файлом sudo, не имеющим разрешения read.Если вы запустите его, вы можете, но cmake пытается быть умным и поэтому терпит неудачу.Обходной путь:

sudo chmod +r /usr/bin/sudo

Примером такой системы, где sudo не имеет разрешения read, является Centos 6.

...