пятница, 14 октября 2011 г.

Добавляем поддержку iconv в rsync на Mac OS X

После приобретения MacBook Air с установленной на нем Mac OS X Lion у меня появилось несколько проблем. И главной была проблема с кодировками. Дело в том, что в макос используется не стандартный UTF-8, а так называемый UTF-8-MAC (подробное описание проблемы на странице rsync) и это порождает сложности в простом использовании sshfs или rsync (а сервер то с openSUSE у меня никуда не делся :)), ведь без iconv их использование будет не полноценным.

Да вот беда, в стандартной версии rsync поставляемой со львом нет поддержки iconv:

rsync: --iconv=UTF-8,UTF-8-MAC: unknown option
rsync error: syntax or usage error (code 1) at /SourceCache/rsync/rsync-42/rsync/main.c(1333) [client=2.6.9]

Так что прийдется варить его :) И хоть оффициальной формулы для rsync не видать, расстраиваться не стоит, потому что на помощь приходит homebrew-alt репозиторий и формула оттуда:

$ brew install https://github.com/adamv/homebrew-alt/raw/master/duplicates/rsync.rb

После установки у нас появится rsync версии 3.0.9 с поддержкой опции iconv и все станет хорошо. Теперь при копировании на макос с линукса я просто добавляю --iconv=UTF-8-MAC,UTF-8 к опциям rsync'a.

зы. И чтоб два раза не вставть, для того чтобы использовать iconv в sshfs убедитесь что он установлен при помощи brew и просто добавьте --omodules=iconv,from_code=UTF-8,to_code=UTF-8-MAC в строку маунта или запуска sshfs.

зыы. Не знаю, что там предлогают MacPorts или Fink, но мой выбор сразу пал на homebrew.

вторник, 11 октября 2011 г.

Стартуем PostgreSQL 9.1

Если при старте PostgreSQL 9.1 (или любого другого) вы ловите что-то похожее:

# service postgresql start
Starting PostgreSQL2011-10-11 14:12:19 EEST   LOG:  could not bind IPv6 socket: Cannot assign requested address
2011-10-11 14:12:19 EEST   HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
2011-10-11 14:12:19 EEST   WARNING:  could not create listen socket for "localhost"
2011-10-11 14:12:19 EEST   FATAL:  could not create any TCP/IP sockets
pg_ctl: could not start server
Examine the log output.

то решение проблемы - очень тривиально: просто поправить listen_addresses директиву в конфигурационном файле postgresql.conf (он может распологаться в /var/lib/pgsql/data или /Library/PostgreSQL/9.1/data) c:

# - Connection Settings -

#listen_addresses = 'localhost'  # what IP address(es) to listen on;
     # comma-separated list of addresses;
     # defaults to 'localhost', '*' = all
     # (change requires restart)

на:

# - Connection Settings -

listen_addresses = '*'   # what IP address(es) to listen on;
     # comma-separated list of addresses;
     # defaults to 'localhost', '*' = all
     # (change requires restart)

и перезапустить PostgreSQL.