Я хотел скомпилировать новый 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 для текущей версии человечности, которая была уже изменена каноническим?
Если вы хотите скомпилировать dnsmasq
самостоятельно, вы должны установить заголовки разработки для библиотек, на которые она ссылается, плюс gettext
для интернационализации (i18n). В Ubuntu это будут следующие пакеты:
Как правило, у вас есть имя файла, например 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
, чтобы получить исходные коды для пакета с тем же именем .