Summary: | Настройка времени / часового пояса | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Evgeniy Korneechev <ekorneechev> | ||||||
Component: | systemd | Assignee: | mrdrew <mrdrew> | ||||||
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||||
Severity: | normal | ||||||||
Priority: | P3 | CC: | arseny, boyarsh, cas, evg, grenka, grenka, iv, lav, ldv, m, mike, mrdrew, mvoronov, rider, sem, shaba, vladimir.didenko, vseleznv, zerg | ||||||
Version: | unstable | Keywords: | RS | ||||||
Hardware: | all | ||||||||
OS: | Linux | ||||||||
Bug Depends on: | |||||||||
Bug Blocks: | 30940, 32650 | ||||||||
Attachments: |
|
необходимо выполнить команду: timedatectl set-timezone Europe/Moscow (ну или другой) хотелось бы внести это исправление, чтобы после установки ОС, сразу был верный часовой пояс. На Рабочей станции 8.1 (от 22.11.16) - все тоже самое: # timedatectl Local time: Пн 2016-11-28 13:59:58 UTC Universal time: Пн 2016-11-28 13:59:58 UTC RTC time: Пн 2016-11-28 13:59:58 Time zone: n/a (UTC, +0000) Network time on: n/a NTP synchronized: no RTC in local TZ: no # rpm -q alterator-datetime alterator-datetime-2.6-alt1 Эх, блокер не сообразил тогда повесить и забыл. На 8.2 теперь. Вроде бы имеет смысл просто создать симлинк вместо файла /etc/localtime на нужную зону из ../usr/share/zoneinfo/ И если я правильно понимаю, это может касаться alterator-tzone Значит так. При установки совершенно верно вызывается tzupdate и делает хардлинк в /etc/localtime на ../usr/share/zoneinfo/$tzname. Но timedatectl его не принимает. При вызове (In reply to comment #1) > timedatectl set-timezone Europe/Moscow (ну или другой) создаётся симлинк. Даже если просто руками сделать его, то timedatectl начинает показывать то, что нам всем так хочется увидеть. Надо пропатчить systemd, чтобы он читал и писал в /etc/localtime не симлинк, а хардлинк. (В ответ на комментарий №6) > Надо пропатчить systemd, чтобы он читал и писал в /etc/localtime > не симлинк, а хардлинк. Читать и писать можно содержимое в файл, а симлинк/хардлинк -- то, чем сам /etc/localtime может являться :) ldv@ говорит, что патч такой в systemd был, но безумный апстрим его выкинул -- мол, "у всех уже симлинк". То, что эти дятлы идут наперекор unix-концепции (когда простые программы работают для неограниченного круга задач) и сужают мир до стационарной орбиты своего распухающего глюкодрома -- их личный выбор, но нам этот патч хорошо бы вернуть (а для этого сначала идентифицировать). (In reply to comment #7) > (В ответ на комментарий №6) > > Надо пропатчить systemd, чтобы он читал и писал в /etc/localtime > > не симлинк, а хардлинк. > Читать и писать можно содержимое в файл, а симлинк/хардлинк -- то, чем сам > /etc/localtime может являться :) Спасибо, Миш, за то, что дополнил мой комментарий. Я написал коротко, потому побоялся ляпнуть не то. Я совершенно не понимаю, по какой причине они переходят от "хорошей идеи" к "плохой идее". ping (В ответ на комментарий №6) > Надо пропатчить systemd, чтобы он читал и писал в /etc/localtime не симлинк, а > хардлинк. Но зачем хардлинк? Ведь /usr может быть на отдельной партиции? (In reply to comment #10) > (В ответ на комментарий №6) > > Надо пропатчить systemd, чтобы он читал и писал в /etc/localtime не симлинк, а > > хардлинк. > Но зачем хардлинк? Ведь /usr может быть на отдельной партиции? tzupdate делает хардлинк если может. Если не может - копирует файл. Симлинк не подходит, т.к. /usr может быть не смонтирован. (В ответ на комментарий №11) > (In reply to comment #10) > > (В ответ на комментарий №6) > > > Надо пропатчить systemd, чтобы он читал и писал в /etc/localtime не симлинк, а > > > хардлинк. > > Но зачем хардлинк? Ведь /usr может быть на отдельной партиции? > > tzupdate делает хардлинк если может. Если не может - копирует файл. Симлинк не > подходит, т.к. /usr может быть не смонтирован. Почему он может быть не смонтирован? И зачем запускать tzupdate когда не смонтирован /usr (ведь настройки зон в /usr)? Когда не смонтирован /usr, надо разбираться почему он не смонтирован, в этот момент как настроена зона никого не волнует. (В ответ на комментарий №12) > (В ответ на комментарий №11) > > (In reply to comment #10) > > > (В ответ на комментарий №6) > > > > Надо пропатчить systemd, чтобы он читал и писал в /etc/localtime не симлинк, а > > > > хардлинк. > > > Но зачем хардлинк? Ведь /usr может быть на отдельной партиции? > > > > tzupdate делает хардлинк если может. Если не может - копирует файл. Симлинк не > > подходит, т.к. /usr может быть не смонтирован. > Почему он может быть не смонтирован? > И зачем запускать tzupdate когда не смонтирован /usr (ведь настройки зон в > /usr)? > Когда не смонтирован /usr, надо разбираться почему он не смонтирован, в этот > момент как настроена зона никого не волнует. В настоящий момент хотелось бы вернуть ранний патч, который работал с обоими вариантами, так как на уже установленных системах это обычный файл. (В ответ на комментарий №12) > (В ответ на комментарий №11) > > (In reply to comment #10) > > > (В ответ на комментарий №6) > > > > Надо пропатчить systemd, чтобы он читал и писал в /etc/localtime не симлинк, а > > > > хардлинк. > > > Но зачем хардлинк? Ведь /usr может быть на отдельной партиции? > > > > tzupdate делает хардлинк если может. Если не может - копирует файл. Симлинк не > > подходит, т.к. /usr может быть не смонтирован. > Почему он может быть не смонтирован? > И зачем запускать tzupdate когда не смонтирован /usr (ведь настройки зон в > /usr)? > Когда не смонтирован /usr, надо разбираться почему он не смонтирован, в этот > момент как настроена зона никого не волнует. Я не знаю, может ли такой повисший симлинк вызвать какие-то проблемы, но тем не менее гораздо лучше иметь этот файл, а не симлинк, указывающий в никуда. Вообще мне кажется очевидным, что файл точно не хуже, чем симлинк на него. Друге дело если systemd читает содержимое симлинка и как-то использует как конфигурационное значение. (В ответ на комментарий №13) > (В ответ на комментарий №12) > > (В ответ на комментарий №11) > > > (In reply to comment #10) > > > > (В ответ на комментарий №6) > > > > > Надо пропатчить systemd, чтобы он читал и писал в /etc/localtime не симлинк, а > > > > > хардлинк. > > > > Но зачем хардлинк? Ведь /usr может быть на отдельной партиции? > > > > > > tzupdate делает хардлинк если может. Если не может - копирует файл. Симлинк не > > > подходит, т.к. /usr может быть не смонтирован. > > Почему он может быть не смонтирован? > > И зачем запускать tzupdate когда не смонтирован /usr (ведь настройки зон в > > /usr)? > > Когда не смонтирован /usr, надо разбираться почему он не смонтирован, в этот > > момент как настроена зона никого не волнует. > В настоящий момент хотелось бы вернуть ранний патч, который работал с обоими > вариантами, так как на уже установленных системах это обычный файл. Если я правильно понимаю, то этот код был удалён более 5 лет назад, в версии v190(2012-09-20). Я опасаюсь его возвращать, т.к. не знаю где ещё этот легаси может вылезти. (В ответ на комментарий №14) > (В ответ на комментарий №12) > > (В ответ на комментарий №11) > > > (In reply to comment #10) > > > > (В ответ на комментарий №6) > > > > > Надо пропатчить systemd, чтобы он читал и писал в /etc/localtime не симлинк, а > > > > > хардлинк. > > > > Но зачем хардлинк? Ведь /usr может быть на отдельной партиции? > > > > > > tzupdate делает хардлинк если может. Если не может - копирует файл. Симлинк не > > > подходит, т.к. /usr может быть не смонтирован. > > Почему он может быть не смонтирован? > > И зачем запускать tzupdate когда не смонтирован /usr (ведь настройки зон в > > /usr)? > > Когда не смонтирован /usr, надо разбираться почему он не смонтирован, в этот > > момент как настроена зона никого не волнует. > > Я не знаю, может ли такой повисший симлинк вызвать какие-то проблемы, но тем не > менее гораздо лучше иметь этот файл, а не симлинк, указывающий в никуда. Вообще > мне кажется очевидным, что файл точно не хуже, чем симлинк на него. Друге дело > если systemd читает содержимое симлинка и как-то использует как > конфигурационное значение. Надо не забывать, что в RH приняли решение, что отдельного /usr больше не бывает. Поэтому их не волнуют другие ситуации, и им хватает простого симлинка /etc/localtime. Мы, типа, поддерживаем вариант с отдельным /usr. Его монтирование происходит на самой ранней стадии. Поэтому у нас тоже должен быть симлинк /etc/localtime, и не в коем случае не хардлинк (вдруг я завтра решу перенести /usr на отдельную партицию). Если мы решили сидеть на двух стульях (поддерживать и sysV, и systemd), то давайте подстраиваться друг под друга. PS: вроде проблем с переездом /etc/mtab на симлинк ни у кого не было, давайте и тут просто переедем на симлинк. (В ответ на комментарий №16) > PS: вроде проблем с переездом /etc/mtab на симлинк ни у кого не было, > давайте и тут просто переедем на симлинк. А копировать не лучше ли тогда? (что в редхате с /usr шорох затеяли четверорукие, и так хорошо известно) Кажется я понял, почему хочется /etc/localtime как файл или hardlink. Потому что copy_resolv_conf в /etc/chroot.d/functions не умеет разыменовывать symlink, и в chroot попадает битый symlink. Может научим /etc/chroot.d/functions обрабатывать /etc/localtime как symlink? *** Bug 34743 has been marked as a duplicate of this bug. *** Правильно ли я понял, что симлинк /etc/localtime -> /usr/share/zoneinfo/Europe/Moscow рабочее решение, но вся проблема только в update chroot /etc/chroot.d/ , и это останаливает от переобучения Альтератора с хадлинка на симлинк? Created attachment 7485 [details]
учит chrooted делать симлинк вместо копирования
> Может научим /etc/chroot.d/functions
> обрабатывать /etc/localtime как symlink?
Вроде бы научил. Патч выше.
Теперь нужно, чтобы Альтератор делал симлинк + какой-то механизм миграции обновлением существующих установок с просто файла на симлинк
Сначала пакет tzdata надо обучить стилинку Сначала пакет tzdata надо обучить стилинку На sysvinit тоже симлинк делать, или только на systemd? # rpm -qf /etc/localtime glibc-core-2.27-alt3.x86_64 почему glibc-core...? Нашел. /usr/sbin/tzupdate обновляет /etc/localtime, а postinstall-скрипт пакета tzdata его вызывает Заменил файл/хардлинк на софтлинк http://git.altlinux.org/people/mvoronov/packages/?p=tzdata.git;a=commitdiff;h=e982ba0c53598d6c95cc52d2086bb4d09212574a (В ответ на комментарий №28) > Заменил файл/хардлинк на софтлинк > > http://git.altlinux.org/people/mvoronov/packages/?p=tzdata.git;a=commitdiff;h=e982ba0c53598d6c95cc52d2086bb4d09212574a Алексей? Вроде как уже всё в Sisyphus и работает как надо (В ответ на комментарий №30) > Вроде как уже всё в Sisyphus и работает как надо Тогда почему статус NEW? Проверьте и закройте, пожалуйста. В сизифе - не знаю, а в p8 проблема все еще актуальна. $ timedatectl status Local time: Чт 2018-07-26 23:34:12 UTC Universal time: Чт 2018-07-26 23:34:12 UTC RTC time: Чт 2018-07-26 23:34:11 Time zone: n/a (UTC, +0000) System clock synchronized: no systemd-timesyncd.service active: n/a RTC in local TZ: no (In reply to comment #30) > Вроде как уже всё в Sisyphus и работает как надо А точно как надо, потому что после установки регулярки с Cinnamon у людей вылезло https://bugzilla.altlinux.org/show_bug.cgi?id=35467 (В ответ на комментарий №32) > В сизифе - не знаю, а в p8 проблема все еще актуальна. В сизифе всё по-прежнему. Сделал тестовый таск 225782, предлагаю потестировать. В commit message не написано ничего о том, что в этом коммите делается и зачем. Хотелось бы, что там это было написано, особенно когда изменений много, иначе сам автор уже через пару лет не поймет что этот патч делает и зачем нужен. Commit message поправил. У меня в целом работает. # l /etc/localtime lrwxrwxrwx 1 root root 35 апр 18 11:43 /etc/localtime -> ../usr/share/zoneinfo/Europe/Moscow # timedatectl set-timezone Europe/Kaliningrad # l /etc/localtime lrwxrwxrwx 1 root root 40 апр 18 10:48 /etc/localtime -> ../usr/share/zoneinfo/Europe/Kaliningrad # egrep '^ZONE.*' /etc/sysconfig/clock ZONE=Europe/Kaliningrad Далее поменял в /etc/sysconfig/clock зону на Europe/Moscow # timedatectl Local time: Чт 2019-04-18 10:50:12 EET Universal time: Чт 2019-04-18 08:50:12 UTC RTC time: Чт 2019-04-18 08:50:12 Time zone: Europe/Kaliningrad (EET, +0200) System clock synchronized: yes NTP service: n/a RTC in local TZ: no Warning: The timezone set in the system is different from the timezone systemd. Установил через timedatectl - всё поменялось. Поведение как задумано, спасибо. (В ответ на комментарий №39) > Warning: The timezone set in the system is different from the timezone systemd. Вот здесь только два последних слова стоит местами поменять, шоб в жёсткий порядок слов аглицкого встало. (В ответ на комментарий №39) > Warning: The timezone set in the system is different from the timezone systemd. Точнее, так: -the timezone systemd +systemd timezone (In reply to comment #37) > Commit message поправил. Отформатируйте его, пожалуйста, чтобы - первая строка являлась кратким содержанием, - вторая строка пустая, - последующие строки являлись развёрнутым описанием. Спасибо. (In reply to comment #35) > Сделал тестовый таск 225782, предлагаю потестировать. Исправьте, пожалуйста, содержание коммита d24293946b4c5550bc2f1a41fb2151fdeab9e61b. Я посмотрел мельком, из того, что заметил: - fflush не на тот файл; - отсутствие атрибута _cleanup_fclose_ и fclose вручную; - новая глобальная функция replace_or_add_line_atomic ищёт строку по префиксу, но из имени функции это совсем не очевидно. systemd-1:242-alt1 -> sisyphus: Sat Apr 13 2019 Alexey Shabalin <shaba@altlinux> 1:242-alt1 - 242 - move execute systemctl daemon-reexec from post-script to filetrigger - add requires systemd to libnss-systemd package (ALT #36267) - move LOCKFILE to /run/lock in udev init script (ALT #35888) Tue Apr 09 2019 Andrey Bychkov <mrdrew@altlinux> 1:241-alt5 - this change includes the following (closes: #32346): + possibility to get the time zone from /etc/sysconfig/clock + set-timezone call adds the time zone to /etc/sysconfig/clock as well + user notification shown when two sources have different time zones + rollback of the change that had the file copied in case of separate /usr; now a symlink is created when calling set-timezone. |
Created attachment 6782 [details] Скриншот с подробностями Некорректные значения часового пояса после установки ОС, в результате чего требуются дополнительные настройки после установки. Важно: После изменения часового пояса с помощью timedatectl, в граф. интерфейсе нельзя будет выбрать страну часового пояса. ---------------- timedatectl Local time: Вт 2016-08-02 13:02:46 UTC Universal time: Вт 2016-08-02 13:02:46 UTC RTC time: Вт 2016-08-02 13:02:46 Time zone: n/a (UTC, +0000) Network time on: n/a NTP synchronized: no RTC in local TZ: no