Bug 39537 - get_timezone() expects /etc/localtime to be a symlink
Summary: get_timezone() expects /etc/localtime to be a symlink
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: systemd (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Alexey Shabalin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-01-13 15:40 MSK by Pavel Nakonechnyi
Modified: 2024-07-10 11:45 MSK (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Pavel Nakonechnyi 2021-01-13 15:40:24 MSK
В systemd код определения часового пояса ломается об /etc/localtime, если это не симлинк. См. https://github.com/systemd/systemd/blob/master/src/basic/time-util.c#L1454

Из-за этого не работает systemd-networkd в режиме DHCP сервера, если явно не указан часовой пояс в настройках собственно DHCP сервера:

 [DHCPServer]
 Timezone=UTC
 
Кроме этого места, get_timezone() еще используется только в timedated.c. Тем не менее, из-за такой особенности не работает умолчально ожидаемое поведение nspawn контейнеров с виртуальными интерфейсами внутри.
Comment 1 Sergey V Turchin 2021-01-13 15:51:35 MSK
В случае, если /etc/localtime не симлинк, нужно парсить /etc/sysconfig/clock, как сделано в других проектах.
Comment 2 Alexey Shabalin 2021-08-18 15:45:41 MSK
(Ответ для Sergey V Turchin на комментарий #1)
> В случае, если /etc/localtime не симлинк, нужно парсить
> /etc/sysconfig/clock, как сделано в других проектах.

не надо его никому пакрсить, /etc/sysconfig/clock это ALT специфик, никто не знает про такие настройки.
Comment 3 Sergey V Turchin 2021-08-18 15:52:40 MSK
(Ответ для Alexey Shabalin на комментарий #2)
> /etc/sysconfig/clock это ALT специфик,
Не выдумывай ерунду, пожалуйста.

> никто не знает про такие настройки.
Все кроме тебя знают, похоже.
Comment 4 Alexey Shabalin 2024-07-09 20:44:23 MSK
/etc/localtime должен быть симлинком.
Comment 5 Sergey V Turchin 2024-07-10 09:52:42 MSK
Да, пофиг. Я Qt как патчил, так и буду. Не проблема.
Comment 6 Sergey V Turchin 2024-07-10 09:53:49 MSK
(Ответ для Alexey Shabalin на комментарий #4)
> /etc/localtime должен быть симлинком.
Не должен, т.к. /usr/ мог быть отдельным разделом.
Теперь неактуально.
Comment 7 Anton Farygin 2024-07-10 09:55:38 MSK
Так у нас сейчас как раз симлинк. Нужно или systemd поправить или сделать так, что бы не был симлинком.
Comment 8 Anton Farygin 2024-07-10 09:55:59 MSK
Ощибка с systemd никуда не делась.
Comment 9 Anton Farygin 2024-07-10 09:56:45 MSK
(Ответ для Alexey Shabalin на комментарий #2)
> (Ответ для Sergey V Turchin на комментарий #1)
> > В случае, если /etc/localtime не симлинк, нужно парсить
> > /etc/sysconfig/clock, как сделано в других проектах.
> 
> не надо его никому пакрсить, /etc/sysconfig/clock это ALT специфик, никто не
> знает про такие настройки.

А какой метод определения таймзоны в этом случае используется ?
Просто дай подробностей.
Comment 10 Sergey V Turchin 2024-07-10 09:59:44 MSK
(Ответ для Anton Farygin на комментарий #9)
> А какой метод определения таймзоны в этом случае используется ?
/etc/sysconfig/clock
Я патчил Qt, чтоб кавычки правильно обрабатывал.
Сейчас они уже это выпилили, но я вернул.
Уже можно выкинуть.
Comment 11 Anton Farygin 2024-07-10 10:00:09 MSK
Сейчас всё хорошо - /etc/localtime и есть симлинк.
Comment 12 Sergey V Turchin 2024-07-10 10:02:24 MSK
(Ответ для Anton Farygin на комментарий #11)
> Сейчас всё хорошо - /etc/localtime и есть симлинк.
Да. usrmerge многое решил.
Comment 13 Alexey Shabalin 2024-07-10 11:37:34 MSK
(Ответ для Sergey V Turchin на комментарий #6)
> (Ответ для Alexey Shabalin на комментарий #4)
> > /etc/localtime должен быть симлинком.
> Не должен, т.к. /usr/ мог быть отдельным разделом.

И что? Это же не хардлинк, он не может быть на другой раздел. А симлинк - пожалуйста.
Comment 14 Sergey V Turchin 2024-07-10 11:45:02 MSK
(Ответ для Alexey Shabalin на комментарий #13)
> И что? Это же не хардлинк, он не может быть на другой раздел.
Поэтому копия.