[personal profile] ichthuss

У зв’язку з викрутасами нашої улюбленої Верховної Ради я вирішив минулими вихідними розібратися з тим, як модифікувати та збирати пакунки в Debian на прикладі пакунку tzdata, що містить інформацію про часові пояси, переведення годинників і т.д. Все виявилося досить просто, тому поділюсь інформацією.

Для початку, знадобиться встановити деякі пакунки для наступних операцій. У мене всі необхідні пакунки стояли, вам, можливо, доведеться доставити такі пакунки, як dpkg-dev, debhelper. Точніше, нажаль, не скажу, але якщо ви забудете якийсь пакунок поставити, найімовірніше, повідомлення про помилку підкаже вам, якого пакунку бракує.

Всі наступні дії, окрім власне установки пакунку, можна виконувати з-під непривілейованого користувача. Отже.

1. Завантажуємо вихідні коди пакунку. Врахуйте, що вони будуть завантажені в поточний каталог, тому краще створіть для цього окремий і перейдіть до нього.

$ apt-get source tzdata

При цьому завантажаться три файли:

tzdata_2011k-0squeeze1.dsc
tzdata_2011k.orig.tar.gz
tzdata_2011k-0squeeze1.debian.tar.gz

Перший з них - опис пакунку, другий - вихідні коди від оригінального вендора, третій містить зміни та налаштування від debian. За замовчуванням команда apt-get source не лише завантажить, а і розпакує всі файли коректним чином. Якшо цього не трапилось (наприклад, ви забули поставити dpkg-dev), ви можете

2. ...зробити це вручну:

$ dpkg-source -x tzdata_2011k-0squeeze1.dsc

3. Перейдіть в каталог, в який пакет розпакувався, і відредагуйте файл europe

$ cd tzdata-2011k/
$ nano europe

Знайдіть там опис часових поясів для міста Kiev. Наприкінці того розділу є строчки:

			2:00	EU	EE%sT	2011 Mar lastSun 1:00u
			3:00	-	FER	#Further-eastern European Time

Перша з них вказує, що варіант "Грінвіч 2 г. з переходом на літній час" діяв до останньої неділі березня 2011 року. Друга - це новий (відмінений) час Грінвіч 3 г. без переходів. Тому прибираємо останню строчку і виправляємо передостанню:

			2:00	EU	EE%sT

Те саме робимо для всіх інших розташувань (Запоріжжя та ін.)

Зберігаємо файл.

4. Будуємо пакет

$ dpkg-buildpackage

Може лаятись на нестачу залежностей, тоді доставляєте пакунки командою

$ apt-get install <ім’я пакунку>

Побудований пакунок (точніше, два пакунки, які будуються з цих вихідних кодів - tzdata та tzdata-java) з’являться у батьківському каталозі.

5. Інсталюємо свіжозбудований пакунок.

# dpkg -i ../tzdata-2011k-0squeeze1.deb

Перевірити результат можна командою

$ date -Rd "2011-10-31"
Mon, 31 Oct 2011 00:00:00  0200

Останнє число вказує на відхилення від Грінвіча. Можливо, одразу після встановлення пакету це не спрацює, і його знадобиться переконфігурувати:

$ dpkg-reconfigure tzdata

Ось, власне, і все.

PS. На момент написання цього запису debian уже включив таке саме оновлення до squeeze-updates, тому можна обійтись і без танців. В ubuntu це оновлення поки що лежить в гілці unstable, але його можна встановити, підключивши репозиторій цієї гілки. Крім того, це оновлення містить помітку про критичну терміновість оновлення, тому, думаю, через день-два цей мій запис становитиме лише історичний та академічний інтерес. Головне — не забудьте оновитися.

PPS. В кого стоять інші дистрибутиви, якщо в них раптом не вийде необхідне оновлення — довідкова інформація: вручну перезібрати файл з інформацією про зони можна командою zic, розташувати його в /usr/share/zoneinfo, а також не забути оновити файл /etc/localtime / /usr/share/localtime.

Profile

ichthuss

January 2026

S M T W T F S
    123
45678910
11121314151617
18192021222324
25262728293031

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 30th, 2026 10:21 pm
Powered by Dreamwidth Studios