Highlighter

пятница, 22 ноября 2013 г.

Виснет yum на Running Transaction Test

Возникла проблема на одном из серверов. При запуске yum он вис после вывода надписи Running Transaction Test. Пробему решал следующим образом: для локализации проблемы запустил через strace

strace yum install zabbix-agent

После этого увидел место "затыка"

stat("/dev/pts", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
stat("/dev/shm", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=40, ...}) = 0
stat("/proc/sys/fs/binfmt_misc", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
stat("/var/lib/nfs/rpc_pipefs", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
stat("/nfs", 

Как видим, он виснет на обращении к /nfs, куда был примонтирован каталог с другого сервера. Отмонтировав его, я решил проблему.

umount -l /nfs

четверг, 1 августа 2013 г.

О старых mysql

В отличии от документации, запрос к Mysql 5.0 вида
CREATE INDEX time ON table1 (start_time, end_time) USING BTREE;
не выполнится и выдаст следующую ошибку:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'USING BTREE' at line 1

Для того, чтобы оно работало, нужно делать так:
CREATE INDEX time USING BTREE ON table1 (start_time, end_time);

четверг, 13 сентября 2012 г.

Запускаем Unity под Archlinux

Многие недовольны развитием десктопного линукса. А мне вот нравится Unity из ubuntu. Вот только в убунте всё настолько запатчено, что очень тяжело завести на других дистрибутивах.

Однако нашлись люди, которые пропатчили все зависимости и сделали репозиторий.
Есть два способа поставить unity - собрать самому или поставить готовый из репозитория. Я бы рекомендовал собирать самому, так как проблемы фиксятся быстрей. Но можно и из репозитория, а потом пересобрать пакеты, с которыми возникли проблемы.

Вот адреса репозиториев:

[unity]
Server = http://unity.xe-xe.org/$arch

[unity-extra]
Server = http://unity.xe-xe.org/extra/$arch

Добавляем это в /etc/pacman.conf и устанавливаем.

pacman -Suy
pacman -S $(pacman -Slq unity)

Естественно, придётся заменить ряд системных пакетов (вроде xorg-server) на патченные.
Ещё бы я порекомендовал установить lightdm-ubuntu для запуска.

Собрать можно, используя репозиторий с гитхаба.

git clone  git://github.com/chenxiaolong/Unity-for-Arch

После этого читаем README и собираем/устанавливаем в правильном порядке.
Если хочется, то можно это просто автоматизировать.
#/bin/bash

CURRENT_PATH=`pwd`
echo "" > build-fails

for PACKAGE in `cat README | awk '/[0-9][0-9]:/ { print $2 }'`
do
        echo ""
        echo "Building $PACKAGE"
        cd $PACKAGE
        makepkg || echo $PACKAGE >> $CURRENT_PATH/build-fails
        rm -rf src pkg
        cd $CURRENT_PATH
done
После того, как всё соберётся, можно это установить.
#!/bin/bash

CURRENT_PATH=`pwd`
echo "" > install-fails

for PACKAGE in `cat README | awk '/[0-9][0-9]:/ { print $2 }'`
do
        cd $PACKAGE
        for PACKAGE_FILE in `ls *.pkg.tar.xz`
        do
                echo "installing $PACKAGE_FILE"
                yaourt --noconfirm -U $PACKAGE_FILE || echo $PACKAGE_FILE >> $CURRENT_PATH/install-fails
        done
        cd $CURRENT_PATH
done
На практике, после установки из репозитория, я столкнулся со следующими проблемами:

  1. Не работали заголовки окон. Решилось пересборкой compiz-ubuntu и установкой metacity-ubuntu из AUR.
  2. Вместо текущего времени отображалась надпись "Time". Решилось созданием файла /etc/timezone c содержанием текущей таймзоны. Для меня это Europe/Minsk
  3. Центр настроек сегфолтился при выборе пункта "мониторы". Решилось пересборкой gnome-control-center-ubuntu

После этого стало возможно пользоваться Unity. Единственное - нужно внимательно следить за обновлениями. Вероятность поломки довольно высока.

Стоит отметить, что я и раньше использовал NetworkManager и PulseAudio. Поэтому с ними возиться не пришлось.

вторник, 11 сентября 2012 г.

Заряжаем новый iPad под Linux от USB


Особенностью нового iPad стал огромный аккумулятор (больше 11 тыс мАч), что позволило ему работать довольно долго с хорошим экраном. Однако это потребовало значительно большего тока зарядки и, если просто подключить к USB, то он не заряжется (на самом деле заряжается, но очень медленно). 
Для того, чтобы зарядка работала, нужен ток в 2А. 

К счастью, это можно сделать при помощи костылей. Есть утилита ipad_charge, которая позволяет увеличить ток, подаваемый на устройство. 

Вот список поддерживаемых устройств: 

  • iPad
  • iPad2
  • iPad3
  • iPod Touch 2G
  • iPod Touch 3G
  • iPod Touch 4G
  • iPhone 3GS
  • iPhone 4
  • iPhone 4S

Установка проста. Для убунту можно собрать пакет

sudo aptitude install libusb-1.0-0 libusb-1.0-0-dev
git clone https://github.com/mkorenkov/ipad_charge.git
cd ./ipad_charge
make
checkinstall

Для арча я сделал PKGBUILD, который можно найти в AUR

Примечание. USB 2.0 рассчитан на ток в 0.5 ампера. Работа на повышенных токах может повредить материнскую плату.

четверг, 2 августа 2012 г.

Выключаем компьютер обычным пользователем

Решил записать, как выключать/перезагружать/делать спячку без рутовых прав.
Это можно реализовать при помощи DBus, ConsoleKit, UPower.

У меня для команд есть алиасы:


# suspend / halt / reboot by regular user
alias suspend='dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend'
alias halt='dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop'
alias reboot='dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart'

суббота, 23 июня 2012 г.

Настраиваем VPN через NetworkManager

Руки всё-таки дошли и до рабочего ноутбука. И решил я поставить туда archlinux. Так как пароль на загрузку я не знал, и ни флешки, ни желания ждать, когда придёт человек из суппорта, не было (хотя проблем с этим нету никаких), то пришлось извращаться.

Самым простым способом, пришедшим мне в голову показалась установка убунту в windows, изменение раздела при помощи GParted, установка арча в chroot и установка grub в MBR. Что и было сделано. Внимание стоит обратить разве что на установку арча в чруте. Но для этого есть мануал на вики.

За время моего неиспользования арча там уже появились подписи пакетов, с чем пришлось разобраться (сделать что-то типа pacman-key --init и pacman-key --populate) и consolekit интегрирован внутрь slim (но это уже и в других дистрибутивах так).

В общем, поставил я всё, начал настраивать NetworkManager. Тут всё получилось нормально, но возникли проблемы с PPTP соединением до работы. Причём самое интересное - из консоли при помощи pon всё поднимается отлично. Полез я, значит, смотреть в логи, а там почти всё успешно (проходит авторизация, получаются адреса), но через пару секунд всё рвётся со следующей руганью в логи:


pptp[2175]: nm-pptp-service-2171 warn[decaps_gre:pptp_gre.c:331]: short read (-1): Message too long
pppd[2173]: Modem hangup
pppd[2173]: Connect time 0.2 minutes.

Печально, что в NM нельзя выставить настройки MTU только для поднятого VPN соединения, поэтому пришлось задвать жёстко MTU для соединения, через которое поднимается туннель. Я выставил 1432, переподключился к вай-фай и PPTP нормально заработал.


Поэтому пришлось копать глубже. Я выставил параметр mru 1400 в /etc/ppp/options и всё заработало корректно  и с удивлением узнал, что NM переписывает значение MTU после установления соединения каким-то своим значением, которое нельзя изменить. На арчефоруме посоветовали воспользоваться таким костылём:

/etc/NetworkManager/dispatcher.d/20-mtu_change

#!/bin/bash


INTERFACE=$1
STATUS=$2
VPN_ID="5d4ee387-3171-4006-bda1-231b249690b9"


if [ "$STATUS" = "vpn-up" -a "$CONNECTION_UUID" = "$VPN_ID" ]; then
    ip link set "$INTERFACE" mtu 1000
fi