Как скомпилировать dnsmasq 2.78?

Я хотел скомпилировать новый dnsmasq из thekelleys.org. Это работало, но затем я понял, что флаги не являются тем же как в исходной версии человечности 2.76-5:

Dnsmasq version 2.76  Copyright (c) 2000-2016 Simon Kelley
Compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP 
DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify

Dnsmasq version 2.78  Copyright (c) 2000-2017 Simon Kelley
Compile time options: IPv6 GNU-getopt no-DBus no-i18n no-IDN DHCP 
DHCPv6 no-Lua TFTP no-conntrack ipset auth no-DNSSEC loop-detect inotify

Таким образом, я изменил config.h, но получил некоторые ошибки, которые я не знаю для разрешения:

#define HAVE_CONNTRACK:

conntrack.c:21:59: fatal error: 
libnetfilter_conntrack/libnetfilter_conntrack.h: No such file or directory

#define HAVE_IDN: idna.h, не найденный.

#define HAVE_DNSSEC:

dnssec.c:22:24: fatal error: nettle/rsa.h: No such file or directory

Где libnetfilter_conntrack.h и как включать rsa.h? Где я могу найти config.h для текущей версии человечности, которая была уже изменена каноническим?

0
задан 4 October 2017 в 01:07

1 ответ

Если вы хотите скомпилировать dnsmasq самостоятельно, вы должны установить заголовки разработки для библиотек, на которые она ссылается, плюс gettext для интернационализации (i18n). В Ubuntu это будут следующие пакеты:

  • gettext
  • libdbus-1-dev
  • libidn11-dev
  • libnetfilter-conntrack-dev
  • nettle-dev

Как правило, у вас есть имя файла, например libnetfilter_conntrack.h, и вы хотите знать, какой пакет предоставляет этот файл, вы можете использовать веб-сайт https://packages.ubuntu.com/, а затем используйте «поиск содержимого пакетов», и вы перейдете на https://packages.ubuntu.com/search?searchon=contents&keywords = libnetfilter_conntrack.h & amp; mode = точное имя файла & amp; suite = bionic & amp; arch = any и сообщит вам, что искомый пакет называется libnetfilter-conntrack-dev.

Итак, теперь, если вы измените dnsmasq s src/config.h следующим образом:

--- a/src/config.h
+++ b/src/config.h
@@ -175,10 +175,10 @@ RESOLVFILE

 */


 /* #define HAVE_LUASCRIPT */ 
-/* #define HAVE_DBUS */
-/* #define HAVE_IDN */
-/* #define HAVE_CONNTRACK */
-/* #define HAVE_DNSSEC */
+#define HAVE_DBUS
+#define HAVE_IDN
+#define HAVE_CONNTRACK
+#define HAVE_DNSSEC

и будете использовать make all-i18n в качестве цели создания, вы получите двоичный файл с теми же параметрами, что и stock ubuntu:

$ make all-i18n

$ src/dnsmasq -v
Dnsmasq version 2.77test4-8-g4e7694d  Copyright (c) 2000-2016 Simon Kelley
Compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP
conntrack ipset auth DNSSEC loop-detect inotify

И если вы хотите узнать, какие параметры или даже исправления Ubuntu в точности используются для компиляции их двоичного пакета, вы можете использовать apt-get source dnsmasq, чтобы получить исходные коды для пакета с тем же именем .

0
ответ дан 2 November 2019 в 04:14

Другие вопросы по тегам:

Похожие вопросы: