Быстрая сборка пакета для Slackware

Давно не писал, материала накопилось вагон и тележка, а времени — с гулькин нос. Сегодня будет маленькая заметка про сборку пакета для Slackware, новая версия которой, кстати, вышла совсем недавно.

Собирать будем на примере setuptools, который уже в который раз не попадает в штатный набор пакетов, а вещь весьма нужная.

Continue reading «Быстрая сборка пакета для Slackware»

Быстрая сборка пакета для Slackware

Udev usb automount

В доброжелательных и приветливых дистрибутивах, вроде Fedora или Ubuntu проблем с автомонированием съемных носителей не наблюдается уже давно, в той же Slackware, если не используется KDE, Gnome или Xfce, все немножко печальнее. Но на самом деле все не так страшно, автоматическое монтирование можно настроить через udev.

1. Создадим политику в файле /etc/udev/rules.d/11-media-automount.rules:

KERNEL!="sd[b-z][0-9]", GOTO="media_by_label_auto_mount_end"
IMPORT{program}="/sbin/blkid -o udev -p %N"
# Определим метку устройства, если она есть, или же пропишем свою
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"
# Глобальные настройки монтирования
ACTION=="add", ENV{mount_options}="relatime"
# Настройки монтирования, специфичные для файловой системы
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"
# Монтирование
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"
# Очистка после удаления устройства
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"
# Выход
LABEL="media_by_label_auto_mount_end"
Udev usb automount

SuexecUserGroup directive requires SUEXEC wrapper

После установки модуля mod_suexec в Slackware 13.37 выскочило вот такое предупреждение: «Warning: SuexecUserGroup directive requires SUEXEC wrapper». Лечится довольно просто.

Во-первых, все зависит от способа установки, я устанавливал в лоб, скачал rpm-пакет c rpm.pbone.net, который соответствовал моей платформе и версии апача (i686, apache-2.2.19), выдернул из cpio архива 2 файла: mod_suexec.so, который копируется в /usr/lib/httpd/modules и suexec, который копируется в /usr/sbin. Если вы устанавливали таким способом, то нужно проверить, где апач будет искать suexec:

httpd -V | grep SUEXEC_BIN

Если в выводе увидите -D SUEXEC_BIN=»/usr/sbin/suexec», то все ок, а если -D SUEXEC_BIN=»/usr/bin/suexec», то нужно сделать линк:

ln -s /usr/sbin/suexec /usr/bin/suexec

После этого, нужно подправить права, если это необходимо:

chown root:root /usr/sbin/suexec
chmod 4750 /usr/sbin/suexec

Рестартуем апач и можем спокойно использовать директиву SuexecUserGroup

SuexecUserGroup directive requires SUEXEC wrapper

Индикатор батареи для Slackware.

Намедни озадачился отсутствием индикатора заряда батареи в xfce-4.4.3, который идет в стандартной поставке Slackware 12.2. Плагин, который можно скачать с офф. сайта проекта xfce мне не понравился хотя бы только потому, что тянет за собой ряд зависимостей, захламлять которыми машину как-то не хочется, плюс установить удалось только одну из версий, которая толком и не работала. С другой стороны, на машинке уже установлена libnotify, которая позволяет выводить всплывающие уведомления, так почему бы не вспользоваться ей. Решение и реализация заняли всего 10 минут.

1. Определяемся, где у нас лежит информация о батарее.

$ cat /proc/acpi/battery/BAT1/state — информация о состоянии, отсюда будем брать текущий заряд.
$ cat /proc/acpi/battery/BAT1/info — общая информация, отсюда будем брать общую емкость, для вычисления процентов.
Возможно у Вас путь будет немного другой, например /proc/acpi/battery/BAT0/state

2. Пишем скрипт.

Первое что пришло на ум, это perl, хотя уверен, реализовать такое легко и на bash


#!/usr/bin/perl -w
my ($file1,$file2,@data,$damage,$current);
#читаем файл с информацией о батарее
open F1, '/proc/acpi/battery/BAT1/info'; while (<F1>) { $file1 .= $_; }; close F1;
open F2, '/proc/acpi/battery/BAT1/state'; while (<F2>) { $file2 .= $_; }; close F2;
#выбираем интересующие нас данные
return unless @data[0] = $file1 =~ /design\scapacity\:\s+(\d+)\s\w+/;
return unless @data[1] = $file1 =~ /last\sfull\scapacity\:\s+(\d+)\s\w+/;
return unless @data[2] = $file2 =~ /remaining\scapacity\:\s+(\d+)\s\w+/;
#считаем проценты
$damage = 100-(@data[1]/40);$damage = sprintf("%.1f",$damage);
$current = (@data[2]*100)/@data[1];$current = sprintf("%.1f",$current);
#вызываем внешнюю программу для отображения данных
`notify-send -u critical -t 7000 -i battery "
\tТекущий заряд батареи $current%
\n\tИзнос батареи $damage%"`

Вот собственно и все, при вызове этой программки получаем нечто подобное:

всплывающее уведомление

При желании можно вызывать скрипт посредством bash скрипта, а если сделать симлинк на этот скрипт в /usr/local/bin, то можно, в добавок, повесить вызов уведомления на хоткей.

Индикатор батареи для Slackware.