Пошаговое мини-howto, описывающее как расшарить сканер между linux-системами по аналогии с сетевым принтером.
Предполагаем, что локально сканер на сервере настроен и работает (см. sane).
Теперь нужно выполнить следующие действия:

На сервере:
1) Ставим демон saned (входит в состав разных пакетов, в зависимости от дистрибутива, наример sane-utils или sane-server).
2) В /etc/sane.d/saned.conf добавляем ip клиента(ов) (см. примеры в том же файле).
3) Создаем файл /etc/xinetd.d/saned (для автоматического запуска сервера сканирования сетевым демоном xinetd) вида:

service sane-port
{
disable = no
socket_type = stream
protocol = tcp
user = scanner
wait = no
server = /usr/sbin/saned
}
(здесь предполагается, что в системе присутствует пользователь "scanner" с правами на доступ к сканеру. конечно можно задать пользователя, от имени которого будет запускаться демон saned, по желанию. root строго не рекомендуется)
4) Выполняем команду (чтобы xinetd подхватил созданный нами файл):
$ sudo /etc/init.d/xinetd reload

На клиенте:
5) В /etc/sane.d/net.conf добавляем строку с ip сервера.
6) Пускаем xsane, сканируем, радуемся.

Что такое dwm...

...можно прочитать например здесь (динамический фреймовый оконный менеджер и т.п.).
Заинтересовавшимся про настройку можно (и нужно) почитать здесь.

Я же опишу свои самые первые шаги по освоению dwm, а именно его установку.
Первоначальные действия по распаковке (я ставил в домашнюю директорию) и сборке:

# Будем ставить в домашнюю директорию, в скрытый каталог .dwm
mkdir .dwm
cd ./.dwm/
# Распаковываем
tar -zxf /<PATH_TO_DWM>/dwm-<VER>.tar.gz
# Складываем файлы из архива сюда же в ~/.dwm
mv ./dwm-*/* ./
rmdir ./dwm-*/
# Первоначальные настройки в config.h =)
vim ./config.h
# Компилим
make

PATH_TO_DWM - путь к архиву, VER - версия в имени файла. Архив с новой версией можно взять на сайте dwm.

Если вдруг компиляция валится с ошибкой вида:
/usr/include/X11/Xlib.h: В функции 'XSetOMValues'
/usr/include/X11/Xlib.h:3573: ошибка: expected declaration specifiers before '_X_SENTINEL'

...ситуацию поможет исправить добавление данного ключа к переменной CFLAGS в файле config.mk (именно в Xfuncproto.h лежат нужные для сборки макросы):
-include /usr/include/X11/Xfuncproto.h
Далее создадим простенький скрипт запуска (скрипт взят из README из поставки dwm):
~/.dwm$ echo '    while true
do
echo `date` `uptime | sed 's/.*,//'`
sleep 1
done | ~/.dwm/dwm' > DWM
~/.dwm$ chmod +x ./DWM

Теперь о двух способах, которыми я организовал запуск dwm в двух различных системах (AltLinux Desktop 4 и Ubuntu 8.10):


Первый способ

В AltLinux я просто произвел первоначальные настройки по аналогии с альтовским спеком, а именно создал файл /etc/X11/wmsession.d/23dwm со следующем содержанием:

NAME=DWM
DESC=Light and fast window manager
EXEC=/home/USER/.dwm/DWM
SCRIPT:
exec /home/USER/.dwm/DWM

, где USER, конечно, - имя вашего пользователя (как часть пути в домашний каталог).


Второй способ

Как я ставил на Ubuntu.
Поставил пакет из репозитория и увидел, что в убунте путь к бинарику dwm из коробки задается с помощью системы альтернатив (подробней об альтернативах здесь):
~/.dwm$ ls -l /usr/bin/dwm
lrwxrwxrwx 1 root root 21 2008-06-05 17:07 /usr/bin/dwm -> /etc/alternatives/dwm
~/.dwm$ ls -l /etc/alternatives/dwm
lrwxrwxrwx 1 root root 20 2008-11-26 11:37 /etc/alternatives/dwm -> /usr/bin/dwm.default

Так что легко можно добавить свой бинарик dwm в качестве альтернативы с сохранением системного:
~/.dwm$ sudo update-alternatives --install /usr/bin/dwm dwm /home/<USER>/.dwm/DWM 23

Смотрим что вышло:
~/.dwm$ update-alternatives --display dwm
состояние dwm: auto.
ссылка сейчас указывает на /usr/bin/dwm.default
приоритет /usr/bin/dwm.default: 100
приоритет /usr/bin/dwm.web: 50
приоритет /home/<USER>/.dwm/DWM: 23
Текущая `лучшая' версия: /usr/bin/dwm.default.

И выставим свой бинарик dwm по умолчанию:
~/.dwm$ sudo update-alternatives --set dwm /home/<USER>/.dwm/DWM
Используется `/home/<USER>/.dwm/DWM' для предоставления `dwm'.

Всё, теперь наш dwm готов к запуску (его можно выбрать в том же gdm в меню выбора сеанса).


 

Copyright © 2007 DamnSmallBlog. Content is licensed under Creative Commons Attribution-Noncommercial.

Design: GeckoandFly and Blogcrowds.