Posterous theme by Cory Watilo

Filed under: MacOSX

Samba, AFP and OS X

Настраивал файлохранилище. В качестве эксперимента – добавил поддержку AFP. Поставить самбу – нетяжело, и особо вдаваться в детали я не стану. Все коробочное, кроме общей шары:

[storage]
  comment = General storage area
  path = /home/storage
  guest ok = yes
  browseable = yes
  create mask = 0666
  directory mask = 0777
  read only = no

Попробуйте на такую шару скопировать файл из-под винды. Правильно, права будут 0666. А теперь из-под линукса/мака. Права совсем не 0666, а скорее 0644 или 600. Кроме того, файл создастся от имени залогиненого пользователя. То есть пользователи не смогут удалить файлы оставленные им другими пользователями. Я долго копался, и благодаря Роману нашел решение:

[global]
  ...
  unix extensions = no
  ...

Это решает проблему с правами. Но чуть позже я вернул unix extensions и добавил в шару опцию

force user = nobody

Но на OS X 10.6.3 внезапно явилась проблема: при загрузке папки она ставит на нее расширенные аттрибуты. Ругается, и не дает загрузить файлы. Вручную же файлы именно вовнутри папки загружаются. Все это сопровождается сообщением “operation can’t be completed because you don’t have permission to access…” (раз, два). Решением стало добавление

[global]
  ...
  acl check permissions = no
  ...

С AFP в Ubuntu 10.04 все хорошо – пакет пересобирать не надо, он собран уже с шифрованой передачей пароля. Однако конфиг подровнять пришлось. В /etc/netatalk/afpd.conf в конце пишем:

- -transall -uamlist uams_dhx.so,uams_dhx2.so,uams_guest.so -nosavepassword

Кроме варианта по-умолчанию сюда добавлен uams_guest.so для доступа к анонимной свалке. Рядом в файле /etc/netatalk/AppleVolumes.default пишем:

~/              "Home Directory"                        options:usedots
/home/storage/  "Common storage" dperm:0777 fperm:0666  options:usedots

Как принудительно заставить писать от имени nobody в storage я не нашел, потому выставил соответствующие права. Опция usedots не дает преобразовывать точку в “:2e”.

Финальным шагом был анонс сервисов через бонжур при помощи avahi-daemon. В /etc/avahi/services/afpd.service:

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">

<service-group>
    <name replace-wildcards="yes">%h</name>
    <service>
        <type>_afpovertcp._tcp</type>
        <port>548</port>
    </service>
    <service>
        <type>_device-info._tcp</type>
        <port>0</port>
        <txt-record>model=Xserve</txt-record>
    </service>
</service-group>

В /etc/avahi/services/samba.service:

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">

<service-group>
    <name replace-wildcards="yes">%h</name>
    <service>
        <type>_smb._tcp</type>
        <port>139</port>
    </service>
</service-group>

Enjoy!

MacOS X Leopard php extensions

Столкнулся с необходимостью добавить к PHP в макоси несколько экстеншенов. Апач в MacOS работает в x86_64. Да-да, там бинарник для нескольких архитектур:

file `which httpd`

Проблема в том что по умолчанию экстеншены будут собираться под i386. И потому из php-cli они доступны и работают, в то время как в mod_php их нет, а в логах апача видно примерно такое:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20060613/mcrypt.so' - (null) in Unknown on line 0

Для сборки под несколько архитектур надо собирать все зависимости также под несколько архитектур. Я решил ограничиться вариантом x86_64 и i386.

Итак, в /opt/local/etc/macports/macports.conf добавим требуемые архитектуры:

sudo echo 'universal_archs x86_64 i386'>> /opt/local/etc/macports/macports.conf

Чудесно. Теперь на примере gettext.

sudo port install gettext +universal
file `which gettext`

В качестве вывода мы должны получить что-то вроде

dm@Loki ~$ file `which gettext`
/opt/local/bin/gettext: Mach-O universal binary with 2 architectures
/opt/local/bin/gettext (for architecture i386): Mach-O executable i386
/opt/local/bin/gettext (for architecture x86_64):   Mach-O 64-bit executable x86_64

Далее нужны сорсы php. В сорсах есть папка ext.

cd php-5.2.8/ext/gettext
phpize

CFLAGS="-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" \
CCFLAGS="-arch i386 -arch x86_64 -g -Os -pipe" \
CXXFLAGS="-arch i386 -arch x86_64 -g -Os -pipe" \
LDFLAGS="-arch i386 -arch x86_64 -bind_at_load" \
./configure --with-gettext=/opt/local

make
sudo make install
sudo echo 'extension=gettext.so' >> /etc/php.ini
sudo apachectl restart

Предварительно убедитесь, что у Вас есть файл /etc/php.ini. По умолчанию его нет.

После этого модуль должен завестись в mod_php.

UPD: а чобы (по возможности) все из портов собиралось с флагом universal надо сделать

echo '+universal' >> /opt/local/etc/macports/variants.conf

Textmate, Pastie and Adium 1.3

Есть у редактора TextMate замечательная фича - можно выделить текст и при помощи нехитрой комбо отправить его прямо на pastie.textmate.org, а при этом получить ссылку на этот код в clipboard или другое приложение. И все было чудесно, TextMate выпущен давно... А Adium обновился. Вместе с обновлением сменилось и API, и теперь эта комбо не может выполниться при запущеном Adium. Искал я долго... но нашел. Идем в репозитарий бандлов для TextMate, а точнее сразу сюда. Понадобится два файла - get_destinations.scpt и paste_to_destinations.scpt. Это AppleScript'ы, которые передают бандлу списки окон, и они же вставляют в доступные приложения ссылку на pastie. Этими файлами заменяем существующие в [cc lang="text"] /Applications/TextMate.app/Contents/SharedSupport/Bundles/TextMate.tmbundle/Support [/cc] и да будет щастье. UPDATED А лучше класть бандлы в ~/Library/Application Support/TextMate/Bundles.

Server monitoring tool

Стояли у меня разные сервера, и для мониторинга сервисов на них стоял monit. Со своей задачей он справлялся - если что-то упало - поднять указанным скриптом. Но чего нехватало - так центра, в котором я бы мог озирать со своего места все сервера.

Read the rest of this post »

MacOSX on laptop: day 5

Она умерла. Окончательно =) Загружается - и моментально кернел-паник. Все, приехали... В общем, эксперименты я продолжу, но уже сейчас готов сделать заключение: К использованию хакинтош еще не готов. Это бег на костылях, и ты не знаешь, что отвалится следующим. Но в общем и целом я в восторге. Из необходимого не ожили звук и охлаждение процессора, также стабильность разочаровала. А остальное все - просто руль.

MacOSX on laptop: day 4

Пишу уже из-под макоси. Это зверь! Это вещь!!! Сижу в инете через вай-фай, настроил так: http://forum.insanelymac.com/index.php?showtopic=23684 Сеть пашет, все есть. Что еще не решено:
  1. звук
  2. тычпад работает но корявовато
  3. энернгосбережение -сильно греется и кулерами гудит
  4. вэбкамера
Новый скрин прилагается.

MacOS on laptop: day 2

Итак, погонял разделы и что-то вышло: /dev/hda1 - win /dev/hda2 - linux /dev/hda3 - swap /dev/hda4 - macos Что это дало: грабом нормально запускается макось. Это гууд. В макоси по-прежнему нет ни звука, ни сети. Зато опробовал bluetooth - винда и рядом не валялась, не говоря уже про линух. Все работает при одной мысли.С дровами на сеть что-то несложилось.. Буду воевать далее.   Обновлено: ура!!! Заработала сеть! Был проинсталлен пакет 1.04 отсюда: https://sourceforge.net/projects/realtekr1000/ Попутно привыкаю к новой раскладке русского. Кстати, надо бы поставить файрфокс.

MacOSX on laptop. Day 1

Итак, Nekit угостил дистром (в очередной раз!) и я решился таки его поставить. Разделы такие: /dev/hda1 - win /dev/hda5 - macos (old win_d) /dev/hda6 - swap /dev/hda7 - linux (raiserfs) Вот так. Что нехорошо - макось на logical partition. Ну да это мелочь ;) Итак, установка не вызвала труда (а кто-то сомневался?!). В двух словах: ставим ДВД в привод, бутимся, выбираем язык, утилиты -> менеджер разделов, там выбрал нужный и нажал erase и выбрал MacOSX Extended (Journal), людским языком оно же HFS+, далее поставил все что надо, пропустил верификацию и после ребута возрадовался жизни. Не порадовался отсутствию: webcam, network (wired + wifi), usb autodetect (мышь работает, а вот на флешку плевать хотело), sound. С сеткой вроде кекст есть, сегодня опробую. Что плохо совсем: то, что оно на логическом разделе дало себя знать: после переустановки Grub я не могу бутнуть только макось. Получаю ошибку №12. Кто знает как бороться - плз, подскажите. Пока вижу вариант установки на физ. раздел.