Затеялся я обновить драйвер intel для видео на ноутбуке. Меня донимали некоторые артефакты при отрисовке. Последние драйверы, доступные для установки в Gentoo, запросили обновление xorg-server до версии от 1.5 и выше.
Всё как обычно, поставил, перезагрузил и опаньки =). Нет ни мыши ни клавиатуры. Заход по ssh и чтение Xorg.0.log ни чего не дали, за исключением того, что xorg больше не читает настройки про устройства ввода.
Шаманское Gуgленье выдало простой до безобразия ответ. В новой версии xorg для работы с устройствами ввода использует hal и в следствии этого, по умолчанию, игнорирует настройки в xorg.conf касающиеся устройст ввода.
В результате имею свой личнфй ХовТу (howto =) ):
1. В make.conf установлен USE=hal
2. В make.conf установлен INPUT_DEVICES="evdev"
3. Xorg-server и xf86-input-evdev собран с поддержкой hal
4. Установлена политика в хал, которая настраивает действие xkb. Далее, для примера, мой файл политики, сделанный на основе примера из /usr/share/hal (правки отмеченны красным):
# /etc/hal/fdi/policy/10-russian-keymap.fdi
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.keymap">
<append key="info.callouts.add" type="strlist">hal-setup-keymap</append>
</match>
<match key="info.capabilities" contains="input.keys">
<merge key="input.xkb.rules" type="string">base</merge>
<!-- If we're using Linux, we use evdev by default (falling back to
keyboard otherwise). -->
<merge key="input.xkb.model" type="string">keyboard</merge>
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
string="Linux">
<merge key="input.xkb.model" type="string">evdev</merge>
</match>
<merge key="input.xkb.layout" type="string">us,ru(winkeys)</merge>
<merge key="input.xkb.options" type="string">grp:rctrl_toggle</merge>
<merge key="input.xkb.variant" type="string" />
</match>
</device>
</deviceinfo>
5. Для touchpad раньше я не ставил ни каких драйверов, но с hal драйвер evdev вел себя не не предсказуемо, по этому потребовалось установить xf86-input-synaptics и в скопировать соответствующую политику в /etc/hal/fdi/policy/11-x11-synaptics.fdi из примеров /usr/share/hal/fdi.
Не совсем мне ясен глубинный смысл необходимости работы с hal, точнее вынос настроек из xorg.conf во внешний файл. Меня обычно радовал linux простотой конфигурации, но в последнее время все чаще случаются приступы шизофрении у разработчиков (или у меня).
понедельник, 30 марта 2009 г.
вторник, 17 марта 2009 г.
Отправка почты из командной строки
Не бывает без проблем =). Получается, что я очень мало знаю о Linux. Можно сказать, что ни чего не знаю. Когда я настраивал postfix мне потребовался консольный почтовый клиент. Ундекс посоветовал mutt. С тех пор я им и пользуюсь.
В какой то момент мне потребовалось отправлять почту из командной строки, без какого либо интерфейса. Решение оказалось очень простым. Программой mutt можно пользоваться и без интерактивного интерфейса, но на стандарный вход необходимо направить текст письма:
# echo "текст письма" | mutt user@domain -s "тема письма"
Для отправки письма нескольким адресатам, их e-mail можно перечислить через запятую.
При необходимости вложить в письмо файл, можно использовать опцию -a:
# echo "текст письма" | mutt user@domain -s "тема письма" -a file.jpg
В некоторых случаях удобно использовать отдельный конфигурационный файл muttrc, например мне необходимо указать обратный адрес, отличный от основного. Для этого есть опция -F:
# echo "текст письма" | mutt user@domain -s "тема письма" -F /path/muttrc
Есть еще одна опция которая мне понравилась -i, но практический смысл ее использования от меня ускольает. Эта опция позволяет вложить вложить текст в тело письма. Фактически в скрипте можно заранее подготовить текст письма или заранее его заготовить и используя -i вставить его в письмо, но это все равно не избавляет от необходимости подачи на stdin чего либо. В результате я вижу три идентичных варианта:
# echo | mutt user@domain -s "тема письма" -i Текст.txt
# cat Текст.txt | mutt user@domain -s "тема письма"
# mutt user@domain -s "тема письма" < Текст.txt
В процессе использования в различных скриптах подобных конструкций по автоматической отпрвке писем наткнулся на интересное поведение восклицательного знака "!" в теме письма. Если отправка из командной строки выполняется из скрипта, то все коректно отрабатывает. При попытке отправить руками из командной строки, при наличии восклицательного знака в теме письма, консоль переходит в режим ожидания ввода stdin. Очень похоже, что это происходит из за не верной трактовки bash самой строки, но в скрипте, использование восклицательного знака работает корректно.
В какой то момент мне потребовалось отправлять почту из командной строки, без какого либо интерфейса. Решение оказалось очень простым. Программой mutt можно пользоваться и без интерактивного интерфейса, но на стандарный вход необходимо направить текст письма:
# echo "текст письма" | mutt user@domain -s "тема письма"
Для отправки письма нескольким адресатам, их e-mail можно перечислить через запятую.
При необходимости вложить в письмо файл, можно использовать опцию -a:
# echo "текст письма" | mutt user@domain -s "тема письма" -a file.jpg
В некоторых случаях удобно использовать отдельный конфигурационный файл muttrc, например мне необходимо указать обратный адрес, отличный от основного. Для этого есть опция -F:
# echo "текст письма" | mutt user@domain -s "тема письма" -F /path/muttrc
Есть еще одна опция которая мне понравилась -i, но практический смысл ее использования от меня ускольает. Эта опция позволяет вложить вложить текст в тело письма. Фактически в скрипте можно заранее подготовить текст письма или заранее его заготовить и используя -i вставить его в письмо, но это все равно не избавляет от необходимости подачи на stdin чего либо. В результате я вижу три идентичных варианта:
# echo | mutt user@domain -s "тема письма" -i Текст.txt
# cat Текст.txt | mutt user@domain -s "тема письма"
# mutt user@domain -s "тема письма" < Текст.txt
В процессе использования в различных скриптах подобных конструкций по автоматической отпрвке писем наткнулся на интересное поведение восклицательного знака "!" в теме письма. Если отправка из командной строки выполняется из скрипта, то все коректно отрабатывает. При попытке отправить руками из командной строки, при наличии восклицательного знака в теме письма, консоль переходит в режим ожидания ввода stdin. Очень похоже, что это происходит из за не верной трактовки bash самой строки, но в скрипте, использование восклицательного знака работает корректно.
среда, 11 марта 2009 г.
Печать фотографий
Моя ацкая эпопея с добавлением патача для принтера Canon Selphy CP520 увенчалась успехом. Принтер благополучно печатает. Но как всегда есть бочка дегтя =).
Мой принтер Selphy CP520 предназначен именно для печати фотографий. Т.е. он очень хорошо печатает, и делает это на спец бумаге. Печатает без полей. Фактически, полученные отпечатки, мало чем отличаются от полученных в классическом фотолабе.
Я использую Gwenview и DigiKam. Ни одна из них не дает нормального результата при печати. Основной недостаток - оставляются поля, хотя в настройках принтера поля выведены в ноль. Програамы автоматически не поворачивают изображение.
Время печати просто убийственное. Сначала я думал что все виснет. Потом грешил на CUPS. А оказалось все достаточно просто - приложения KDE так печатают фотографии. Перед печатью изображение преобразовывается Ghostscript, что оно делает не понятно, но если исходная фотография имеет большое разрешение, то на ее преобразование перед печатью тратся очень много времени.
В общем, я несколько разочаровался, но в данном случае мне повезло =). Дело в том, что драйвера gutenprint являются продолжением проекта gimp-print! Фактически Gimp умеет печатать напрямую через gutenprint. В этом случае вывод на печать происходит почти сразу и возможно настроить печать в обрез, точно по размеру бумаги.
В общем выкрутился, но неприятный осадок остался =). Загружать в Gimp поштучно фотографии для печати не спортивно. Попробую найти более удобное решение.
Мой принтер Selphy CP520 предназначен именно для печати фотографий. Т.е. он очень хорошо печатает, и делает это на спец бумаге. Печатает без полей. Фактически, полученные отпечатки, мало чем отличаются от полученных в классическом фотолабе.
Я использую Gwenview и DigiKam. Ни одна из них не дает нормального результата при печати. Основной недостаток - оставляются поля, хотя в настройках принтера поля выведены в ноль. Програамы автоматически не поворачивают изображение.
Время печати просто убийственное. Сначала я думал что все виснет. Потом грешил на CUPS. А оказалось все достаточно просто - приложения KDE так печатают фотографии. Перед печатью изображение преобразовывается Ghostscript, что оно делает не понятно, но если исходная фотография имеет большое разрешение, то на ее преобразование перед печатью тратся очень много времени.
В общем, я несколько разочаровался, но в данном случае мне повезло =). Дело в том, что драйвера gutenprint являются продолжением проекта gimp-print! Фактически Gimp умеет печатать напрямую через gutenprint. В этом случае вывод на печать происходит почти сразу и возможно настроить печать в обрез, точно по размеру бумаги.
В общем выкрутился, но неприятный осадок остался =). Загружать в Gimp поштучно фотографии для печати не спортивно. Попробую найти более удобное решение.
вторник, 10 марта 2009 г.
Создание своего ebuild
В Gentoo меня обычно все устраивает. Но иногда случается необходимость поставить какой либо редкий софт, или более новый софт. До сих пор мне удавалось обойтись без создания собственных установочных пакетов, но наступил день "Ч" =).
У меня есть принтер Canon Selphy CP520. На нем я благополучно печатал фотографии с фотоаппарата по проводу и мобильного телефона через Bluetooth. При этом я частенько печатал неудачные снимки, которые на экране телефона или камеры выглядят вполне достойными. В общем, пришло время подключить принтер к компьютеру и печатать только избранные кадры, да еще и подретушированные.
Поиски драйверов для Canon Selphy CP520 завели меня на сайт http://www.openprinting.org, где написано, что данный принтер поддерживается gutenprint версии 5.2.3 с добавленным патчем. Gutenprint нашелся в Gentoo без проблем, а вот необходимый патч, естественно, в поставку не входит =). Не беда. Засучиваем рукава и приступаем.
Постановка задачи.
Необходимо модифицировать существующий ebuild, нужной версии, чтобы при установке, до компиляции, на исходный код накладывался необходимый патч.
Дерево portage.
Так как при модификации существующего ebuild, при обновлении дерева portage, все мои изменения накроются, я добавил так называемый оверлейный portage. Т.е. создал второе, альтернативное дерево, которое существует паралельно официальному дереву.
В файле /etc/make.conf добавил строчку:
PORTDIR_OVERLAY="/usr/local/portage $PORTDIR_OVERLAY"
Создал соответствующий каталог /usr/local/portage, в котором создал каталог для категории ebuild-а net-print. После этого, как образец, я скопировал папку gutenprint из официального дерева в мое свеже созданое дерево portage и все дальнейшие действия делал не затрагивая основное дерево.
Модификация ebuild.
В новом каталоге /usr/local/portage/net-print/gutenprint я убрал не нужные ebuild-ы, а ebuild необходимой версии переименовал с добалвением в имя файла r1. Таким образом я сделал заготовку для своей версии пакета gutenprint.
Внутри каталога /usr/local/portage/net-print/gutenprint есть папка files. В эту папку я положил необходимый мне для пакета патч. Далее отредактивровал сам файл ebuild-а, добавив строку наложения патчей, по аналогии с уже имеющимися:
epatch "${FILESDIR}"/${P}-r1-cp520.patch
Т.к. файлы были модифицированы, они перестали совпадать с информацией из файла Manifest. Для обновления этого файла, необходимо выполнить команду:
#ebuild путь/к/файлу-ebuild digest
Результат.
После выполнения всех не хитрых действий, при установке программы, к исходным кодам пакета добавляется необходимый мне патч.
Установка прошла успешно, а вот печатает ли принтер, я пока не знаю, т.к. проверить это не успел. Основная цель - создание своего ebuild-а, выполнена =).
У меня есть принтер Canon Selphy CP520. На нем я благополучно печатал фотографии с фотоаппарата по проводу и мобильного телефона через Bluetooth. При этом я частенько печатал неудачные снимки, которые на экране телефона или камеры выглядят вполне достойными. В общем, пришло время подключить принтер к компьютеру и печатать только избранные кадры, да еще и подретушированные.
Поиски драйверов для Canon Selphy CP520 завели меня на сайт http://www.openprinting.org, где написано, что данный принтер поддерживается gutenprint версии 5.2.3 с добавленным патчем. Gutenprint нашелся в Gentoo без проблем, а вот необходимый патч, естественно, в поставку не входит =). Не беда. Засучиваем рукава и приступаем.
Постановка задачи.
Необходимо модифицировать существующий ebuild, нужной версии, чтобы при установке, до компиляции, на исходный код накладывался необходимый патч.
Дерево portage.
Так как при модификации существующего ebuild, при обновлении дерева portage, все мои изменения накроются, я добавил так называемый оверлейный portage. Т.е. создал второе, альтернативное дерево, которое существует паралельно официальному дереву.
В файле /etc/make.conf добавил строчку:
PORTDIR_OVERLAY="/usr/local/portage $PORTDIR_OVERLAY"
Создал соответствующий каталог /usr/local/portage, в котором создал каталог для категории ebuild-а net-print. После этого, как образец, я скопировал папку gutenprint из официального дерева в мое свеже созданое дерево portage и все дальнейшие действия делал не затрагивая основное дерево.
Модификация ebuild.
В новом каталоге /usr/local/portage/net-print/gutenprint я убрал не нужные ebuild-ы, а ebuild необходимой версии переименовал с добалвением в имя файла r1. Таким образом я сделал заготовку для своей версии пакета gutenprint.
Внутри каталога /usr/local/portage/net-print/gutenprint есть папка files. В эту папку я положил необходимый мне для пакета патч. Далее отредактивровал сам файл ebuild-а, добавив строку наложения патчей, по аналогии с уже имеющимися:
epatch "${FILESDIR}"/${P}-r1-cp520.patch
Т.к. файлы были модифицированы, они перестали совпадать с информацией из файла Manifest. Для обновления этого файла, необходимо выполнить команду:
#ebuild путь/к/файлу-ebuild digest
Результат.
После выполнения всех не хитрых действий, при установке программы, к исходным кодам пакета добавляется необходимый мне патч.
Установка прошла успешно, а вот печатает ли принтер, я пока не знаю, т.к. проверить это не успел. Основная цель - создание своего ebuild-а, выполнена =).
Подписаться на:
Сообщения (Atom)