Утилита для монтирования .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.
Далее идет подробный список граблей, заботливо разложенных разработчиками:
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 следующую строчку:
Цветовую схему можно настраивать, для этого служит переменная окружения GREP_COLORS: Grep Environment Variables.
Если же почему-то вывод не цветной(администратор или мейнтейнеры пакетов установили такие настройки глобально), просто добавьте в ваш .bashrc или .aliases следующую строчку:
alias grep='grep --color=auto'
Цветовую схему можно настраивать, для этого служит переменная окружения GREP_COLORS: Grep Environment Variables.
django + lighttpd
Как заставить вместе работать lighttpd и django. Готовый пример конфигурации, которую необходимо складывать в vhosts.d:
Предполагается, что проект лежит в /srv/www/django/, где для него существует рабочая версия настроек в файле settings-production.py. lighttpd сам запустит fcgi-сервер в количестве max-procs экземпляров. Опция check-local необходима для того, чтобы отключить проверку существования файлов на локальной машине, которую делает lighttpd; так как запрашиваемые URL существуют лишь в логике django, а не в файловой системе.
Для правильной работы тегов типа {% url %} необходимо добавить строчку FORCE_SCRIPT_NAME = '' в настройки проекта написанного на django, иначе ко всем ссылкам в начало будет добавляться название /dispatch.fcgi.
$SERVER["socket"] == "0.0.0.0:8888" {
server.document-root = "/srv/www/django/htdocs"
url.access-deny = ( "~", ".inc", ".svn/" )
fastcgi.server = (
"/dispatch.fcgi" => (
"main" => (
"socket" => "/srv/www/django/run/fcgi.sock",
"bin-path" => "/srv/www/django/manage.py runfcgi --pythonpath=/srv/www/django --settings=djangoapp.settings-production method=threaded",
"max-procs" => 2,
"check-local" => "disable",
"fix-root-scriptname" => "enable",
)
),
)
alias.url = ( "/static" => "/srv/www/django/htdocs", )
url.rewrite-once = (
"^(/static.*)$" => "$1",
"^/favicon\.ico$" => "/static/favicon.ico",
"^(/.*)$" => "/dispatch.fcgi$1"
)
}
Предполагается, что проект лежит в /srv/www/django/, где для него существует рабочая версия настроек в файле settings-production.py. lighttpd сам запустит fcgi-сервер в количестве max-procs экземпляров. Опция check-local необходима для того, чтобы отключить проверку существования файлов на локальной машине, которую делает lighttpd; так как запрашиваемые URL существуют лишь в логике django, а не в файловой системе.
Для правильной работы тегов типа {% url %} необходимо добавить строчку FORCE_SCRIPT_NAME = '' в настройки проекта написанного на django, иначе ко всем ссылкам в начало будет добавляться название /dispatch.fcgi.
xrandr
RandR(The X Resize and Rotate Extension) — это расширение сервера x11 позволяющее динамически менять разрешение экрана, его размер, ориентацию и другие параметры без перезапуска X-сессии. Может быть очень полезен при подключении мультимедийного проектора к ноутбуку. Взаимодействие пользователя осуществляется с помощью одноименной утилиты xrandr, хотя оконные менеджеры предоставляют свои графические обертки для работы с RandR.
xrandr оперирует с выходами(outputs), самый простой способ узнать их наименования и поддерживаемые параметры: xrandr --prop. Общий синтаксис: xrandr --output name --command. Подключая или отключая VGA-устройства во время работы компьютера можно использовать команду xrandr --output VGA --auto для того, чтобы разрешить вновь подключенный выход, или выключить отсоединенный. Есть отдельная команда xrandr --output VGA --off.
Может возникнуть такая ситуация, что экраны должны быть сконфигурированы для показа одно экрана(как в случае мультимедийных проекторов), либо для показа разных участков(два монитора): xrandr --output VGA --same-as LVDS (варианты --left-of, --right-of, --above, --below).
Разрешения двух выходов могут не совпадать, можно использовать команду xrandr --output VGA --mode mode для установки нужной моды, список доступных покажет команда --prop.
Когда физическое отношение сторон экранов двух выходов в режиме --same-as не совпадает(например, если ноутбук 16:10, а мультимедийный проектор 4:3), необходимо либо вырезать нужную часть экрана командой xrandr --output VGA --pos xxy, установив левый верхний угол в позицию x, y., либо использовать команды --scale, которые к сожалению поддерживаются только начиная с версии 1.3 протокола. К счастью, например okular в режиме показа презентаций оставляет черные поля по бокам слайдов 4:3, таким образом использование --pos даже предпочтительно, позволяя отцентрировать выход проектора, отрезав черные поля.
xrandr оперирует с выходами(outputs), самый простой способ узнать их наименования и поддерживаемые параметры: xrandr --prop. Общий синтаксис: xrandr --output name --command. Подключая или отключая VGA-устройства во время работы компьютера можно использовать команду xrandr --output VGA --auto для того, чтобы разрешить вновь подключенный выход, или выключить отсоединенный. Есть отдельная команда xrandr --output VGA --off.
Может возникнуть такая ситуация, что экраны должны быть сконфигурированы для показа одно экрана(как в случае мультимедийных проекторов), либо для показа разных участков(два монитора): xrandr --output VGA --same-as LVDS (варианты --left-of, --right-of, --above, --below).
Разрешения двух выходов могут не совпадать, можно использовать команду xrandr --output VGA --mode mode для установки нужной моды, список доступных покажет команда --prop.
Когда физическое отношение сторон экранов двух выходов в режиме --same-as не совпадает(например, если ноутбук 16:10, а мультимедийный проектор 4:3), необходимо либо вырезать нужную часть экрана командой xrandr --output VGA --pos xxy, установив левый верхний угол в позицию x, y., либо использовать команды --scale, которые к сожалению поддерживаются только начиная с версии 1.3 протокола. К счастью, например okular в режиме показа презентаций оставляет черные поля по бокам слайдов 4:3, таким образом использование --pos даже предпочтительно, позволяя отцентрировать выход проектора, отрезав черные поля.
cron: Permission denied
После обновления на openSUSE 11.2 перестали запускаться некоторые задачи cron'а. Описаны они были в отдельном файле, расположенном в /etc/cron.d и запускаться должны быть не от root, а от некоторого системного пользователя. Но вместо выполнения, в /var/log/messages обнаружились только записи вида "/usr/sbin/cron[47852]: Permission denied".
Ошибка, прямо скажем, не очень информативного содержания. openSUSE использует vixie-cron, снабженный дополнительными патчами, один из которых обеспечивает работу с PAM. В пакете идет так-же и файл /etc/pam.d/crond с настройками.
Исполнению скрипта мешал модуль pam_unix2.so(разработанный Thorsten Kukuk), т.к. этот модуль новой версии считает, что аккаунт заблокирован, если в файле /etc/shadow на месте пароля записан символ '!'. По некоторому стечению обстоятельств так и оказалось. Еще туда можно записать '*', как говорится, почувствуйте разницу.
Ошибка, прямо скажем, не очень информативного содержания. openSUSE использует vixie-cron, снабженный дополнительными патчами, один из которых обеспечивает работу с PAM. В пакете идет так-же и файл /etc/pam.d/crond с настройками.
Исполнению скрипта мешал модуль pam_unix2.so(разработанный Thorsten Kukuk), т.к. этот модуль новой версии считает, что аккаунт заблокирован, если в файле /etc/shadow на месте пароля записан символ '!'. По некоторому стечению обстоятельств так и оказалось. Еще туда можно записать '*', как говорится, почувствуйте разницу.
"Argument list too long"
Какое количество аргументов можно запихнуть в командную строку? Как хорошо известно, исполнение новой программы запускается той или иной вариацией функции exec. А функции эти иногда могут возвращать ошибку E2BIG. Дословно процитировав man, можно было бы воскликнуть: "The total number of bytes in the environment (envp) and argument list (argv) is too large."
В Linux константа ARG_MAX определена в файле include/linux/limits.h, где так и написано 131072 байтов (это на переменные окружения и аргументы командной строки вместе).
Где-то между 2.6.22 и 2.6.23 ситуация немного изменилась, посмотрев в функцию get_arg_page(), что в файле fs/exec.c, можно заметить, что теперь размер ограничен четвертью стека, и, следовательно, может быть неограничен вовсе, т.к. размер стека может быть изменен перед запуском процесса, используя команду ulimit -s.
Простенький скрипт позволяющий поиграть с размером области для аргументов. Будет работать только на системах с ядрами новее, чем 2.6.23. На более старых всегда будет один и тот же результат — 131072.
В Linux константа ARG_MAX определена в файле include/linux/limits.h, где так и написано 131072 байтов (это на переменные окружения и аргументы командной строки вместе).
Где-то между 2.6.22 и 2.6.23 ситуация немного изменилась, посмотрев в функцию get_arg_page(), что в файле fs/exec.c, можно заметить, что теперь размер ограничен четвертью стека, и, следовательно, может быть неограничен вовсе, т.к. размер стека может быть изменен перед запуском процесса, используя команду ulimit -s.
Простенький скрипт позволяющий поиграть с размером области для аргументов. Будет работать только на системах с ядрами новее, чем 2.6.23. На более старых всегда будет один и тот же результат — 131072.
#!/bin/sh
EXEBIN=/bin/true
pattern=$(perl -e 'print ("x" x 4095)."\n";')
ulimit -s $1
ulimit -s
arg=$pattern
while $EXEBIN $arg
do
echo -n .
arg="$arg $pattern"
done
echo $? ${#arg}
Подписаться на:
Сообщения (Atom)