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
необходимо выполнить команду: 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 надо обучить стилинку
На 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.