Tuesday, August 23, 2011

Хранение конфигов unix-систем в VCS (или git sucks)

Как известно, большинство конфигурационных файлов в Unix-системах - это простые текстовые файлы. Они идеально подходят для хранения в системах контроля версий. Большинство статей по этой теме, которые мне встречались, советуют использовать git. Но по-моему, subversion (централизованная система) для этого подходит лучше.

Как это делаю я (заодно сравним subversion и git):

  1. Все конфиги хранятся в одном репозитории. Это упрощает изменение конфигов для нескольких хостов одновременно, в одном коммите. Соответственно, на каждой машине нужен чекаут определенной части репозитория (e.g. папки, в которой хранятся конфиги для данного хоста).



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




  2. Каждая машина работает только со своими конфигами, т.е. с нее нельзя получить доступ к конфигам других машин.



    Subversion дает возможность контроля доступа к отдельным частям репозитория на стороне сервера (apache+mod_authz_svn). Тут я пожалуй сделаю такую оговорку: следует избегать копирования файлов внутри репозитория при одновременном ограничении доступа к частям репозитория. Например, если некий конфигурационный файл был скопирован из другого хоста (i.e. папки), и у пользователя нет прав на просмотр этой папки, тот же svn log будет работать некорректно. Выход - в использовании svn add вместо svn copy. В остальном схема хорошо себя зарекомендовала. Git, естественно, контроля доступа не поддерживает.




  3. Есть набор "глобальных" файлов, общих для всех хостов (например, настройки vim или screen).



    Subversion поддерживает механизм externals, который идеально подходит для этой цели. В git такой функции нет.



Sunday, August 14, 2011

Почему FreeBSD - не лучший выбор для десктопа

FreeBSD плавно уходит с моего десктопа, уступая место Arch Linux.
Ниже кратко о недостатках FreeBSD, которые, на мой взгляд, серьезно ограничивают ее применение в качестве десктопа (особенно для новичков).

  1. Убогий инсталлятор, хуже наверно только в OpenBSD.

  2. Графический интерфейс не устанавливается автоматически.

  3. Древняя и тормознутая файловая система по умолчанию (UFS2), которая очень не любит внезапных отключений питания.

  4. Отсутствие сборок под FreeBSD таких приложений как Skype, Flash Player, Acrobat Reader и т.д. Конечно, их можно запустить в режиме эмуляции Linux, но логичнее запускать их изначально под Linux.

  5. Явно недостаточная поддержка оборудования. Я не говорю про какую-то экзотику. Довольно расспространенные звуковые и сетевые карточки могут не поддерживаться.

  6. Отсутствие в базовой системе средств для обновления пакетов. Есть сторонние проги, опять же со своими недостатками (portupgrade, portmaster).

  7. Порты как основной способ установки софта. Установить массивное приложение из портов (KDE, java, openoffice) можно лишь обладая значительным запасом времени (порядка нескольких часов, а на не очень современных машинах и суток).

  8. Отсутствие поддержки кодировки utf-8 в консоли, только однобайтные кодировки. Ну, тут без комментариев.

  9. Низкая популярность системы, соответственно сложнее получить ответы на свои вопросы в интернете.


В принципе, все вышеперечисленное не мешает FreeBSD оставаться неплохой серверной ОС. В руках того, кто знает систему, она может показать производительность даже лучшую, чем иной Linux из коробки.