Вопрос или проблема
При попытке собрать 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
для выяснения причин проблемы.