barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

среда, 8 июня 2011 г.

Как прикрутить flash в Debian Squeeze (Opera, Chromium, Firefox)

Автоматом флеш плеер у меня не поставился (ругается на неверную хэш-сумму), а gnash мало того, что не работает как надо (видео с Вк, например, не играет), так ещё и проц грузит. Поэтому пришлось ставить руками:

1) Скачать с сайта adobe.com tar.gz архив, распаковать.
2) Содержимое папки usr/ поместить в /usr/
3) libflashplayer.so скопировать в /usr/lib/chromium-browser/plugins/, /usr/lib/opera/plugins/ и /usr/lib/mozilla/plugins/. Ну или скопировать куда-нибудь и сделать в папках plugins ссылки на него (что, конечно, будет корректнее с точки зрения удобства обновления). Перезапустить браузеры.


Щелчки винчестера на EEEPC T101MT в Dabian и как от них избавиться

Очередное решение проблемы с винчестером EeePC T101MT, постоянно паркующего головки, на этот раз для Debian. В отличие от Ubuntu, тут нет /lib/hdparm/hdparm-functions, однако, и от Fedora есть приятное отличие - тут я нашел конфиг hdparm`a: /etc/hdparm.conf, куда и добавил следующие строчки:
/dev/sda {
apm = 255
}
После выхода из спящего/ждущего режима правда снова начинает щелкать, поэтому добавил ещё файлик /etc/pm/sleep.d/72_hdparm (не забыв сделать chmod 755):
#!/bin/sh
# Disable APM on resume|thaw
case "${1}" in
suspend|hibernate)
# nothing
;;
resume|thaw)
hdparm -B255 /dev/sda
;;
esac

вторник, 7 июня 2011 г.

Touchscreen eGalax на EeePC T101MT в Debian

Итак, пара часов в сумасшедших поисках, пара десятков перезагрузок и рецепт, как заставить работать тачскрин EeePC T101MT под Debian Squeeze найден.
Изначально проблема была такая - устройство вроде бы видется (в lsusb его почему-то нет, но xinput list его показывает), вот только независимо от места клика курсор убегает в левый верхний угол. Впрервые столкнулся с таким делом в Дебиане, в Убунте и Федоре все работало из коробки (в Убунте правда я ещё доставлял egalax-multitouch-driver-common из ppa:plippo/t101mt для удобных функций вращения экрана вместе с тачем на 90/180/270 градусов). Перепробовал различные конфиги через evdev / evtouch, ничего не помогало. Место клика перемещалось по экрану, однако все равно от места реального прикосновения к экрану никак не зависело.
В итоге после следующих действий все заработало, причем, в отличие от предыдущих Линухов с работающим "из коробки" тачем, у меня в руках оказалось ещё и средство калибровки от производителя:
1) Отключить работу тачскрина через evdev: в файле /usr/share/X11/xorg.conf.d/10-evdev.conf я закомментировал все блоки "Section", связанные с тачскрином (иначе события тачскрина будут обрабатываться дважды - и родным драйвером, и evdev`ом; блок, связанный с "Tablet", я тоже на всякий случай закомментировал):
#Section "InputClass"
# Identifier "evdev tablet catchall"
# MatchIsTablet "on"
# MatchDevicePath "/dev/input/event*"
# Driver "evdev"
#EndSection
#Section "InputClass"
# Identifier "evdev touchscreen catchall"
# MatchIsTouchscreen "on"
# MatchDevicePath "/dev/input/event*"
# Driver "evdev"
#EndSection
2) Сгенерировать конфиг иксов, которого в дебианоподобных системах нет (а он будет нужен установщику родного драйвера eGalax):
CTRL + ALT + F1 (переведет систему в консольный режим, из которого можно будет вернуться нажатием ALT + F7)
зайти под рутом (ну или делать все следующие действия через sudo)
service gdm3 stop
Xorg -configure
mv /root/xorg.conf.new /etc/X11/xorg.conf
service gdm3 start
3) Скачать и распаковать родной егалаксовский драйвер:
http://home.eeti.com.tw/web20/eGalaxTouchDriver/linuxDriver.htm
По ссылке имеются версии драйвера для версий ядра 2.4.x и 2.6.x, узнать, какая версия ядра у Вас, можно, набрав в консоли uname -r.

4) Запустить из-под рута setup.sh. Ответить на вопрос, к чему подключен экран, 3 вариант, т.е. USB. Перезагрузиться.

5)  Запустить eGalaxTouch, поковыряться в настройках, откалибровать по 4 точкам.

И всё, должно наступить счастье =)

Добавление ppa-репозиториев в Debian

Для Ubuntu есть очень полезный способ получения пакетов - репозитории типа ppa (имеют адрес вида ppa:user/ppa-name, прочитать про них можно тут). В Ubuntu ppa-репозитории добавлялись с помощью команды apt-add-repository, в Debian же её нет, поэтому приходится использовать собственный скрипт (взял я его тут: http://blog.anantshri.info/howto-add-ppa-in-debian/ и немного доделал, добавив возможность выбирать дистибутив Ubuntu, пакеты для которого будут загружаться из репозитория). Вот исходный текст срипта:


#!/bin/bash
if [ $# -ge 1 ]
then
ppa_name=`echo "$1" | cut -d":" -f2 -s`
if [ -z "$ppa_name" ]
then
echo "PPA name not found"
echo "Utility to add PPA repositories in your debian machine"
echo "$0 ppa:user/ppa-name [ubuntu-distributive]"
echo "For example: $0 ppa:mozillateam/firefox-stable maverick"
else
echo "$ppa_name"
if [ $# -eq 1 ] #запущен с 1 параметром - дистрибутив по-умолчанию lucid
then
ubuntuver='lucid'
else
ubuntuver=$2
fi
echo "$ubuntuver"

echo "deb http://ppa.launchpad.net/$ppa_name/ubuntu $ubuntuver main" >> /etc/apt/sources.list
apt-get update >> /dev/null 2> /tmp/apt_add_key.txt
key=`cat /tmp/apt_add_key.txt | cut -d":" -f6 | cut -d" " -f3`
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $key
rm -rf /tmp/apt_add_key.txt
fi
else
echo "Utility to add PPA repositories in your debian machine"
echo "$0 ppa:user/ppa-name [ubuntu-distributive]"
echo "For example: $0 ppa:mozillateam/firefox-stable maverick"
fi

Можно поместить его, например, в /usr/sbin, назвав add-apt-repository, не забыв дать права 755 и сменив владельца на root:
chmod o+x /usr/sbin/add-apt-repository
chown root:root /usr/sbin/add-apt-repository

Теперь добавлять ppa-репозитории (для примера я добавляют репозиторий с пакетами для нетбука eeepc t101mt) можно так:

sudo add-apt-repository ppa:plippo/t101mt

или

sudo add-apt-repository ppa:plippo/t101mt natty

Именно второй вариант работает, т.к. по-умолчанию в скрипте стоит дистрибутив lucid (10.04), но его почему-то apt не находит (при попытке apt-get update вылезают ошибки 404). В таких случаях версия дистрибутива, для которой пакет есть, подбирается вручную.
Правда, использование ppa не всегда помогает - например, поставить Firefox из ppa все равно не полуится - она зависит от пакетов, которые есть в Ubuntu, но отсутствуют в Debian. Подцеплять же весь убунтовский репозиторий в список репозиториев apt (/etc/apt/sources.list) - не вариант, в таком случае apt захочет снести пол-дебиана и заменить его на убунтовские версии пакетов,

Запись ISO-образа операционной системы на флешку в Linux

Для Linux существует аналог Universal USB Installer под Win, позволяющий записать на флешку загрузочный ISO-образ (а также скачать образ выбранной ОС при необходимости): unetbootin. Скачать его можно с официального сайта (http://unetbootin.sourceforge.net/) или из репозитория ОС. Существует также его версия по Win, но я лично её не пробовал.

пятница, 3 июня 2011 г.

Поддержка mp3 в Fedora 16

sudo yum install gstreamer-plugins-ugly gstreamer-plugins-bad gstreamer-ffmpeg xine-lib-extras-freeworld

(сначала нужно подключить доп. репозитории как написано здесь: http://barbitoff.blogspot.com/2011/06/fedora-15.html)

Помимо этого, я также установил все пакеты, начинающиеся с gstreamer-plugins-bad (-free, -nonfree и ещё какие-то).
После этого mp3 заработал в Amarok (и в Rythmbox тоже).

Добавление в Fedora 16 репозиториев с пакетами, не вошедшими в официальный репозиторий из-за политики авторских прав

Некоторые пакеты (например, необходимые для декодирования mp3), не входят в официальный репозиторий Федоры. Их можно установить, добавив с список репозиторием RPMFusion:

sudo rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm

sudo rpm -ivh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

Для ускорения процесса обновления желательно сначала установить плагин fastestmirror для yum:

sudo yum install yum-plugin-fastestmirror