Внешние скрипты и Django

Когда в следующий раз понадобится запускать какой-то внешний скрипт для облегчения пакетного менеджмента сайтов, пригодится этот пример:

import os
import sys

# укажем путь к нашему django-сайту
sys.path.append('/var/www/mydjango')

# укажем какие настройки следует использовать
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

# импортируем модели
from myapp import models

# используем

Альтернативный вариант, который не предполагает никаких дополнительных изменений в самом скрипте. Просто запустим наш скрипт, установив нужное окружение:

PYTHONPATH=/var/www/mydjango DJANGO_SETTINGS_MODULE=settings python my-script.py

openSUSE Build Service 2.0.5

Наконец переехал у себя с OBS 1.7 на 2.0. OBS — это, пожалуй, единственное ПО, которое я ставлю из пакета, делаю как в инструкции, и... и все падает с какими-то не информативными странными ошибками.

Начать следует с того, что, насколько я понял, эта штука теперь научилась работать с gpg2, поэтому gpg 1.4.5 со специальным патчем "files_are_digests" можно выкинуть. Не забыв при этом подправить путь к gpg в /etc/sign.conf

Порадовало, что наконец в пакет добавили конфиги для logrotate, теперь логи не вырастают до невиданных размеров.

Теперь более интересное. В связи с тем, что рабочие научились самостоятельно создавать себе образы дисков, в /etc/sysconfig/obs-worker добавлено очень много новых опций. В нем же можно изменить рабочую директорию (теперь по умолчанию /var/cache/obs/worker), размеры образов, количество памяти для виртуальной машины и указать её тип. В нем же мне пришлось обратить пристальное внимание на OBS_VM_KERNEL и OBS_VM_INITRD, у меня ничего не заработало пока я их не исправил:
OBS_VM_KERNEL="/boot/vmlinuz"
OBS_VM_INITRD="/boot/initrd-virtio"
Дело в том, что я предпочитаю использовать build с KVM. И, к сожалению, build не смог самостоятельно найти нужные образы для загрузки без явного указания этих параметров. Кстати, файл /boot/initrd-virtio (initrd с поддержкой virtio) делает сам скрипт build, так что не надо удивляться откуда он взялся.

Обновление на openSUSE 11.3.

По мотивам прошлогодней повести. При попытке обновиться с DVD ничего не отвалилось.

Kernel Module Packages

Ссылки на существующую документацию, политки и примеры по созданию пакетов с модулями ядра для разных дистрибутивов:


Комментарии. "Novell Kernel Module Packages Manual for CODE 11" и driverupdateprogram.com от RedHat кажутся оба совместимы с вариантом от LinuxFoundation. Fedora считает что все модули которые нужны, уже есть в ядре и поэтому пакеты с модулями вообще не нужны.

grub: загрузчик для образа диска

Иногда нужно по какой-то причине записать загрузчик прямо в образ диска, где расположены готовая таблица разделов и какие-то файловые системы. Можно использовать losetup для привязки образа к блочному устройству и затем kpartx для того, чтобы отобразить разделы, которые есть в образе на отдельные устройства пригодные для монтирования.

Запускаем (по всей видимости в окружении chroot) grub и начинаем командовать:

device (hd0) /dev/loop0

(или куда у образ подключен)

Далее опционально, например:

root (hd0,1)

(или какой раздел корневой)

setup --stage2=/boot/grub/stage2 (hd0)

(или где располагается загрузчик)

metztli

metztli is my own analogue of debootstrap tool for openSUSE. A set of shell scripts that makes openSUSE installation from scratch for you. It is something like KIWI but less complex and less customizable. I made small images (about 250 Mb) for embedded industrial computers with metztli.

You can see HTML version of man page.

Checkout the code from subversion:
svn co svn://curl.sai.msu.ru/metztli/branches/zypper metztli

gcc: ICE: tree check

Оставлю это здесь, в качестве шутки: исходный код, который я пишу, настолько суров, что помогает выявлять баги(всего один баг на самом деле) в компиляторах:
Интересно, в какие дистрибутивы вошел gcc 4.5.0?

openSUSE@ARM

Оказывается, после того как OBS научился собирать пакеты под самые хитрые архитектуры, возникла логичная идея портировать openSUSE на ARM (v5 и v7). Некоторые пакеты уже доступны: http://download.opensuse.org/repositories/Ports:/ARM:/, есть описание в виде презентации на openSUSE conference '09. В ней же, объяснено о том, что такое прозрачная кросс-компиляция.

Ожидается, что к концу лета будет доступен полностью портированный openSUSE 11.2. В свете того, что на июль запланирован выход 11.3 следует ожидать, что вскоре будет готова и эта версия. В данный момент архитектура ARM в различных вариантах используется во множестве встраиваемых устройств, промышленных компьютеров, мобильных телефонов, в то же время и в некоторых моделях нетбуков.

ATI Mach64 X.org

Есть такая серия очень старых видеоадаптеров от ATI, но на них даже работает "3d ускорение", но с бубнами и танцами. И еще у меня очень глючит и дедлочится:

01:00.0 VGA compatible controller: ATI Technologies Inc 3D Rage Pro AGP 1X/2X (rev 5c)

возможно кому-то повезет больше. Инструкцию для настройки под openSUSE 11.2 оставил на форуме openSUSE: ATI Mach64

fuseiso

Утилита для монтирования .iso образа в user-space, не требует привилегий root.

fuseiso image.iso ./mountpoint

отмонтировать

fusermount -u ./mountpoint

openSUSE Build Service 1.7

Недавно был выпущен новый релиз OBS 1.7:

http://news.opensuse.org/2010/02/09/opensuse-build-service-1-7-now-available.

Представляет из себя значительно усовершенствованный продукт по сравнению с 1.6. Описания нововведений тут не будет, их можно прочитать в анонсе и инструкции. Особенно важно, что из интерфейса выкинута все символика openSUSE, а страница Server Status стала такой вебдванольной с кучей графиков: теперь смогу наблюдать свои собирающиеся два пакета в день в виде дельта-функций на этих графиках. При обновлении OBS потянул за собой рельсы 2.3 и кто-то из них еще потянул memcached.

Далее идет подробный список граблей, заботливо разложенных разработчиками:

  • Как и во всех прошлых версиях, в пакете obs-signd бинарик /usr/bin/sign едет без SUID-бита. Верные права:

    -rwsr-x--- 1 root obsrun 45710 Фев 9 11:47 sign
  • В /etc/init.d/obssignd традиционно не прописан лог-файл.
  • Рабочие анонсируют себя по SLP, выключить это можно OBS_USE_SLP="no" в /etc/sysconfig/obs-worker.
  • Переменная relsync_pool в BSConfig.pm должна быть проверена и выставлена в соответствии с желанием:

    http://lists.opensuse.org/archive/opensuse-buildservice/2010-01/msg00149.html
  • В cron добавлены правила для отрисовки графиков, которые запускаются от lighttpd:

    cron: Permission denied
  • Подробную инструкцию по миграции можно прочитать в README.UPDATE и ReleaseNotes.
  • Задачи из крона запускаются раз в минуту, что оставляет сообщения в /var/log/messages
  • Если рабочие обнаруживают присутствие kvm в системе — они запускаются с ключем --kvm, повергая этим скрипт build в полнейшее неработоспособное состояние

Цветной grep

В большинстве современных дистрибутивов программы из пакета grep, и некоторые программы из пакета coreutils(например ls) давно уже умеют выдавать разукрашенный вывод на консоль.

Если же почему-то вывод не цветной(администратор или мейнтейнеры пакетов установили такие настройки глобально), просто добавьте в ваш .bashrc или .aliases следующую строчку:

alias grep='grep --color=auto'

Цветовую схему можно настраивать, для этого служит переменная окружения GREP_COLORS: Grep Environment Variables.