ZeroLab Nooter — Universal package for Nook Simple Touch

ReLauch touch-nooter-zc

Root package and a minimal set of tools. Nook Simple Touch with GlowLight supported!
Универсальный, поддерживаются версии прошивок: 1.0.0/1.0.1/1.1.0/1.1.2/1.1.5/1.2.0/1.2.1 + Noogie (All in One)

Что входит в пакет:

Системные:
Root (patched uRamdisk (adb via Wi-Fi), su, busybox, SuperUser.apk)
Any Soft Keyboard + Russian Language Pack (урезал с 1496 КБ до 549 КБ, убрав словари; пересобрал клавиатуру из последних исходных кодов; выкинул все лишнее; смерджил русскую версию в основной пакет; цветовую схему и размер кнопок приблизил к оригинальной клавиатуре; принудительно отключены всплывающие подсказки, что полностью решило проблему падения клавиатуры в некоторых приложениях без необходимости плясать с бубном; немного переделал интерфейс; сделал 2 темы под E-Ink, между которыми можно сделать выбор; доперевел недостающие пункты; немного поправил то, что уже было локализовано (совсем немного, по-хорошему, там с нуля нужно садиться и переводить, но времени нет))
Nook Color Tools (с добавленной alexstsv возможностью вызова по кнопке ‘N’ -> ‘settings’)

Пользовательские:
ReLaunch
Zeam Launcher (русская версия от kaznelson, по методе alexstsv добавил возможность вызова по кнопке ‘N’ -> ‘home’)
MoreLocale
Root Explorer

Remap левых кнопок (Menu, Back)
Переносы (hyph_ru.dic)
Обновление tzdata
AdFree (hosts)

Образ переработан для более простого использования, вся конфигурация вынесена в один файл ‘config.txt‘, который вы найдете в корне sdcard, на которую развернете образ.

config-zcn

Теперь процедура установки сильно упрощена. Что нам для этого понадобится? Пройдемся пошагово.

0. Настоятельно рекомендуется снять образ чистого Nook’а перед проведением любых операций с ним. Для этого необходимо воспользоваться Noogie-образом, он есть в моем пакете, но процесс создания резевной копии выходит за рамки этой инструкции.

1. Записываем образ на карту памяти (*nix — dd, Windows — Win32DiskImager).

а) *nix, на примере OS X:
Ищем свою карту памяти:

1
diskutil list

Размонтируем карту памяти (где # — номер устройства, не используйте при размонтировании disk#s#, где s — slice):

1
diskutil unmountDisk /dev/disk#

Переходим в каталог с прошивкой:

1
cd /path-to-zlnooter

Записываем образ на карту памяти:

1
sudo dd if=zln-uni.img of=/dev/rdisk# bs=1m

б) Windows:
Скачиваете и открываете Win32DiskImager, в паре кнопок разберетесь сами, все графически и все наглядно. Выбираете свою карту памяти, выбираете образ, записываете.

2. Делаем настройки под себя.

Открываем ‘config.txt‘ и начинаем настраивать. У нас два варианта ответов: «yes» — устанавливать, «no» — не устанавливать/применять.

INSTALL_ROOT — установить root в систему;
ENABLE_ADB — включить adb (через Wi-Fi);
REMAPPING — сделать переназначение левых клавиш, листание заменяется на «Меню» и «Назад»;
AnySoftKeyboard — установить адаптированную под E-Ink клавиатуру;
NookColorTools — установить Nook Color Tools, приложение для настроек системных функций;
AdFree — подмена ‘hosts’, для тех, кто не любит рекламу в приложениях и в любом случае ее игнорирует (нехорошо, но бывает необходимо);
HyphenationRuDic — установить словарь русских переносов, применяемый в родной читалке;
MoreLocale — установить приложение, предназначенное для смены системной локали (после первоначальной установки, запустите его и выберите ‘Russian’);
ReLaunch — установить менеджер книг и лаунчер в одном лице (рекомендую именно его ставить по умолчанию);
RootExplorer — установить файловый менеджер, пригодится для установки своих приложений и манипуляции с корневой файловой системой, при необходимости;
ZeamLauncher — для любителей классического лаунчера, легок и максимально оптимизирован для E-Ink.

Для установки своих системных приложений поместите их в папку ‘/custom/system/app‘, для установки обычных приложений в ‘/custom/data/app‘. Для установки других системных файлов, создайте соответствующую структуру в ‘/custom/system/‘ и наполните необходимыми файлами. У вас есть возможность использовать пользовательский скрипт для расширения функциональности образа (‘/custom/script.sh‘).

Для версий 1.2.0 — 1.2.1 восстановлена возможность устанавливать приложения с sdcard. Для всех версий прошивок при установке по умолчанию автоматически выбирается Any Soft Keyboard, вручную в Nook Color Tools более этого делать не нужно; автоматически включается возможность установки приложений не из маркета, вручную в Nook Color Tools, путем передергивания флажка, более этого делать не нужно; автообновление прошивки выключается.

3. Версия прошивки Nook определяется автоматически, об этом вам беспокоиться не нужно. Вставляем карту памяти в выключенный Nook, включаем его и наблюдаем процесс установки. После того как Nook загрузится, выключаем Nook, вытаскиваем карту памяти, включаем Nook.

4. Копируем необходимые *.apk в память Nook’а, устанавливаем простым тапом через Root Explorer, к примеру. В первую очередь советую поставить Cool Reader или AlReader.

5. Наслаждаемся чтением.

Лог всех операций после завершения установки сохраняется в файл ‘/log/zlnooter.log‘ на карте памяти.

Рекомендую для правки ‘config.txt‘ обзавестись чем-то помощнее Notepad’а, к примеру, Notepad++, AkelPad, EmEditor или UltraEdit. Лично я рекомендую Sublime Text 2, к тому же, он мультиплатформенный. В файле используется юниксовый перевод строки LF (Line Feed), а не виндовый CR (Carriage Return) + LF. Правильные редакторы это учитывают.

После установки карту памяти можете отформатировать в самом Nook’е.

Образ ужат до минимума, качать придется всего около 12 МБ.

При первом запуске и по кнопке ‘N‘ -> ‘home‘ ставим по умолчанию загружать ReLaunch или Zeam Launcher. Теперь у нас всегда на рабочем столе будет наш ланчер. Для сброса этого выбора, проделываем следующее: Nook Color Tools > Все настройки > Manage applications > Выбрать приложение, настройки по умолчанию для которого нужно сбросить > Clear defaults.

С недавнего времени образ можно использовать и как Noogie-карту, с целью резервного копирования и восстановления в случае необходимости. Для этого на карте памяти с развернутым образом переименуйте или удалите ‘uRamdisk‘ и ‘booting.pgm‘, а ‘uRamdisk-noogie‘ и ‘booting-noogie.pgm‘ соответственно переименуйте в ‘uRamdisk‘ и ‘booting.pgm‘.

Вниманию пользователей, возможен полный откат до заводской прошивки (удаляется только то, что установилось из моего дефолтового образа и не более, tzdata останутся обновленными), для этого достаточно на карте с развернутым образом отредактировать ‘config.txt‘, выставив RM = «yes» и загрузиться с этой карты. Удаляются приложения и утилиты, чистятся настройки, wiping dalvik-cache.

Скачать для 1.0.0/1.0.1/1.1.0/1.1.2/1.1.5/1.2.0/1.2.1 + Noogie (All in One) (универсальный) (обновлено: 01.03.2013) [~12 МБайт]

Русская клавиатура:

nt-keyboard nt-keyboard

» Читать далее »

ZLU (ZeroLab Unisync): remote & local automated backup script

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

Итак, ZLU (ZeroLab Unisync):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#!/bin/sh

# --------------------------------------------
# ZLU (ZeroLab Unisync):
# remote & local automated backup script
# Written by ZeroChaos
# Version 1.5, 2012-11-20
# Site: http://zerolab.net/
# --------------------------------------------
# NOTE: Exclude spaces in the variable FOLDER!
# --------------------------------------------

# -------------------------------------------- begin of [Configurable settings]
# Use SSH for remote sync
export RSYNC_RSH="ssh -c arcfour -o Compression=no -x"

# Snapshot directory
SDIR="snapshot"
SNAPSHOT_dir="$SDIR/`date +'%Y-%m-%d.%Hh%Mm'`"

# Take the list from the same folder where the script is called
DIR=$(dirname "$0")
LISTFOLDERS="$DIR/backup.txt"
EXCLUSIONSDIR="$DIR"
# -------------------------------------------- end of [Configurable settings]

# -------------------------------------------- begin of [Do not touch this section]
# If no arguments
if [ $# = 0 ]; then
    SNAPSHOT_GLOBAL="disable"
    i=0
    while read LINE; do
        if [ -n "$LINE" ]; then
            IFS=";"
            set -- $LINE
            FOLDER="$1"
            DEST_point="$2"
            LISTEXCLUSIONS="$EXCLUSIONSDIR/$3"
            SNAPSHOT="$4"
            SDAYS="$5"
            REMOTEHOST="${6}@${7}"
            FOLDERNAME="`echo "$FOLDER" | awk -F/ '{ print $NF }'`"
            # Options for rsync + array of commands to autorotation
            if [ $SNAPSHOT = "enable" ]; then
                SNAPSHOT_GLOBAL="enable"
                if [ "$6" != "" ] && [ "$7" != "" ]; then
                    OPTIONS="-Sazq --bwlimit=3840 --delete --exclude-from=$LISTEXCLUSIONS --backup --backup-dir=${DEST_point}${SNAPSHOT_dir}/$FOLDERNAME"
                    SAR[$i]="ssh $REMOTEHOST "find ${DEST_point}${SDIR}/ -type d -mtime +$SDAYS -exec rm -r {} \;" >/dev/null 2>&1"
                    i=$(($i+1))
                else
                    OPTIONS="-Saq --delete --exclude-from=$LISTEXCLUSIONS --backup --backup-dir=${DEST_point}${SNAPSHOT_dir}/$FOLDERNAME"
                    SAR[$i]="find "${DEST_point}${SDIR}/" -type d -mtime +$SDAYS -exec rm -r {} \; >/dev/null 2>&1"
                    i=$(($i+1))
                fi
            else
                if [ "$6" != "" ] && [ "$7" != "" ]; then
                    OPTIONS="-Sazq --bwlimit=3840 --delete --exclude-from=$LISTEXCLUSIONS"
                else
                    OPTIONS="-Saq --delete --exclude-from=$LISTEXCLUSIONS"
                fi
            fi
            # Sync
            if [ "$6" != "" ] && [ "$7" != "" ]; then
                eval rsync $OPTIONS "${FOLDER}/" $REMOTEHOST:"${DEST_point}${FOLDERNAME}/"
            else
                eval rsync $OPTIONS "${FOLDER}/" "${DEST_point}${FOLDERNAME}/"
            fi
        fi
    done < $LISTFOLDERS
    # Snapshot auto-rotate
    if [ $SNAPSHOT_GLOBAL = "enable" ]; then
        for ((a=0; a<${#SAR[*]}; a++)); do
            eval "${SAR[$a]}"
        done
    fi
fi

# Generate public/private rsa key pair
ssh_keygen() {
    ssh-keygen -t rsa -b 4096
}

# Copy your public key on a remote machine
ssh_copy_id() {
    # Function for remote host choice
    PS3='Select the remote host: '
    rhchoice() {
        eval set $RHARR
        select RH; {
            REMOTEHOST=$RH
            break
        }
    }

    # Read the list of remote hosts
    while read LINE; do
        IFS=";"
        set -- $LINE
        if [ "$6" != "" ] && [ "$7" != "" ]; then
            RH="${6}@${7}"
            RHARR="$RHARR $RH"
        fi
    done < $LISTFOLDERS

    # Remote host choice
    if [ "$RHARR" != "" ]; then
        rhchoice $RHARR
    else
        echo "No remote hosts, please configure the settings file: $LISTFOLDERS"
    fi

    ID_FILE="${HOME}/.ssh/id_rsa.pub"

    if [ x$SSH_AUTH_SOCK != x ] && ssh-add -L >/dev/null 2>&1; then
        GET_ID="$GET_ID ssh-add -L"
    fi

    if [ -z "`eval $GET_ID`" ] && [ -r "${ID_FILE}" ]; then
        GET_ID="cat ${ID_FILE}"
    fi

    if [ -z "`eval $GET_ID`" ]; then
        echo "$0: ERROR: No identities found" >&2
        exit 1
    fi

    if [ "$RHARR" != "" ]; then
        { eval "$GET_ID" ; } | ssh ${REMOTEHOST%:} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1
    fi
}

ME=$(basename "$0")
print_help() {
    echo
    echo "Usage: $ME [OPTION...]"
    echo
    echo "Options:"
    echo "         -g     Generate public/private rsa key pair:"
    echo "                ssh-keygen -t rsa -b 4096"
    echo "         -c     Copy your public key on a remote machine:"
    echo "                ssh-copy-id user@host"
    echo "         -h     Help."
    echo
    echo "Example: $ME -gc"
    echo "Use both options, generate & copy."
    echo
}

while getopts ":gch" opt;
do
    case $opt in
        g) ssh_keygen;
            ;;
        c) ssh_copy_id;
            ;;
        h) print_help;
            ;;
        *) echo "Wrong option";
            echo "For help, use: $ME -h";
            exit 1
            ;;
        esac
done
# -------------------------------------------- end of [Do not touch this section]

» Читать далее »

Nook Simple Touch with GlowLight — Root package and a minimal set of tools

Обновил свою прошивку для Nook Touch, добавлена поддержка Nook Simple Touch with GlowLight (версия с подсветкой). В прошивку добавлено автоопределение версии прошивки Nook, вручную больше этого указывать не нужно. Подробная инструкция и ссылка на скачивание в прежнем посте.

Установка SSD в MacBook Pro

Вновь решил отсрочить замену своего MacBook Pro MB990, обойдясь очередным апгрейдом. На этот раз ставить буду SSD диск. Ставиться он будет на место оптического привода через Hard Drive Caddy Tray. Использоваться будет только под систему (под данные и Boot Camp останется ранее установленный HDD от Hitachi на 500GB и 7200 RPM), а без оптического привода я легко обойдусь, последние годы использовать его приходится все реже и реже.

» Читать далее »

RDP & RDP over SSH automatic connection script

При обслуживании парка машин под управлением операционной системы Windows, немаловажным является возможность быстрого и максимально простого подключения к удаленному рабочему столу. Нередка ситуация, когда подключаться нужно не только с рабочего места, но и находясь удаленно за многие километры от него. Желательно, чтобы местоположение определялось автоматически и, в зависимости от этого, применялись индивидуальные настройки. Для упрощения этой процедуры, был написан небольшой скрипт.

Подключение к удаленному рабочему столу сводится к простому вводу ‘./rdp username’. Имя пользователя можно вводить в любом регистре, пароль и хост удаленной машины автоматически подставляются из простого текстового файла. Скрипт работает из под Mac OS X (OS X) и из под Linux. Для OS X должен быть установлен X Window System (X11). Интерфейс сетевого подключения и внутренний IP адрес так же автоматически определяются в зависимости от операционной системы.

Для примера, подключение к серверу:

1
./rdp root

Процедура подключения:

» Читать далее »

Кастомная прошивка для Samsung Galaxy S II I9100 (на основе I9100XWLA4 2.3.6 Gingerbread)

SGSII-01 SGSII-02

Особенности:
— Pre-Rooted (su, Superuser.apk)
— Внедрен Mobile ODIN
— CSC: SER (отсюда русская клавиатура от Samsung + русская Swype клавиатура)
— Удалены виджеты от Samsung, часть которых произвольно висела в памяти и потребляла небольшое количество ресурсов
— Удалены Google Maps и Google Street View (из расчета, что при необходимости будут установлены из маркета), удален ThinkFree Office
— Удалены звуки затвора камеры
— Обновлены системные приложения
— Обновлен tzdata (база данных часовых поясов)
— AdFree (hosts)
— В ‘/system’ свободно 69 MB

» Читать далее »

HP ProLiant MicroServer N40L with Supermicro AOC-SG-i2 Dual Gigabit i82575EB

Привезли наконец-то двухпортовую серверную сетевую карту Supermicro AOC-SG-i2 Dual Gigabit i82575EB. Поставил, заодно и конвертер 5.25″ ODD Bay to 3.5″ HDD Bay прикрутил. Улучшить конфигурацию можно, разве что, поставив Remote Access Card (KVM-over-IP). Ну, либо дискретную видяху, один свободный слот остался lipitor medication. Только кому она на сервере нужна? Нужды в HTPC при наличии Popcorn Hour особо нет, к тому же видеокарту мощностью больше 25 Вт не поставить. Да и без Remote Access Card обойдусь, наверное. Что бы еще прикрутить?

» Читать далее »

rsync — Automated backup script (with snapshots)

Решил немного упростить задачу резервного копирования при помощи rsync и написал для этого небольшой скрипт на bash. Да, знаю, уже есть несколько решений, упрощающих backup при помощи rsync, но для того, чтобы выполнить требуемую задачу, все равно пришлось бы писать для этого свою обвязку. Потому было принято решение написать что-то свое, максимально упрощающее задачу бэкапа и сопутствующих этому действий, таких как генерация ключа для авторизации по ssh, а так же его копирование на backup-сервер.

Следующий скрипт позволяет читать список копирумых каталогов из текстового файла, применять маску исключений, задаваемую в текстовом файле, а так же опционально делать snapshot’ы, содержащие измененные, либо удаленные файлы. Тем самым, появляется возможность откатиться на старые версии файлов, случайно удаленных, к примеру, либо ошибочно измененных. При этом сохраняется полная изначальная структура каталогов, что позволяет легко найти требуемый файл. Snapshot’ы хранятся в каталогах со следующей маской в имени: ‘год-месяц-день.XXчXXм’. Есть возможность авторотации snapshot’ов.

backup.sh:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#!/bin/sh

# ———————————————
# Automated backup script
# Written by ZeroChaos
# Version 1.1, 2012-01-14
# Site: http://zerolab.net/
# ———————————————
# NOTE: Exclude spaces in the variable FOLDER!
# ———————————————
# set -e

# ——————————————— begin of [Configurable settings]
# Use SSH for sync
export RSYNC_RSH="ssh -c arcfour -o Compression=no -x"

# Remote account
USER="zerochaos"
HOST="zerolab.net"
REMOTEHOST="${USER}@${HOST}"

# Enable or disable snapshot
SNAPSHOT="true"
# Auto-rotate (days)
SDAYS="15"

# Destination folder, snapshot directory
DEST_point="/home/zerochaos/www/"
SDIR="snapshot"
SNAPSHOT_dir="${DEST_point}${SDIR}/`date +’%Y-%m-%d.%Hh%Mm’`"

# Take the list from the same folder where the script is called
DIR=$(dirname "$0")
LISTFOLDERS=$DIR/backup.txt
LISTEXCLUDES=$DIR/exclude.txt
STRDEL="# begin of [do not delete this string]"
# ——————————————— end of [Configurable settings]

# ——————————————— begin of [Do not touch this section]
# If no arguments
if [ $# = 0 ]; then
    while read FOLDER; do
        if [ -n "$FOLDER" ] && [ "$FOLDER" != "$STRDEL" ]; then
            FOLDERNAME="`echo "$FOLDER" | awk -F/ ‘{ print $NF }’`"
            # Options for rsync
            if [ $SNAPSHOT = "true" ]; then
                OPTIONS="-Sazq —bwlimit=3840 —delete —exclude-from=$LISTEXCLUDES —backup —backup-dir=$SNAPSHOT_dir/$FOLDERNAME"
            else
                OPTIONS="-Sazq —bwlimit=3840 —delete —exclude-from=$LISTEXCLUDES"
            fi
            # Sync
            rsync $OPTIONS "${FOLDER}/" $REMOTEHOST:"${DEST_point}${FOLDERNAME}/"
        fi
    done < $LISTFOLDERS
    # Snapshot auto-rotate
    if [ $SNAPSHOT = "true" ]; then
        ssh $REMOTEHOST "find ${DEST_point}${SDIR}/ -type d -mtime +$SDAYS -exec rm -r {} \;" >/dev/null 2>&1
    fi
fi

# Generate public/private rsa key pair
ssh_keygen() {
    ssh-keygen -t rsa -b 4096
}

# Copy your public key on a remote machine
ssh_copy_id() {
    ID_FILE="${HOME}/.ssh/id_rsa.pub"

    if [ x$SSH_AUTH_SOCK != x ] && ssh-add -L >/dev/null 2>&1; then
      GET_ID="$GET_ID ssh-add -L"
    fi

    if [ -z "`eval $GET_ID`" ] && [ -r "${ID_FILE}" ]; then
      GET_ID="cat ${ID_FILE}"
    fi

    if [ -z "`eval $GET_ID`" ]; then
      echo "$0: ERROR: No identities found" >&2
      exit 1
    fi

    { eval "$GET_ID" ; } | ssh ${REMOTEHOST%:} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1
}

ME=$(basename "$0")
print_help() {
    echo
    echo "Usage: $ME [OPTION…]"
    echo
    echo "Options:"
    echo "         -g     Generate public/private rsa key pair:"
    echo "                ssh-keygen -t rsa -b 4096"
    echo "         -c     Copy your public key on a remote machine:"
    echo "                ssh-copy-id $REMOTEHOST"
    echo "         -h     Help."
    echo
    echo "Example: $ME -gc"
    echo "Use both options, generate & copy."
    echo
}

while getopts ":gch" opt;
do
    case $opt in
        g) ssh_keygen;
            ;;
        c) ssh_copy_id;
            ;;
        h) print_help;
            ;;
        *) echo "Wrong option";
            echo "For help, use: $ME -h";
            exit 1
            ;;
        esac
done
# ——————————————— end of [Do not touch this section]

» Читать далее »

HP ProLiant MicroServer N40L with 8GB Memory

Вот она! Домашняя серверная, ужатая до минимума. Наконец-то нормальная лаба с гипервизором на борту. HP ProLiant MicroServer N40L. 8ГБ оперативы, 4 корзины под HDD + 1, полученная с помощью конвертера 5.25″ ODD Bay to 3.5″ HDD Bay. Поддерживаются диски до 4ТБ, в теории можно собрать хранилище на 20ТБ (+ еще на eSata можно один повесить, получится 24ТБ o_O). Но, думаю, ограничусь 5×3ТБ, когда диски подешевеют, а случится это, похоже, не скоро, долго еще спекулировать будут.

» Читать далее »

Mac OS X Snow Leopard — исправляем переход на зимнее время

По какой-то причине, в Apple решили обделить пользователей Snow Leopard и не предоставили обновление часовых поясов, поэтому, мы можем наблюдать перевод на зимнее время, которого теперь быть не должно. К слову, в OS X Lion и iOS 5 с этим проблем нет.

Исправим эту неприятность. Открываем консоль и последовательно выполняем:

1
2
3
4
5
6
7
8
9
10
11
12
13
mkdir temp-tz
cd temp-tz
curl -O http://www.iana.org/time-zones/repository/releases/tzdata2011m.tar.gz
tar zxvf tzdata2011m.tar.gz
sudo zic europe
curl -O http://www.opensource.apple.com/tarballs/ICU/ICU-400.42.tar.gz
tar zxvf ICU-400.42.tar.gz
cp tzdata2011m.tar.gz ICU-400.42/icuSources/tools/tzcode/
cd ICU-400.42/icuSources
./runConfigureICU MacOSX --with-data-packaging=archive
gnumake
sudo install -o root -g wheel -m 0644 -Sp data/out/icudt40l.dat /usr/share/icu/icudt40l.dat
cd ../../../ && rm -rf temp-tz

Перезагружаемся.

P.S. Для компиляции у вас должен быть установлен GCC (входит в пакет Xcode).

Donate

Яндекс.Деньги:

VISA/MasterCard:

PayPal:
PayPal USD
PayPal RUB
WMZ WMZ: Z375880088307
WMR WMR: R883546545943
YAD YAD: 4100170884493

Donate - лучшее спасибо автору
Количество благодарностей: 37

Разделы

Последние комментарии