LINUX.ORG.RU

Как собрать пакет из исходника. NTP.

 ,


0

1

Коллеги, добрый день.

Опыт в Linux минимальный. Я не понимаю, как собрать NTP из исходников или что происходит.

Вводные: Я собираю samba dc по офф доке: https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller#Configuring_Time_Synchronization_.28Optional_Depending_on_Use-Case.29

Всё скомпилировано и работает. А вот настроить синхронизацию времени не выходит.

Задача: Настроить NTP с поддержкой –enable-ntp-signd https://wiki.samba.org/index.php/Time_Synchronisation#With_chrony

  • Всё, что я делаю: root@dc-01:/tmp/ntp-4.2.8p15# ./configure –enable-ntp-signd root@dc-01:/tmp/ntp-4.2.8p15# make root@dc-01:/tmp/ntp-4.2.8p15# make install

  • Как я понял, особенность сборки из исходников это то, что конфиги автоматически не генерируются.

Перед этим я поставил из пакетов ntp и забрал оттуда /etc/init.d/ntp чтоб смочь запустить сервис. Сам конфиг /etc/ntp.conf я создал вручную и вставил в него нужные настройки.

Скрипт запуска:/etc/init.d/ntp - https://pastebin.com/3t6Msxab Конфиг:/etc/ntp.conf - https://pastebin.com/ed2jBaZd

Далее:

update-rc.d ntp defaults systemctl status ntp

После создания конфигов и запуска сервиса я вижу:

https://ibb.co/ZNrGrXV

Сервис успешно запустился, но время с сервера не берется, а так же сам ntp не может синхронизировать время.

Диагностика говорит:

root@dc-01:/etc/init.d# ntpq -p ntpq: read: Connection refused

  • Попытки сборки из исходника не увенчались успехом.
  1. Теперь я всё удаляю и делаю заново. Компилирую NTP. А далее просто делаю apt install ntp. Он мне пишет, я вижу, что у Вас уже стоит NTP и говорит, оставить ту же версию ? Я говорю да(N). https://ibb.co/bgL7Z9S

Я вижу, что инсталляция происходит успешно. Моя скомпилированная версия осталась. Конфиги появились. Я правлю конфиг и всё работает. По мимо просто надписей, что сервис запустился, я вижу дополнительные важные поля по примеру MS-SNTP(Без этого не будет клиент Windows автоматически находить источник время и синхронизироваться, поэтому вся суть того, что мне пришлось собирать NTP из исходника.)

https://ibb.co/fFvbGbZ

root@dc-01:/etc/init.d# ntpq -p -Показывает, что время теперь синхронизируется с моих серверов. Вывод убрал, так как форум почему-то искажает всё.

  • Вопрос. Почему может не работать при компиляции из исходников ? Утеряны какие-то директории, которые нужно создавать вручную ?
  • Почему установка apt install ntp поверх скомпилированного ntp из исходника решает все проблемы ? Потому что он только обновляет конфиги в таком случае, а не систему ? Это я сделал костыль или это поддерживаемый сценарий ?
  • Как всё же правильно собрать этот NTP из исходника ? В доке всё, что я нашел, пишут только про конфиг /etc/ntp.conf

Я пытался найти информацию в офф доке: https://www.eecis.udel.edu/~mills/ntp/html/index.html - надеялся там на нахождение скрипта, для запуска сервиса, может дополнительную информацию, может мне надо создать какие-то каталоги, но ничего толком не нашел. Единственное пишут про ntp.conf. Я могу понять, что скорей это для опытных администраторов Linux, про конфиг запуска сервиса я молчу, но как же другие ? А если тут всего конфиг запуска сервиса и самого ntp.conf и ничего более, что за магия, как это работает, почему при сборке из исходников, не работает, после установки пакета без замены, всё работает ?



Последнее исправление: Andrei93 (всего исправлений: 2)
Ответ на: комментарий от Vsevolod-linuxoid

Всеволод, здравствуйте. К сожалению это не так. И чтоб работала поддержка с samba dc, нужны определенные ключи.

Вот например bind9 не верно собран и из пакетов он не поддерживает динамическое обновление, за счёт чего пришлось так же его компилировать.

https://wiki.samba.org/index.php/Using_BIND_DLZ_backend_with_secured_/_signed_DNS_updates

А зачем я делаю apt install ntp, чтоб он мне создал конфиги. Я же написал.

Это я заметил здесь: https://smb-conf.ru/samba-4-ad-dc-na-ubintu-server-12-10-s-bind-9-9-2-p1-v-kachestve-dns.html

Я просто хочу понять идеологию собирания из исходников. Как )

Andrei93
() автор топика
Ответ на: комментарий от Andrei93

Ну уж точно не make install в конце. Так ПО может установиться поверх системного вне пакетной системы, из-за чего единственным способом его начисто удалить будет полная переустановка. Используй checkinstall. make install можно использовать только тогда, когда ставишь в /usr/local/ или в /opt/. Одна из ловушек для новичков в Linux, их много.

Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 1)

update-rc.d

Это команда для систем инициализации sysvinit и upstart. А сейчас везде systemd, что управляется через systemctl, так что старые команды или работают через обратную совместимость, или вовсе не работают.

Мануалы посвежее искать надо.

Vsevolod-linuxoid ★★★★★
()

У тебя какой именно дистрибутив какой версии?

Судя по тому, что я нашел, в современных Debian/Ubuntu это уже работает из коробки: https://ubuntuforums.org/showthread.php?t=2457755

А вот в старом Debian был баг: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=928166

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Да даже беглый поиск по samba.org, на который ссылается ТС, показывает, что всё уже давно работает без пересборки.

https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Doma...

https://wiki.samba.org/index.php/Setting_up_a_BIND_DNS_Server

Make sure that your package provider compiled BIND using the following options:

--with-gssapi=yes or --with-gssapi=/usr (or similar) for secure dynamic DNS updates using Kerberos
--with-dlopen dynamically loadable zones (DLZ)
Later versions of Bind9.9.x have the --with-dlopen option builtin and is not shown by the following command. This happened around Bind 9.9.4
└─> named -V
BIND 9.16.33-Debian (Extended Support Version) <id:35e9c6e>
running on Linux x86_64 5.10.0-17-amd64 #1 SMP Debian 5.10.136-1 (2022-08-13)
built by make with '--build=x86_64-linux-gnu' '--prefix=/usr' '--includedir=/usr/include' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--disable-option-checking' '--disable-silent-rules' '--libdir=/usr/lib/x86_64-linux-gnu' '--runstatedir=/run' '--disable-maintainer-mode' '--disable-dependency-tracking' '--libdir=/usr/lib/x86_64-linux-gnu' '--sysconfdir=/etc/bind' '--with-python=python3' '--localstatedir=/' '--enable-threads' '--enable-largefile' '--with-libtool' '--enable-shared' '--enable-static' '--with-gost=no' '--with-openssl=/usr' '--with-gssapi=/usr' '--with-libidn2' '--with-json-c' '--with-lmdb=/usr' '--with-gnu-ld' '--with-maxminddb' '--with-atf=no' '--enable-ipv6' '--enable-rrl' '--enable-filter-aaaa' '--disable-native-pkcs11' '--enable-dnstap' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 -ffile-prefix-map=/build/bind9-kvFb77/bind9-9.16.33=. -fstack-protector-strong -Wformat -Werror=format-security -fno-strict-aliasing -fno-delete-null-pointer-checks -DNO_VERSION_DATE -DDIG_SIGCHASE' 'LDFLAGS=-Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2'
compiled by GCC 10.2.1 20210110
compiled with OpenSSL version: OpenSSL 1.1.1n  15 Mar 2022
linked to OpenSSL version: OpenSSL 1.1.1n  15 Mar 2022
compiled with libuv version: 1.40.0
linked to libuv version: 1.40.0
compiled with libxml2 version: 2.9.10
linked to libxml2 version: 20910
compiled with json-c version: 0.15
linked to json-c version: 0.15
compiled with zlib version: 1.2.11
linked to zlib version: 1.2.11
linked to maxminddb version: 1.5.2
compiled with protobuf-c version: 1.3.3
linked to protobuf-c version: 1.3.3
threads support is enabled

default paths:
  named configuration:  /etc/bind/named.conf
  rndc configuration:   /etc/bind/rndc.conf
  DNSSEC root key:      /etc/bind/bind.keys
  nsupdate session key: //run/named/session.key
  named PID file:       //run/named/named.pid
  named lock file:      //run/named/named.lock
  geoip-directory:      /usr/share/GeoIP

shell-script ★★★★★
()

Откуда вообще у тебя взялись эти древние ссылки? Даже беглый поиск в гугле выдаёт более новые статьи и инструкции. Это же специально надо рыться, чтобы найти эту древность.

А за описанные там инструкции по сборке вообще по рукам бить надо.

shell-script ★★★★★
()
Последнее исправление: shell-script (всего исправлений: 1)
Ответ на: комментарий от Andrei93

Вот например bind9 не верно собран и из пакетов он не поддерживает динамическое обновление

Bind поддерживает динамическое обновление ещё со времен Red hat 7.3 Enigma выпуска 2002 года (не путать с RHEL). Раньше просто не пробовал.

А, у тебя debian, тогда хз...

vasya_pupkin ★★★★★
()
Последнее исправление: vasya_pupkin (всего исправлений: 1)

В астре доисторические пакеты ( вроде базируются на Debian 9, поправьте если ошибаюсь), наверное поэтому приходится так извращаться с установкой. Поставь лучше обычный дебиан 11 там точно этого нет. А если нравится собирать из исходников, то можно и генту попробовать осилить, но пока лучше не надо

Gluk0za
()
Ответ на: комментарий от Vsevolod-linuxoid

Всеволод, я не понял, где применять checkinstall, у меня такая команда после /configure отсутствует.

Коллеги, прошу не серчать, но я просто хочу понять философию сбора программы из исходника.

Меня больше интересует, компиляция из исходника не предоставляет конфигурационные файлы и учетную запись или предоставляет ? А если нет, как правильно их создавать, читать доку ? А где например это у бинда или ntp ? Или у меня ничего не создается из-за старого компилятора ?

Andrei93
() автор топика
Ответ на: комментарий от Andrei93

Коллега, тут всё очень и очень тупо.

make просто тупо собирает из исходных кодов файлы. make install тупо копирует их, куда сказано. Всё. Какие файлы будут — те и пишет.

Но так как это неудобно в плане контроля за тем, чтобы можно было удалить ПО или чтобы файлы одного ПО не перезаписывали файлы иного, были созданы пакетные менеджеры.

Пакет — это просто архив с файлами, которые распаковываются в указанные места в системе пакетным менеджером, ещё и скрипты могут иногда запускаться.

checkinstall — это дополнительное ПО, обертка, что вместо make install собирает пакет и ставит его, чтобы было можно удалить пакетным менеджером.

Vsevolod-linuxoid ★★★★★
()