<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Apple Geek &#187; Mac</title>
	<atom:link href="http://theapplegeek.ru/archives/category/articles/feed" rel="self" type="application/rss+xml" />
	<link>http://theapplegeek.ru</link>
	<description>Чему ты научился сегодня?</description>
	<lastBuildDate>Thu, 02 Feb 2012 16:02:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Как подключиться к PostgreSQL в Lion Server</title>
		<link>http://theapplegeek.ru/archives/5815</link>
		<comments>http://theapplegeek.ru/archives/5815#comments</comments>
		<pubDate>Wed, 26 Oct 2011 13:39:30 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[OS X Server]]></category>
		<category><![CDATA[database]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=5815</guid>
		<description><![CDATA[В OS X Lion Server вместо MySQL используется PostgreSQL. Пришло время им заняться.]]></description>
			<content:encoded><![CDATA[<p>Кратко &#8211; под пользователем _postgres. Пароль не нужен:</p>
<pre>
$ sudo psql --username=_postgres device_management
psql (9.0.4)
Type "help" for help.
device_management=#
</pre>
<p>Сервер слушает только сокет, если хочется использовать сторонний софт, например, <noindex><a rel="nofollow" href="http://www.pgadmin.org/download/macosx.php" >pgAdmin</a></noindex>, то нужно настроить слушать хотя бы на 127.0.0.1:</p>
<pre>
$ sudo vim /System/Library/LaunchDaemons/org.postgresql.postgres.plist
</pre>
<p>Строку</p>
<pre>
		&lt;string>listen_addresses=&lt;/string>
</pre>
<p>заменить на</p>
<pre>
		&lt;string>listen_addresses=127.0.0.1&lt;/string>
</pre>
<p>Рестартовать PostgreSQL:</p>
<pre>
$ sudo serveradmin stop postgres
postgres:state = "STOPPED"
$ sudo serveradmin start postgres
postgres:state = "RUNNING"
</pre>
<p>И настроить соединение в нужном приложении:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/01_pg.png" alt="01_pg" height="559" width="600"></p>
<p>Почитать об использовании PostgreSQL можно, конечно, в <noindex><a rel="nofollow" href="http://www.postgresql.org/docs/" >документации</a></noindex> или, если хочется краткой подборки основных команд, то в статьях &#8220;<noindex><a rel="nofollow" href="http://www.thegeekstuff.com/2009/04/15-practical-postgresql-database-adminstration-commands/" >15 Practical PostgreSQL Database Administration Commands</a></noindex>&#8221; и &#8220;<noindex><a rel="nofollow" href="http://www.thegeekstuff.com/2009/05/15-advanced-postgresql-commands-with-examples/" >15 Advanced PostgreSQL Commands with Examples</a></noindex>&#8220;.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/5815/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Список файлов в установочном пакете pkg</title>
		<link>http://theapplegeek.ru/archives/5811</link>
		<comments>http://theapplegeek.ru/archives/5811#comments</comments>
		<pubDate>Tue, 25 Oct 2011 12:44:17 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=5811</guid>
		<description><![CDATA[Хотели ли вы когда-нибудь узнать, что именно устанавливается из установочного пакета с расширением pkg?]]></description>
			<content:encoded><![CDATA[<p>Хотели ли вы когда-нибудь узнать, что именно устанавливается из установочного пакета с расширением pkg? А знаете ли вы, что книги читать полезно?</p>
<p><span id="more-5811"></span><br />
<img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/01_ins.png" alt="01_ins" height="336" width="447"></p>
<p>Вот и я узнал этот простой метод, читая книгу &#8220;Apple Pro Training Series: OS X Lion Support Essentials: <noindex><a rel="nofollow" href="http://www.peachpit.com/store/product.aspx?isbn=0321775074" >Supporting and Troubleshooting OS X Lion</a></noindex>&#8220;.</p>
<p>Делай раз:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/02_ins.png" alt="02_ins" height="446" width="600"></p>
<p>Делай два:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/03_ins.png" alt="03_ins" height="383" width="549"></p>
<p>В консоли то же самое можно посмотреть так (спасибо <noindex><a rel="nofollow" href="https://twitter.com/d_bud" >@d_bud</a></noindex>):</p>
<pre>
$ pkgutil --payload-files /path/to/package.pkg
</pre>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/5811/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Начальная установка OS X Lion Server с раздела Recovery HD</title>
		<link>http://theapplegeek.ru/archives/5805</link>
		<comments>http://theapplegeek.ru/archives/5805#comments</comments>
		<pubDate>Thu, 20 Oct 2011 21:02:18 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[OS X Server]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=5805</guid>
		<description><![CDATA[Процесс установки OS X Lion Server на Mac mini Lion Server]]></description>
			<content:encoded><![CDATA[<p>В статье &#8220;<a href="http://theapplegeek.ru/archives/5770" >Получение Recovery HD для OS X Lion Server или длинно об установке чистого OS X Lion Server</a>&#8221; я описал, как сделать флешку для дальнейшей установки OS X Lion Server. Там же я показал, что здравый смысл не всегда работает.</p>
<p><span id="more-5805"></span></p>
<p>Поэтому сегодня подтвержу очевидное &#8211; то, что с созданного на флешке раздела Recovery HD можно установить OS X Server. К сожалению, и здесь есть 5% того, что сервер не установится &#8211; ведь я буду ставить систему не на чистый диск, а во второй раздел рядом с живым OS X Lion Server. Но надеюсь, что и с чистым диском пройдёт всё так же, по крайней мере на Mac mini Server. А на других системах можно поставить десктопный Lion и доставить Server.app.</p>
<p>Заранее приношу извинения за фотографии &#8211; они сделаны с монитора, есть блики, перекосы и шевелёнка, но я их исправлять не хочу, ведь статья не об искусстве предметной съёмки.</p>
<p>Флешка с Recovery HD вставлена в Mac mini, загружаюсь с зажатой клавишей Command. Если используется клавиатура Bluetooth, то может понадобиться несколько попыток. Выдаётся список разделов для загрузки:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/01_rosxs.png" alt="01_rosxs" height="448" width="600"></p>
<p>На Vertex2 и Recovery HD на жёстком диске не обращайте внимание &#8211; это результаты другого эксперимента, я их удалю после загрузки с Recovery HD на флешке.</p>
<p>Устанавливаю сервер &#8220;с чистого листа&#8221;, поэтому иду в Disk Utility для переразбивки диска</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/02_rosxs.png" alt="02_rosxs" height="448" width="600"></p>
<p>Удаляю раздел Vertex2, и создаю новый с тем же именем, на который буду ставить OS X Server:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/03_rosxs.png" alt="03_rosxs" height="448" width="600"><br />
<img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/04_rosxs.png" alt="04_rosxs" height="448" width="600"><br />
<img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/05_rosxs.png" alt="05_rosxs" height="448" width="600"></p>
<p>Выхожу из Disk Utility, выбираю Reinstall Mac OS X:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/06_rosxs.png" alt="06_rosxs" height="448" width="600"></p>
<p>Bla-bla-bla, это понятно:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/07_rosxs.png" alt="07_rosxs" height="448" width="600"><br />
<img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/08_rosxs.png" alt="08_rosxs" height="448" width="600"></p>
<p>Для установки выбираю свежесозданный раздел Vertex2. Если бы раздел был всего один, то запроса на выбор не было бы</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/09_rosxs.png" alt="09_rosxs" height="448" width="600"></p>
<p>Установка началась. Списываются нужные компоненты с серверов Apple</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/10_rosxs.png" alt="10_rosxs" height="448" width="600"></p>
<p>Система называется OS X Lion, а не OS X Lion Server. Это меня заставило напрячься, но всё закончилось благополучно.</p>
<p>Пошла настройка. Регион я выбрал свой, Ридну Украину, ведь домен в зоне RU (баян):</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/11_rosxs.png" alt="11_rosxs" height="448" width="600"></p>
<p>Отвлекусь. Почему я выбрал домен для блога в зоне .ru? Потому что изначально аудитория была процентов на 80 из России. Но если бы я выбирал зону сейчас, то брал бы org, net, com или подобную &#8211; необходимость отсылки сканов паспорта регистратору и чуть ли не нотариально заверенное заявление на смену паспортных данных я считаю издержками <noindex><a rel="nofollow" href="http://lurkmore.ru/Кровавая_гэбня" >Кровавой ГэБни</a></noindex>.</p>
<p>Раскладка клавиатуры. Я выбираю US, не хочу дать минимальный повод сделать интерфейс системы на русском:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/12_rosxs.png" alt="12_rosxs" height="448" width="600"></p>
<p>Устанавливаю сервер &#8220;с нуля&#8221; без ассистента миграции:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/13_rosxs.png" alt="13_rosxs" height="448" width="600"></p>
<p>Проверяется мой Apple ID:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/14_rosxs.png" alt="14_rosxs" height="448" width="600"></p>
<p>С интересом читаю лицензию. Меня интересуют пункты о виртуализации. Не в применении к данной установке, а вообще:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/15_rosxs.png" alt="15_rosxs" height="448" width="600"></p>
<p>Регистрирую:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/16_rosxs.png" alt="16_rosxs" height="448" width="600"></p>
<p>Создаю администратора. Важный момент &#8211; это будет системный пользователь, а свою обычную учётную запись я создаю в Open Directory. Поэтому здесь указывваю &#8220;admin&#8221;, а не привычного &#8220;ctrld&#8221;.</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/17_rosxs.png" alt="17_rosxs" height="448" width="600"></p>
<p>Организация и email администратора:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/18_rosxs.png" alt="18_rosxs" height="448" width="600"></p>
<p>Таймзона</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/19_rosxs.png" alt="19_rosxs" height="448" width="600"></p>
<p>Следующий важный момент &#8211; сетевые настройки. Сервер у меня находится за Time Capsule. У него приватный адрес из сети 192.168.x.x. Но я хочу, чтобы к серверу был доступ из Интернет по VPN, возможно по https, на нём будет почтовый сервер. Поэтому я выбираю третий вариант настроек &#8220;Host name for Internet&#8221;:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/20_rosxs.png" alt="20_rosxs" height="448" width="600"></p>
<p>Имя и адрес очень важны. Менять их можно, но лучше выбрать их раз и навсегда, меньше будет путаницы и хлопот с сертификатами, именами, DNS и т.д.</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/21_rosxs.png" alt="21_rosxs" height="448" width="600"><br />
<img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/22_rosxs.png" alt="22_rosxs" height="448" width="600"></p>
<p>Очень давно мой коллега по группе поддержки абонентов говорил: &#8220;Имя мы даём, пользуясь целесообразностью, а не благозвучностью&#8221;. Так-то оно так, но политику именования каждый администратор выбирает сам. Кто по названиям восьмитысячников, кто по именам богов, кто не глядя стучит по клавиатуре. Лишь бы было единообразие.</p>
<p>Если сервер работает в одно сети с AirPort Express/Extreme/Time Capsule, то предлагается управлять точкой доступа с сервера. Это даёт серверу возможность прописывать правила port mapping&#8217;а, адрес DNS, управлять авторизацией через RADIUS. В данном случае я не использую эту функцию</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/23_rosxs.png" alt="23_rosxs" height="448" width="600"></p>
<p>Напоследок выдаётся список функций OS X Lion Server</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/24_rosxs.png" alt="24_rosxs" height="448" width="600"></p>
<p>Установщик производит настройку сервисов:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/25_rosxs.png" alt="25_rosxs" height="448" width="600"></p>
<p>Сюда включён и запрос сертификатов для PUSH, которые автоматически генерируются Apple, о чём приходит письмо на указанный ранее email администратора:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/26_rosxs.png" alt="26_rosxs" height="439" width="600"></p>
<p>Всем спасибо, сервер готов:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/27_rosxs.png" alt="27_rosxs" height="448" width="600"></p>
<p>Перезагрузка, ввод имени и пароля администратора (не правда ли, красиво получился мой силуэт на фоне окна и жёлтых жалюзей):</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/28_rosxs.png" alt="28_rosxs" height="448" width="600"></p>
<p>Проверка IQ &#8211; сможет ли администратор догадаться, как нужно скроллировать в Lion (нужно иметь IQ не меньше 10):</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/29_rosxs.png" alt="29_rosxs" height="448" width="600"></p>
<p>Voilà, OS X Lion Server 10.7.2 к вашим услугам:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/30_rosxs.png" alt="30_rosxs" height="448" width="600"></p>
<p>Надеюсь, to be continued&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/5805/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Получение Recovery HD для OS X Lion Server или длинно об установке чистого OS X Lion Server</title>
		<link>http://theapplegeek.ru/archives/5770</link>
		<comments>http://theapplegeek.ru/archives/5770#comments</comments>
		<pubDate>Thu, 20 Oct 2011 04:45:08 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[OS X Server]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=5770</guid>
		<description><![CDATA[Длинный путь получения Recovery HD для Mac mini Lion Server с демонстрацией начальной установки OS X Lion Server]]></description>
			<content:encoded><![CDATA[<p>Я не знаю способа полноценной установки OS X Lion Server за одну операцию.</p>
<p><span id="more-5770"></span></p>
<p>Обычный OS X Lion можно поставить или из-под работающего Lion на другой диск (списав предварительно Lion из App Store способом, описанным в &#8220;<noindex><a rel="nofollow" href="http://osxdaily.com/2011/08/02/re-download-mac-os-x-lion-from-app-store/" >Re-Download Mac OS X Lion from the App Store</a></noindex>&#8220;), или купив загрузочную флешку &#8220;<noindex><a rel="nofollow" href="http://store.apple.com/us/product/MD256Z/A" >OS X Lion USB Thumb Drive</a></noindex>&#8220;.</p>
<p>С Lion Server такое не пройдёт. Вы можете сказать, что никакой проблемы нет &#8211; поставил сначала OS X Lion, потом Server.app, и вот есть полноценный OS X Lion Server. Да, но не совсем. Поясню.</p>
<p>Когда я купил Mac mini Lion Server, то меня не устраивала дисковая производительность &#8211; к SSD быстро привыкаешь и диск на 7200 rpm кажется ужасно медлительным. Поэтому я переставил Lion Server на RAID0 из двух штатных дисков. И не обратил внимание на предупреждение о том, что раздел Recovery HD для такой конфигурации не поддерживается и неплохо было бы создать флешку с его копией с помощью <noindex><a rel="nofollow" href="http://support.apple.com/kb/DL1433" >Lion Recovery Disk Assistant</a></noindex>.</p>
<p>А когда я взял SSD и избавился от RAID1, то остался без Recovery HD, и, как следствие, без возможности переустановить Lion Server.</p>
<p>И тут вы можете возразить, что не стоит делать из мухи слона и можно воспользоваться Recovery HD, сделанным для десктопного OS X Lion. Но и тут я скажу, что теория теорией и здравый смысл &#8211; великая сила, но от реальности они далеки. В подтверждение привожу текст:</p>
<pre>
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *240.1 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS Vertex                  120.5 GB   disk0s2
   3:                  Apple_HFS Vertex 2                98.7 GB    disk0s3
   4:                 Apple_Boot Recovery HD             650.0 MB   disk0s4
</pre>
<p>и скриншот:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/01_rec.png" alt="Recovery HD для OS X Lion Server" height="284" width="534"></p>
<p>Recovery HD, сделанный из десктопного Lion (раздел Vertex 2), не подходит для серверного Lion (Vertex).</p>
<p>Поэтому задача восстановления серверного Recovery HD состоит из нескольких шагов. Учитывая то, что для экспериментов мне нужен свежеустановленный Lion Server, то этот труд не пропадёт.</p>
<p>Я устанавливаю систему в виртуальную машину VMWare Fusion 4. <a href="http://theapplegeek.ru/archives/5663" >Parallels Desktop 7</a> тоже подходит. Почему в виртуальную машину, ведь можно поставить систему сразу на Mac, да к тому же не понадобится софт виртуализации? И тут опыт берёт верх над здравым смыслом &#8211; 10.6 не поддерживает Macmini5.3, &#8220;Unsupported CPU&#8221;:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/02_rec.png" alt="Recovery HD для OS X Lion Server" height="489" width="600"></p>
<p>Также предупреждаю, что мой метод может не подходить для вас &#8211; у меня есть подписка на Apple Developer Program, в рамках которой я получил бесплатно OS X Lion, OS X Lion Server и Mac OS X Snow Leopard Server с ключом.</p>
<h2>Установка Mac OS X Server 10.6.0</h2>
<p>OS X Server 10.7  можно официально поставить как Update к 10.6. Поэтому начинаю с установки Snow Leopard Server build 10A433 (не перепутайте с 10A403, иначе <a href="http://theapplegeek.ru/archives/5529" >потеряете зря время</a>). Беру образ и ключ из секции <noindex><a rel="nofollow" href="https://developer.apple.com/downloads" >Downloads for Apple Developers</a></noindex>. Если у вас нет подписки, то вы можете поставить систему с диска OS X Snow Leopard Server (не забудьте про ключ, система без него не установится).</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/03_rec.png" alt="Recovery HD для OS X Lion Server" height="203" width="600"></p>
<p>Установка ничем не примечательна, разве что нужно ввести ключ.</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/04_rec.png" alt="Recovery HD для OS X Lion Server" height="476" width="600"></p>
<p>Хинт. При создании пользователя под Mac OS X Server я указываю admin, а свой логин завожу потом в OpenDirectory.</p>
<p>По привычке сразу прибиваю в DHCP выдачу постоянного адреса для сервера:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/05_rec.png" alt="Recovery HD для OS X Lion Server" height="360" width="567"><br />
<img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/06_rec.png" alt="Recovery HD для OS X Lion Server" height="476" width="600"></p>
<p>Ставлю навскидку имя. В Lion Server смена IP-адреса не так критична, как в предыдущих версиях, но лучше и адрес, и имя запланировать раз и навсегда.</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/07_rec.png" alt="Recovery HD для OS X Lion Server" height="476" width="600"></p>
<p>Сервисы не запускаю:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/07_rec1.png" alt="Recovery HD для OS X Lion Server" height="476" width="600"></p>
<p>Проверяю параметры</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/08_rec.png" alt="Recovery HD для OS X Lion Server" height="476" width="600"></p>
<p>Через короткое время система установлена</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/09_rec.png" alt="Recovery HD для OS X Lion Server" height="476" width="600"></p>
<p>Перезагрузка и у меня есть Mac OS X Server 10.6:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/10_rec.png" alt="Recovery HD для OS X Lion Server" height="476" width="600"></p>
<h2>Обновление Mac OS X Server до 10.6.8</h2>
<p>Software Update:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/11_rec.png" alt="Recovery HD для OS X Lion Server" height="476" width="600"></p>
<p>Перезагрузка, и у меня уже версия 10.6.8:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/12_rec.png" alt="Recovery HD для OS X Lion Server" height="476" width="600"></p>
<p>Делаю снепшот в VMWare, он никогда не помешает:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/13_rec.png" alt="Recovery HD для OS X Lion Server" height="468" width="600"></p>
<p>Захожу в App Store, выбираю страну</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/14_rec.png" alt="Recovery HD для OS X Lion Server" height="476" width="600"></p>
<p>Вхожу под своим логином.</p>
<p>Если поставить сразу <noindex><a rel="nofollow" href="http://itunes.apple.com/ru/app/os-x-lion-server/id444376097?mt=12" >OS X Lion Server</a></noindex>, то он не запустится в Snow Leopard, так как это программа под OS X Lion (это меня привело в первый раз в замешательство). Поэтому сначала ставлю <noindex><a rel="nofollow" href="http://itunes.apple.com/ru/app/os-x-lion/id444303913?mt=12" >OS X Lion</a></noindex>:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/16_rec.png" alt="Recovery HD для OS X Lion Server" height="476" width="600"></p>
<p>А вот теперь слегка неочевидная операция. После того, как Lion спишется, он запустится и скажет, что списать <noindex><a rel="nofollow" href="http://itunes.apple.com/ru/app/os-x-lion-server/id444376097?mt=12" >OS X Lion Server</a></noindex>:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/17_rec.png" alt="Recovery HD для OS X Lion Server" height="476" width="600"></p>
<p>Иду в App Store, устанавливаю <noindex><a rel="nofollow" href="http://itunes.apple.com/ru/app/os-x-lion-server/id444376097?mt=12" >OS X Lion Server</a></noindex>:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/15_rec.png" alt="Recovery HD для OS X Lion Server" height="476" width="600"></p>
<p>Если программа не списывается, то посмотрите все фоновые окна &#8211; запрос пароля у меня попал за все приложения и я не мог понять, почему загрузка не стартует.</p>
<h2>Установка OS X Lion Server</h2>
<p>Как только Server.app спишется, инсталлятор сможет начать свою работу:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/18_rec.png" alt="Recovery HD для OS X Lion Server" height="467" width="600"></p>
<p>Несмотря на неоптимистичный прогноз установка заняла в сумме минут 40:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/19_rec.png" alt="Recovery HD для OS X Lion Server" height="467" width="600"></p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/20_rec.png" alt="Recovery HD для OS X Lion Server" height="467" width="600"></p>
<p>Процесс завершился</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/21_rec.png" alt="Recovery HD для OS X Lion Server" height="467" width="600"></p>
<p>Перезагрузка. Welcome screen</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/22_rec.png" alt="Recovery HD для OS X Lion Server" height="467" width="600"></p>
<p>Указываю название организации и email. &#8220;Home, sweet home&#8221; достаточно, но я хочу поставить The Apple Geek:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/23_rec.png" alt="Recovery HD для OS X Lion Server" height="467" width="600"></p>
<p>Идёт миграция и обновление сервисов. Мне это не очень нравится, ну да ладно, с &#8220;чистого листа&#8221; я смогу поставить систему уже с Recovery HD:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/24_rev.png" alt="Recovery HD для OS X Lion Server" height="467" width="600"></p>
<p>И эта стадия завершена:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/25_rec.png" alt="Recovery HD для OS X Lion Server" height="476" width="600"></p>
<p>Перезагрузка, ввод пароля админа</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/26_rec.png" alt="Recovery HD для OS X Lion Server" height="476" width="600"></p>
<p>И у меня готов OS X Server 10.7.2:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/27_rec.png" alt="Recovery HD для OS X Lion Server" height="467" width="600"></p>
<p>Традиционно делаю снепшот</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/27_2_rec.png" alt="Recovery HD для OS X Lion Server" height="541" width="600"></p>
<h2>Получение Recovery HD</h2>
<p>Сервер доступен по ssh, захожу и проверяю, есть ли Recovery HD:</p>
<pre>
$ ssh admin@192.168.98.4

$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *42.9 GB    disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            42.1 GB    disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
</pre>
<p>Да, всё в порядке.</p>
<p>Вставляю флешку, в VMWare Fusion 4 в Virtual Machine/USB and Bluetooth/USB and Bluetooth Settings указываю подключить эту флешку к виртуальной машине:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/28_rec.png" alt="Recovery HD для OS X Lion Server" height="326" width="572"></p>
<p>Устанавливаю в VM <noindex><a rel="nofollow" href="http://support.apple.com/kb/DL1433" >Lion Recovery Disk Assistant</a></noindex> и записываю Recovery HD на флеш:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/29_rec.png" alt="Recovery HD для OS X Lion Server" height="476" width="600"></p>
<p>Флешка с Recovery HD создана и теперь я её буду хранить очень бережно&#8230;</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/30_rec.png" alt="Recovery HD для OS X Lion Server" height="467" width="600"></p>
<p>Не забываю указать в настройках VMWare, что флешку нужно теперь подключать к Mac.</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/31_rec.png" alt="Recovery HD для OS X Lion Server" height="322" width="571"></p>
<p>Перезагружаю Mac mini, при старте зажимаю клавишу Command. Recovery HD есть на флешке:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/32_rec.png" alt="Recovery HD для OS X Lion Server" height="448" width="600"></p>
<p>И, что приятно, в отличие от Recovery HD от десктопного Lion, Mac mini Lion Server грузится с этого раздела:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/33_rec.png" alt="Recovery HD для OS X Lion Server" height="448" width="600"></p>
<p>Всё, задача выполнена &#8211; у меня есть Recovery HD на внешнем носителе. Отдельно попробую забросить этот раздел на диск сервера.</p>
<p>А знаете, в чём ирония? Разница между Recovery HD для десктопного Lion и серверного в том, что в последнем есть файл BaseSystem.chunklist, а разницы между размерами файлов нет&#8230;</p>
<p>Эх, хотел бы я выразить особую благодарность <noindex><a rel="nofollow" href="http://wowgold.ru/" >Эльфу-Торговцу</a></noindex>, но он, к сожалению, не интересуется Маками, и я вот уже два года пишу из любви к исскуству :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/5770/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Переустановка Profile Manager в OS X Lion Server</title>
		<link>http://theapplegeek.ru/archives/5727</link>
		<comments>http://theapplegeek.ru/archives/5727#comments</comments>
		<pubDate>Tue, 18 Oct 2011 09:03:48 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[OS X Server]]></category>
		<category><![CDATA[troubleshooting]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=5727</guid>
		<description><![CDATA[<p>Вот не могу я понять - это я такой неуч, у которого Mac OS X Server работает неправильно, или же всё-таки что-то не в порядке в консерватории?</p>]]></description>
			<content:encoded><![CDATA[<p>Вот не могу я понять &#8211; это я такой неуч, у которого Mac OS X Server работает неправильно, или же всё-таки что-то не в порядке в консерватории?</p>
<p><span id="more-5727"></span>
<p>Настроил я Profile Manager, настройки нормально передавались, но вот push не проходил</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/01_pm.png" alt="01_pm" height="350" width="478"></p>
<p>В логах заметил сообщения вида:</p>
<pre>
xscertd-helper(851) deny file-read-metadata /private/var/folders
</pre>
<p>Навесил костыль в /usr/share/sandbox/com.apple.xscertd-helper.sb:</p>
<pre>
(allow file-read-metadata
		<strong>(regex #"^/private/var/rpc/ncacn_np/*")</strong>
</pre>
<p>Помогло, но вышла другая ошибка:</p>
<pre>
13.10.11 19:32:45,000 sandboxd: ([3236]) xscertd(3236) deny job-creation
</pre>
<p>Костыль в /usr/share/sandbox/com.apple.xscertd.sb:</p>
<pre>
(allow job-creation
    <strong>(regex #"^/*"))</strong>
</pre>
<p>Снова не получилось отправить push. В логе ошибка:</p>
<pre>
$ tail -f /Library/Server/ProfileManager/Logs/profilemanager.log
ruby[3627] &lt;Info&gt;: Pruning certificate chain to 18446744073709551615
ruby[3627] &lt;Debug&gt;: Trying to add a bogus certificate
ruby[3627] &lt;Debug&gt;: An error occured while inserting an untrusted certificate into the chain
</pre>
<p>Копание в &#8220;sudo dtruss -n ruby -f&#8221; не дало идей.</p>
<p>От отсутствия мыслей купил сертификат TurboSSL у GoDaddy за $12 в год (сейчас не нашёл это предложение). Это несмотря на то, что сертификаты под push генерируются в Apple. Подключил сертификат повсюду, снова не помогло.</p>
<p>Плюнул и решил полностью <noindex><a rel="nofollow" href="https://discussions.apple.com/thread/3281149" >переустановить Profile Manager</a></noindex>:</p>
<pre>
$ cd /usr/share/devicemgr/backend
$ sudo serveradmin stop devicemgr
$ sudo serveradmin start postgres
$ export PATH="/usr/bin:/bin:/usr/sbin:/sbin"
$ sudo rake db:drop RAILS_ENV="production"
$ sudo rake db:create RAILS_ENV="production"
$ sudo rake db:migrate RAILS_ENV="production";
$ sudo serveradmin start devicemgr
</pre>
<p>Настроил устройства по-новому &#8211; всё заработало, push стал проходить.</p>
<p>Но это ещё не всё &#8211; после очередного рестарта сервера Apache перестал выдавать Wiki, Profile Manager и другие сервисы. Хорошо, что кроме Time Machine я все изменения в /etc сохраняю в репозитории git. Коммит показателен:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/10/02_pm.png" alt="02_pm" height="104" width="600"></p>
<p>Восстановил /etc/apache2 из рабочего коммита, завелось. Но надолго ли?</p>
<p>Да, поиск проблем в OS X Server весел. Хуже того, нельзя надеяться на то, что сервисы подымутся после банальной перезагрузки. А если бы у меня был работающий сервер и пару сотен устройств?</p>
<p>Возможно у меня кривые руки, но за два года работы с OS X Server я навскидку могу назвать больше пяти случаев, когда система переставала работать. То OpenDirectory, то VPN, то Apache, то почта, то вот Profile Manager. Странно, ведь система должна просто работать&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/5727/feed</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Как узнать версию OS X из командной строки</title>
		<link>http://theapplegeek.ru/archives/5704</link>
		<comments>http://theapplegeek.ru/archives/5704#comments</comments>
		<pubDate>Tue, 04 Oct 2011 14:49:00 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[OS X Server]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/archives/5704</guid>
		<description><![CDATA[<p><a href="http://ru.wikisource.org/wiki/Ночь,_улица,_фонарь,_аптека_(Блок)">Ночь, улица, фонарь, аптека</a>... То бишь ssh, удалённый сервер и непонятно какая версия OS X. Что делать?</p>]]></description>
			<content:encoded><![CDATA[<p><noindex><a rel="nofollow" href="http://ru.wikisource.org/wiki/Ночь,_улица,_фонарь,_аптека_(Блок)" >Ночь, улица, фонарь, аптека</a></noindex>&#8230; То бишь ssh, удалённый сервер и непонятно какая версия OS X. Что делать? Набирать команду:</p>
<pre>
$ sw_vers
ProductName:	Mac OS X Server
ProductVersion:	10.7.1
BuildVersion:	11B2118
</pre>
<p>Или, если хочется большего:</p>
<pre>
$ system_profiler SPSoftwareDataType
Software:
    System Software Overview:
      System Version: Mac OS X Server 10.7.1 (11B2118)
      Server Configuration: Advanced
      Kernel Version: Darwin 11.0.1
      Boot Volume: Vertex
      Boot Mode: Normal
      Computer Name: Computer Name
      User Name: Oleg Serdyukov (ctrld)
      Secure Virtual Memory: Enabled
      64-bit Kernel and Extensions: Yes
      Time since boot: 3 days 2:06
</pre>
<p>И <noindex><a rel="nofollow" href="http://macosx.com/forums/unix-x11/47161-how-find-out-mac-os-x-version-via-command-line.html" >ещё</a></noindex>:</p>
<pre>
$ defaults read loginwindow SystemVersionStampAsString
10.7.1
</pre>
<p>Для &#8220;ортодоксальных&#8221;:</p>
<pre>
$ cat /System/Library/CoreServices/SystemVersion.plist
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
&lt;dict&gt;
	&lt;key&gt;ProductBuildVersion&lt;/key&gt;
	&lt;string&gt;11B2118&lt;/string&gt;
	&lt;key&gt;ProductCopyright&lt;/key&gt;
	&lt;string&gt;1983-2011 Apple Inc.&lt;/string&gt;
	&lt;key&gt;ProductName&lt;/key&gt;
	&lt;string&gt;Mac OS X&lt;/string&gt;
	&lt;key&gt;ProductUserVisibleVersion&lt;/key&gt;
	&lt;string&gt;10.7.1&lt;/string&gt;
	&lt;key&gt;ProductVersion&lt;/key&gt;
	&lt;string&gt;10.7.1&lt;/string&gt;
&lt;/dict&gt;
&lt;/plist&gt;
</pre>
<p>Вариант <noindex><a rel="nofollow" href="http://twitter.com/Rost_n_Roll" >@Rost_n_Roll</a></noindex>:</p>
<pre>
$ defaults read /System/Library/CoreServices/SystemVersion
{
    ProductBuildVersion = 11B2118;
    ProductCopyright = "1983-2011 Apple Inc.";
    ProductName = "Mac OS X";
    ProductUserVisibleVersion = "10.7.1";
    ProductVersion = "10.7.1";
}
</pre>
<p>В нагрузку &#8211; тип процессора:</p>
<pre>
$ sysctl machdep.cpu.brand_string
machdep.cpu.brand_string: Intel(R) Core(TM) i7-2635QM CPU @ 2.00GHz
</pre>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/5704/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Работа в shell с именами файлов с пробелами и другими сложными для обработки символами</title>
		<link>http://theapplegeek.ru/archives/5695</link>
		<comments>http://theapplegeek.ru/archives/5695#comments</comments>
		<pubDate>Wed, 14 Sep 2011 08:37:07 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=5695</guid>
		<description><![CDATA[<p>Понадобилось мне восстановить из бекапа Time Machine небольшой скрипт. Ситуация осложнялась тем, что я его несколько раз менял, потом написал с нуля, потом стёр, в итоге в архиве Time Machine было множество вариантов. Нужный скрипт был с характерными первыми строками. В репозиторий git я скрипт не вносил, что не облегчало мою задачу.</p>]]></description>
			<content:encoded><![CDATA[<p>Понадобилось мне восстановить из бекапа Time Machine небольшой скрипт. Ситуация осложнялась тем, что я его несколько раз менял, потом написал с нуля, потом стёр, в итоге в архиве Time Machine было множество вариантов. Нужный скрипт был с характерными первыми строками. В репозиторий git я скрипт не вносил, что не облегчало мою задачу.</p>
<p><span id="more-5695"></span></p>
<p>Итак, к делу. Запуск терминала, подключение диска Time Machine, переход в нужный каталог:</p>
<pre>
$ cd /Volumes/Time\ Machine\ Backups/Backups.backupdb/ComputerName
</pre>
<p>Ищу варианты:</p>
<pre>
$ ls -al */*/Users/ctrld/bin/apps.sh
<small>rwxr-xr-x@ 2 ctrld  staff   918 Mar  3  2011 2011-04-08-195358/Macintosh HD/Users/ctrld/bin/apps.sh
-rwxr-xr-x@ 2 ctrld  staff   971 Apr 30 17:52 2011-06-06-124551/Macintosh HD/Users/ctrld/bin/apps.sh
-rwxr-xr-x@ 2 ctrld  staff  1024 Jun 10 20:14 2011-06-14-111524/Macintosh HD/Users/ctrld/bin/apps.sh</small>
</pre>
<p>Первая мысль &#8211; скормить файлы в команду head:</p>
<pre>
$ ls */*/Users/ctrld/bin/apps.sh | xargs head -5
</pre>
<p>Конечно же, эта конструкция неправильная, так как в именах есть пробелы:</p>
<pre>
<small>head: 2011-02-19-180439/Macintosh: No such file or directory
head: HD/Users/ctrld/bin/apps.sh: No such file or directory

==&gt; 2011-08-31-111236/Lion/Users/ctrld/bin/apps.sh &lt;==
#!/bin/sh
APPDIR="/Volumes/Data/iTunes/iTunes Music/Mobile Applications/"
find "${APPDIR}" -name \*.ipa |
while read line
do</small>
</pre>
<p>Как же заставить xargs считать путь с пробелом, как единый параметр? Эврика, вспоминаю о замечательной статье &#8220;<noindex><a rel="nofollow" href="http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html" >Fixing Unix/Linux/POSIX Filenames: Control Characters (such as Newline), Leading Dashes, and Other Problems</a></noindex>&#8220;. На выходе получаю команду:</p>
<pre>
$ find */*/Users/ctrld/bin -name apps.sh -type f -print0 | xargs -0 head -3
<small>==&gt; 2011-02-19-180439/Macintosh HD/Users/ctrld/bin/apps.sh &lt;==
#!/bin/sh
APPDIR="/Users/$USER/Music/iTunes/iTunes Music/Mobile Applications"
find "${APPDIR}" -name \*.ipa | 

==&gt; 2011-03-03-210012/Macintosh HD/Users/ctrld/bin/apps.sh &lt;==
#!/bin/sh
#APPDIR="/Users/$USER/Music/iTunes/iTunes Music/Mobile Applications"
APPDIR=$(find `defaults read com.apple.iTunes NSNavLastCurrentDirectory:ChooseObject:0` -name "Mobile Applications")</small>
</pre>
<p>Нужный вариант найден и восстановлен. Для чего этот скрипт? Для &#8220;<a href="http://theapplegeek.ru/archives/4112" >получения информации по приложениям iPhone в iTunes из shell</a>&#8220;.</p>
<p>Всем, кто работает с shell категорически рекомендую изучить статью &#8220;<noindex><a rel="nofollow" href="http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html" >Fixing Unix/Linux/POSIX Filenames: Control Characters (such as Newline), Leading Dashes, and Other Problems</a></noindex>&#8221; &#8211; она убережёт вас от ошибок при обработке параметров.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/5695/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Анонс &#8211; диск SSD OCZ Vertex 3 240 GB в Mac mini server 2011</title>
		<link>http://theapplegeek.ru/archives/5693</link>
		<comments>http://theapplegeek.ru/archives/5693#comments</comments>
		<pubDate>Fri, 09 Sep 2011 18:33:36 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[OS X Server]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[ssd]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=5693</guid>
		<description><![CDATA[Собственно вот. Железка уже у меня.]]></description>
			<content:encoded><![CDATA[<p>Скажу, как <a href="http://theapplegeek.ru/archives/4167" >говорил</a> больше года назад, когда взял SSD Intel X25m g2 для Macbook Pro: &#8220;Собственно вот. Железка уже у меня.&#8221;</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/09/01_oczvertex3.png" alt="01-oczvertex3" height="437" width="600"></p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/5693/feed</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Lingon 3. Бесполезная утилита после перехода в Mac App Store</title>
		<link>http://theapplegeek.ru/archives/5687</link>
		<comments>http://theapplegeek.ru/archives/5687#comments</comments>
		<pubDate>Wed, 07 Sep 2011 07:30:09 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[ssd]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=5687</guid>
		<description><![CDATA[<p>Дань моде и похвальное желание заработать на своём труде заставили разработчика Lingon портировать утилиту в Mac App Store, превратив её в бесполезную программу.</p>]]></description>
			<content:encoded><![CDATA[<p>Консоль &#8211; вещь хорошая, но не все чувствуют в ней себя уверенно. Пару дней назад меня в очередной раз спросили, как же настроить <a href="http://theapplegeek.ru/archives/4208" >монтирование SSD-диска</a> с опцией noatime без применения консоли.</p>
<p>Я раньше привычно рекомендовал <noindex><a rel="nofollow" href="http://www.peterborgapps.com/lingon/" >Lingon</a></noindex> для создания задания, запускающегося при старте системы из LaunchDaemons под root&#8217;ом.</p>
<p>Но дань моде и похвальное желание заработать на своём труде заставили разработчика портировать утилиту в Mac App Store. <noindex><a rel="nofollow" href="http://itunes.apple.com/ru/app/lingon-3/id450201424?mt=12" >Lingon 3</a></noindex> доступен за $2.99.</p>
<p><span id="more-5687"></span></p>
<p>Оказывается, что в LaunchDaemons задание записать невозможно из-за ограничений на приложения Mac App Store. Выдаётся ошибка:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/09/01_lingon.png" alt="01-lingon" height="267" width="534"></p>
<p>Разработчик <noindex><a rel="nofollow" href="http://www.peterborgapps.com/lingon/" >на странице своей программы</a></noindex> не предупреждает о таком урезании функционала, делающим программу практически бесполезной по крайней мере для моей задачи.</p>
<p>В конце страницы есть ссылка на <noindex><a rel="nofollow" href="http://sometimesitmatters.com/post/9781895447/faq-on-lingon-3-changes" >FAQ</a></noindex>, где текст сильно радует:</p>
<blockquote>
<p><b>Can I run a job as root?</b></p>
<p>No, there is no way to run it as root by using Lingon to comply with the Mac App Store rules. But what you can do is create a new but before you save it you choose “Copy Plist to Clipboard” in the Job menu and the press Cancel.</p>
<p>Then open Terminal and make sure that you are an administrator. Write:</p>
<pre>
sudo pico /Library/LaunchDaemons/&lt;your chosen name&gt;.plist
</pre>
<p>and then enter and then paste the contents from Lingon. Then press ctrl-x and choose to save it. Then you need to load it manually with this command:</p>
<pre>
sudo launchctl load /Library/LaunchDaemons/&lt;your chosen name&gt;.plist
</pre>
</blockquote>
<p>Подумать только &#8211; утилита предназначена исключительно для людей, не желающих работать с терминалом, но она же мелким шрифтом рекомендует устранить свои ограничения, запустив терминал. Порадовал разработчик, ничего не скажешь.</p>
<p><b>Вердикт: ни в коем случае не покупайте Lingon 3.</b></p>
<p>Если же вы программу купили, то расскажу, как всё-таки сделать нужный скрипт через неё. <b>Рассматривайте дальнейший текст, как стёб &#8211; утилита бесполезна.</b> Не стирать же готовую заметку&#8230;</p>
<p>Запускаю:</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/09/02_lingon.png" alt="02-lingon" height="464" width="600"></p>
<p>New Job, записываю файл в предлагаемый каталог LaunchAgents (<b>внимание &#8211; задание будет запущено только при входе пользователя в системы</b>). me.ctrld.noatime = имя моего домена ctrld.me в обратной нотации и название задания.</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/09/03_lingon.png" alt="03-lingon" height="298" width="538"></p>
<p>Ввожу команду &#8220;/sbin/mount -vuwo noatime /&#8221; для перемонтирования с noatime. В &#8220;When&#8221; ничего не выбираю.</p>
<p><img src="http://images.theapplegeek.ru/wp-content/uploads/2011/09/04_lingon.png" alt="04-lingon" height="399" width="547"></p>
<p>Save. Выхожу. Захожу в Terminal.app&#8230; Ввожу команду:</p>
<pre>
$ sudo cp Library/LaunchAgents/me.ctrld.noatime.plist /Library/LaunchDaemons/
</pre>
<p>Редактирую файл и добавляю две строки, выделенные жирным (бинго! не правда ли, Lingon заменил все ужасы работы в консоли на ужасы работы в консоли?):</p>
<pre>
$ sudo vim /Library/LaunchDaemons/me.ctrld.noatime.plist
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
&lt;dict&gt;
        &lt;key&gt;Label&lt;/key&gt;
        &lt;string&gt;me.ctrld.noatime&lt;/string&gt;
        &lt;key&gt;ProgramArguments&lt;/key&gt;
        &lt;array&gt;
                &lt;string&gt;/sbin/mount&lt;/string&gt;
                &lt;string&gt;-vuwo&lt;/string&gt;
                &lt;string&gt;noatime&lt;/string&gt;
                &lt;string&gt;/&lt;/string&gt;
        &lt;/array&gt;
        <strong>&lt;key&gt;RunAtLoad&lt;/key&gt;
        &lt;true/&gt;</strong>
&lt;/dict&gt;
&lt;/plist&gt;
</pre>
<p>Перезагружаю систему. Проверяю:</p>
<pre>
$ mount | grep " / "
/dev/disk0s2 on / (hfs, local, journaled, <b>noatime</b>)
</pre>
<p>Радуюсь &#8220;отличной&#8221; утилите Lingon, которая несмотря на GUI даёт поработать с консолью.</p>
<p>Но если вам нужны задания, выполняемые после входа в систему, то может Lingon вам и пригодится.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/5687/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Добавление статического маршрута при запуске системы через StartupItems</title>
		<link>http://theapplegeek.ru/archives/5681</link>
		<comments>http://theapplegeek.ru/archives/5681#comments</comments>
		<pubDate>Tue, 06 Sep 2011 16:05:56 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=5681</guid>
		<description><![CDATA[<p>Понадобилось мне при запуске OS X добавить статический маршрут. И всё бы хорошо, но сколько не бился - всё без толку, испытываю очередной вариант, перезапускаю сервер, проверяю - маршрута нет.</p>]]></description>
			<content:encoded><![CDATA[<p>Понадобилось мне при запуске OS X добавить статический маршрут. И всё бы хорошо, но сколько не бился &#8211; всё без толку, испытываю очередной вариант, перезапускаю сервер, проверяю &#8211; маршрута нет.</p>
<p><span id="more-5681"></span>
<p>Уже начал думать, что в Lion поменялись механизмы работы с StartupItems. Но тут в Console.app заметил сообщение &#8220;add net 10.0.0.0: gateway 192.168.98.9: Network is unreachable&#8221; и всё стало на свои места.</p>
<p>Всё дело в том, что сетевые интерфейсы подымаются не сразу (что при DHCP, что при ручной установке адреса), а для добавления статического маршрута шлюз должен быть доступен. Добавил в скрипт задержку 10 секунд перед выполнением команды route &#8211; и всё получилось.</p>
<p>При прописывании StartupItems я отталкивался от статьи &#8220;<noindex><a rel="nofollow" href="http://beyondabstraction.net/2008/11/06/noatime-mount-option-in-os-x/" >Disabling file access time updates using noatime in OS X</a></noindex>&#8221; &#8211; она первая мне попалась под руку.</p>
<h2>StartupItems</h2>
<p>Создаю каталог для нового StartupItem</p>
<pre>
$ sudo mkdir /Library/StartupItems/ctrld_boot
</pre>
<p>Делаю описание скрипта (без него работать не будет)</p>
<pre>
$ sudo vim  /Library/StartupItems/ctrld_boot/StartupParameters.plist
{
	Description = "Ctrld Boot Script";
	Provides = ("ctrld_boot");
	OrderPreference = "None";
	Messages =
	{
		start = "Starting ctrld Boot Script";
		stop = "Stoping ctrld Boot Script";
		restart = "Restarting ctrld Boot Script";
	};
}
</pre>
<p>Пишу скрипт (обратите внимание на sleep 10 &#8211; не будет работать, замените 10 секунд, например, на 20):</p>
<pre>
$ sudo vim /Library/StartupItems/ctrld_boot/ctrld_boot
#!/bin/sh
. /etc/rc.common
case "$1" in
start)
	ConsoleMessage "Starting ctrld Boot: adding static route"
	<b>sleep 10</b>
	route add -net 10.0.0.0 -netmask 255.0.0.0 192.168.98.9
	;;
esac
exit 0
</pre>
<p>Делаю скрипт исполняемым:</p>
<pre>
$ sudo chmod 755 /Library/StartupItems/ctrld_boot/ctrld_boot
</pre>
<p>Перезапускаюсь &#8211; работает.</p>
<h2>LaunchDaemons</h2>
<p>Если бы не задержка с активацией интерфейсов, то можно было бы сделать запуск и через механизм LaunchDaemons.</p>
<pre>
$ cd /Library/LaunchDaemons
</pre>
<p>Создаю plist:</p>
<pre>
$ sudo vim me.ctrld.route.plist
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
    &lt;dict&gt;
        &lt;key&gt;Label&lt;/key&gt;
        &lt;string&gt;me.ctrld.route&lt;/string&gt;
        &lt;key&gt;ProgramArguments&lt;/key&gt;
        &lt;array&gt;
            &lt;string&gt;route&lt;/string&gt;
            &lt;string&gt;add&lt;/string&gt;
			&lt;string&gt;-net&lt;/string&gt;
			&lt;string&gt;10.0.0.0&lt;/string&gt;
			&lt;string&gt;-netmask&lt;/string&gt;
			&lt;string&gt;255.0.0.0&lt;/string&gt;
			&lt;string&gt;192.168.98.9&lt;/string&gt;
        &lt;/array&gt;
        &lt;key&gt;RunAtLoad&lt;/key&gt;
        &lt;true/&gt;
    &lt;/dict&gt;
&lt;/plist&gt;
</pre>
<p>Выставляю права (они и так нормальные):</p>
<pre>
$ sudo chmod 644 me.ctrld.route.plist
</pre>
<p>Этот способ я продемонстрировал для полноты, как можно выполнить нужную операцию при старте системы.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/5681/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

