Как исправить фатальную ошибку: sys/capability.h: Нет такого файла или каталога

Вопрос или проблема

При попытке собрать Openvpn3 из исходников я столкнулся с этой ошибкой. Какой пакет или библиотеку необходимо установить для её устранения?

Эта страница содержит полезную информацию в поиске ошибок, связанных с отсутствующими зависимостями. Здесь, если мы ищем sys/capability.h, мы находим на странице:

ошибка: sys/capability.h: Нет такого файла или директории

Если вы получаете ошибку sys/capability.h: Нет такого файла или директории, это означает, что требуемый пакет не установлен в вашей системе.

В Debian или Ubuntu должно сработать что-то вроде следующего:

sudo apt-get install libcap-dev

В общем, чтобы найти, какой пакет содержит отсутствующий файл, вы можете использовать apt-file (по умолчанию не установлен):

$ apt-file search sys/capability.h

gcc-i686-linux-android: /usr/x86_64-linux-gnu/i686-linux-android/include/sys/capability.h
libcap-dev: /usr/include/sys/capability.h
libklibc-dev: /usr/lib/klibc/include/sys/capability.h

В приведённом примере перечислены три пакета, которые предоставляют файл с именем sys/capability.h: gcc-i686-linux-android, libcap-dev и libklibc-dev; один из этих трёх, возможно, отсутствует у вас.

Конкретно для openvpn3, когда вы собираете из исходников, сообщение об ошибке, с которым вы столкнулись, указывает, какой файл ссылается на sys/capability.h – вы можете использовать команду git blame <ссылающийся файл>, чтобы узнать, какой коммит ввел зависимость от sys/capability.h, и исследовать этот коммит для получения других сведений о добавленной зависимости. Если новая зависимость — это библиотека, которая не упакована для Ubuntu, то git blame поможет вам лучше понять, что именно отсутствует.

Я полагаю, что в вашем случае вам не хватает libcap-dev, как указал @lacostenycoder.

Я предоставляю этот улучшенный ответ в надежде, что он поможет будущим искателям понять, где более напрямую и быстро найти свои ответы.

У меня была такая же проблема на моих серверах RHEL 8 при установке модуля onload.

После установки пакета yum install libcap-devel-2.48-6.el8_9.x86_64 я смог выполнить установку модуля onload.

Ответ или решение

Когда вы сталкиваетесь с ошибкой fatal error: sys/capability.h: No such file or directory при сборке OpenVPN 3 из исходников, это указывает на то, что не установлен необходимый пакет, содержащий этот заголовочный файл.

Решение для пользователей Debian/Ubuntu

Если вы используете Debian или Ubuntu, вам нужно установить пакет libcap-dev, который предоставляет заголовочный файл sys/capability.h. Для этого выполните следующую команду в терминале:

sudo apt-get install libcap-dev

Решение для пользователей RHEL/CentOS

Для пользователей RHEL или CentOS, вам потребуется установить пакет libcap-devel. Это можно сделать с помощью команды:

sudo yum install libcap-devel

Поиск отсутствующего файла

Если вы не уверены, какой пакет содержит отсутствующий файл, вы можете использовать инструмент apt-file (для Debian/Ubuntu). Если он не установлен, вы можете установить его следующим образом:

sudo apt-get install apt-file

После установки запустите apt-file для обновления базы данных:

sudo apt-file update

Теперь вы можете выполнить команду для поиска пакета, который содержит файл sys/capability.h:

apt-file search sys/capability.h

Это покажет вам список пакетов, которые предоставляют данный файл, что поможет вам точно определить, что нужно установить.

Расследование зависимости

Если ошибка возникает при сборке OpenVPN 3, стоит обратить внимание на сообщение об ошибке, которое указывает, какой файл ссылается на sys/capability.h. Вы можете использовать команду git blame на этом файле, чтобы выяснить, какой коммит ввел эту зависимость. Это может помочь определить, какие еще зависимости могли быть добавлены вместе с этой.

git blame <имя_файла>

Заключение

В большинстве случаев ошибка sys/capability.h: No such file or directory решается установкой пакета libcap-dev или libcap-devel, в зависимости от вашей операционной системы. Убедитесь, что необходимый пакет установлен, а затем повторите процесс сборки. Если проблема не решается, проверьте другие зависимости, указанные в документации OpenVPN 3, или воспользуйтесь исследованием через git blame для выяснения причин проблемы.

Оцените материал
Добавить комментарий

Капча загружается...