Установка МФУ
Модератор: Модераторы разделов
Установка МФУ
Привет. Почитал касательно данного вопроса, теперь хотелось бы понять как грамотно это оформить в Slackware.
Понял следующее:
1. Мне надо настроить демона cups
2. Скачать драйвер и пересобрать его в пакет Slackware?
3. Поставить xsane?
Или есть еще что-то для работы с мфу?
Интересует печать и сканер, факс не нужен.
Мфу samsung scx-4216F, теперь драйвера на них на сайте hp.
Понял следующее:
1. Мне надо настроить демона cups
2. Скачать драйвер и пересобрать его в пакет Slackware?
3. Поставить xsane?
Или есть еще что-то для работы с мфу?
Интересует печать и сканер, факс не нужен.
Мфу samsung scx-4216F, теперь драйвера на них на сайте hp.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Если только он не подхватится сразу. Вряд ли, конечно, но чем Патрик не шутит...
Если правильно помню, xsane - это графическая морда к sane.
Так что его нужно тоже. А вот заведется ли сканер, не знаю.
Напишите потом, что у Вас из всего этого получилось.
У нас такой аппарат был, помню.
Правда, под Linux мы его не пробовали. Мы тогда и слов-то таких не знали.
Но сам аппарат оказался так себе: факс то ли не работал с самого начала,
то ли перестал работать почти сразу. Следом перестал работать автоподатчик.
А тут ещё девченки сунули в печать лист со скрепкой...
Короче, сдали мы его в ремонт. Вроде даже по гарантии.
Нам его починили.
Привезли мы его назад. Всё работает.
И через некоторое время опять отказывает автоподатчик.
А про факс я уже и не интересовался. Тоже вроде перестал работать.
Re: Установка МФУ
Не удалось мне заставить работать принтер и сканер.
Начну с принтера. cups, sane и xsane в системе были установлены, принтер, при запуске cups находился, но драйвера нужного не было. Возможно подошел бы один из ML-, но я решил попробовать установить родные.
Структура каталога с драйвером такая, может я на этом этапе ошибся:
Пример одного из install.sh:
Так вот, зашел я в папку noarch и с помощью makepkg создал пакет slackware и установил его.
Что мне это дало или должно было дать, я честно говоря не понял. Открыл cups указал файл ppd.
Принтер написал что он готов, но при отправке на печать ругался на отсутствие файла - rastertospl.
Скопировал я его,от root, в папку /usr/libs64/cups/filter, ошибка пропала, но получил теперь ошибку "filter failed"
В логах увидел следующее:
Сканер, если верить этому
не поддерживается совсем. sane его не находит, в группу scanner пользователь добавлен. Что в таком случае дают драйвера,я так же не понял.
Правда вопрос чем он его считает, SCX-4x16 или 4200 Series, как указано в файле ppd принтера.
lsusb пишет это:
Простите меня за такие простыни, я просто слегка в шоке, от установки принтера и сканера в linux. Возможно я зашел не с того конца, не знаю.
Начну с принтера. cups, sane и xsane в системе были установлены, принтер, при запуске cups находился, но драйвера нужного не было. Возможно подошел бы один из ML-, но я решил попробовать установить родные.
Структура каталога с драйвером такая, может я на этом этапе ошибся:
Код: Выделить всё
./uld:
./ install-printer.sh* noarch/ uninstall-printer.sh* x86_64/
../ install-scanner.sh* uninstall-scanner.sh*
i386/ install.sh* uninstall.sh*
./uld/i386:
./ gettext* libscmssc.so* rastertospl* usbresetter*
../ libsane-smfp.so.1.0.1* pstosecps* smfpnetdiscovery*
./uld/noarch:
./ firewall-firewalld* package_install.sh* scanner-meta.pkg*
../ firewall-shorewall* package_uninstall.sh* scanner-script.pkg*
.version-printer* firewall-suse* package_utils* scanner.pkg*
.version-printer-script* firewall.sh* pagesize.xml* scripting_utils*
.version-scanner* legacy_compat.pkg* post_install.sh* security.pkg*
.version-scanner-script* libsane-smfp.cfg* pre_install.sh* share/
bash_debugging* license/ printer-meta.pkg*
etc/ oem.conf* printer-script.pkg*
firewall-fedora* package_api_defaults* printer.pkg*
./uld/noarch/etc:
./ ../ smfp.conf* smfp.fdi.in* smfp.rules.in*
./uld/noarch/license:
./ ../ eula-fr.txt* eula.txt*
./uld/noarch/share:
./ ../ locale/ ppd/
./uld/noarch/share/locale:
./ ../ fr/
./uld/noarch/share/locale/fr:
./ ../ LC_MESSAGES/
./uld/noarch/share/locale/fr/LC_MESSAGES:
./ ../ install.mo* sane-smfp.mo*
./uld/noarch/share/ppd:
./ Samsung_ML-1640_Series.ppd*
../ Samsung_ML-1660_Series.ppd*
Samsung_C140x_Series.ppd* Samsung_ML-1670_Series.ppd*
Samsung_C145x_Series.ppd* Samsung_ML-1710_Series.ppd*
Samsung_C1810_Series.ppd* Samsung_ML-1740_Series.ppd*
Samsung_C1860_Series.ppd* Samsung_ML-1860_Series.ppd*
Samsung_C2620_Series.ppd* Samsung_ML-1865W_Series.ppd*
Samsung_C2670_Series.ppd* Samsung_ML-191x_Series.ppd*
Samsung_C268x_Series.ppd* Samsung_ML-2010_Series.ppd*
Samsung_C3010_Series.ppd* Samsung_ML-2150_Series.ppd*
Samsung_C3060_Series.ppd* Samsung_ML-2160_Series.ppd*
Samsung_C351x_Series.ppd* Samsung_ML-2240_Series.ppd*
Samsung_C401x_Series.ppd* Samsung_ML-2245_Series.ppd*
Samsung_C406x_Series.ppd* Samsung_ML-2250_Series.ppd*
Samsung_C410_Series.ppd* Samsung_ML-2510_Series.ppd*
Samsung_C420_Series.ppd* Samsung_ML-2525W_Series.ppd*
Samsung_C43x_Series.ppd* Samsung_ML-2540_Series.ppd*
Samsung_C460_Series.ppd* Samsung_ML-2550_Series.ppd*
Samsung_C470_Series.ppd* Samsung_ML-2570_Series.ppd*
Samsung_C4820_Series.ppd* Samsung_ML-2580_Series.ppd*
Samsung_C48x_Series.ppd* Samsung_ML-2850_Series.ppd*
Samsung_CLP-300_Series.ppd* Samsung_ML-2853_Series.ppd*
Samsung_CLP-310_Series.ppd* Samsung_ML-2855_Series.ppd*
Samsung_CLP-320_Series.ppd* Samsung_ML-2950_Series.ppd*
Samsung_CLP-350_Series.ppd* Samsung_ML-3050_Series.ppd*
Samsung_CLP-360_Series.ppd* Samsung_ML-3300_Series.ppd*
Samsung_CLP-410_Series.ppd* Samsung_ML-331x_Series.ppd*
Samsung_CLP-600_Series.ppd* Samsung_ML-3470_Series.ppd*
Samsung_CLP-610_Series.ppd* Samsung_ML-3475_Series.ppd*
Samsung_CLP-620_Series.ppd* Samsung_ML-3560_Series.ppd*
Samsung_CLP-660_Series.ppd* Samsung_ML-371x_Series.ppd*
Samsung_CLP-670_Series.ppd* Samsung_ML-375x_Series.ppd*
Samsung_CLP-680_Series.ppd* Samsung_ML-4050_Series.ppd*
Samsung_CLP-770_Series.ppd* Samsung_ML-4055_Series.ppd*
Samsung_CLP-775_Series.ppd* Samsung_ML-451x_501x_Series.ppd*
Samsung_CLX-216x_Series.ppd* Samsung_ML-4550_Series.ppd*
Samsung_CLX-3160_Series.ppd* Samsung_ML-4555_Series.ppd*
Samsung_CLX-3170_Series.ppd* Samsung_ML-551x_651x_Series.ppd*
Samsung_CLX-3180_Series.ppd* Samsung_ML-8850_8950_Series.ppd*
Samsung_CLX-3300_Series.ppd* Samsung_ML-8x00_Series.ppd*
Samsung_CLX-4190_Series.ppd* Samsung_SCX-3200_Series.ppd*
Samsung_CLX-6200_Series.ppd* Samsung_SCX-3400_Series.ppd*
Samsung_CLX-6220_Series.ppd* Samsung_SCX-4100_Series.ppd*
Samsung_CLX-6240_Series.ppd* Samsung_SCX-4200_Series.ppd*
Samsung_CLX-6250_Series.ppd* Samsung_SCX-4300_Series.ppd*
Samsung_CLX-6260_Series.ppd* Samsung_SCX-4500W_Series.ppd*
Samsung_CLX-8380_Series.ppd* Samsung_SCX-4500_Series.ppd*
Samsung_CLX-8385X_Series.ppd* Samsung_SCX-4600_Series.ppd*
Samsung_CLX-8385_Series.ppd* Samsung_SCX-4623FW_Series.ppd*
Samsung_CLX-8540_Series.ppd* Samsung_SCX-4623_Series.ppd*
Samsung_CLX-8640_8650_Series.ppd* Samsung_SCX-4650_4x21S_Series.ppd*
Samsung_CLX-9250_9350_Series.ppd* Samsung_SCX-470x_Series.ppd*
Samsung_CLX-9252_9352_Series.ppd* Samsung_SCX-4725_Series.ppd*
Samsung_CLX-92x1_93x1_Series.ppd* Samsung_SCX-472x_Series.ppd*
Samsung_CLX-981x_Series.ppd* Samsung_SCX-483x_5x3x_Series.ppd*
Samsung_CLX-982x_Series.ppd* Samsung_SCX-4x16_Series.ppd*
Samsung_K2200_Series.ppd* Samsung_SCX-4x20_Series.ppd*
Samsung_K302_Series.ppd* Samsung_SCX-4x21_Series.ppd*
Samsung_K3250_Series.ppd* Samsung_SCX-4x24_Series.ppd*
Samsung_K401_Series.ppd* Samsung_SCX-4x25_Series.ppd*
Samsung_K4350_Series.ppd* Samsung_SCX-4x26_Series.ppd*
Samsung_K703_Series.ppd* Samsung_SCX-4x28_Series.ppd*
Samsung_K7600_Series.ppd* Samsung_SCX-5635_Series.ppd*
Samsung_M2020_Series.ppd* Samsung_SCX-5835_5935X_Series.ppd*
Samsung_M2070_Series.ppd* Samsung_SCX-5835_5935_Series.ppd*
Samsung_M262x_282x_Series.ppd* Samsung_SCX-5x30_Series.ppd*
Samsung_M267x_287x_Series.ppd* Samsung_SCX-6545X_Series.ppd*
Samsung_M283x_Series.ppd* Samsung_SCX-6545_Series.ppd*
Samsung_M288x_Series.ppd* Samsung_SCX-681x_Series.ppd*
Samsung_M301x_Series.ppd* Samsung_SCX-6x20_Series.ppd*
Samsung_M306x_Series.ppd* Samsung_SCX-6x22_Series.ppd*
Samsung_M332x_382x_402x_Series.ppd* Samsung_SCX-6x45_Series.ppd*
Samsung_M337x_387x_407x_Series.ppd* Samsung_SCX-6x55X_Series.ppd*
Samsung_M403x_Series.ppd* Samsung_SCX-6x55_Series.ppd*
Samsung_M408x_Series.ppd* Samsung_SCX-8030_8040_Series.ppd*
Samsung_M4370_5370_Series.ppd* Samsung_SCX-8123_8128_Series.ppd*
Samsung_M453x_Series.ppd* Samsung_SCX-8230_8240_Series.ppd*
Samsung_M458x_Series.ppd* Samsung_SCX-881x_Series.ppd*
Samsung_M5270_Series.ppd* Samsung_SCX-882x_Series.ppd*
Samsung_M536x_Series.ppd* Samsung_SF-760_Series.ppd*
Samsung_MFP_560_Series.ppd* Samsung_X3220_Series.ppd*
Samsung_MFP_65x_Series.ppd* Samsung_X401_Series.ppd*
Samsung_MFP_750_Series.ppd* Samsung_X4300_Series.ppd*
Samsung_ML-1520_Series.ppd* Samsung_X703_Series.ppd*
Samsung_ML-1610_Series.ppd* Samsung_X7600_Series.ppd*
Samsung_ML-1630W_Series.ppd* cms/
Samsung_ML-1630_Series.ppd*
./uld/noarch/share/ppd/cms:
./ CLP-320sc.cts* CLX-3160sc.cts* M262xsc.cts* M337xsc.cts* SCX-472xsc.cts*
../ CLP-360sc.cts* CLX-3170sc.cts* M267xsc.cts* ML-2160sc.cts* SF-760sc.cts*
C410sc.cts* CLP-600sc.cts* CLX-3180sc.cts* M283xsc.cts* ML-2540sc.cts*
C420sc.cts* CLP-610sc.cts* CLX-6220sc.cts* M288xsc.cts* ML-2950sc.cts*
C43xsc.cts* CLP-620sc.cts* K2200sc.cts* M301xsc.cts* SCX-3400sc.cts*
CLP-300sc.cts* CLP-660sc.cts* M2020sc.cts* M306xsc.cts* SCX-4650sc.cts*
CLP-310sc.cts* CLX-216xsc.cts* M2070sc.cts* M332xsc.cts* SCX-470xsc.cts*
./uld/x86_64:
./ gettext* libscmssc.so* rastertospl* usbresetter*
../ libsane-smfp.so.1.0.1* pstosecps* smfpnetdiscovery*
Пример одного из install.sh:
Код: Выделить всё
#!/bin/sh
SCRIPTS_DIR="$(dirname "$0")"
# load 'scripting' run-time support utility functions
. "${SCRIPTS_DIR}/scripting_utils"
# load 'package' run-time support utility functions
. "${SCRIPTS_DIR}/package_utils"
#. "${SCRIPTS_DIR}/packet.sh"
environment_init $(basename "$0" ".sh")
if [ $# -ne 1 ] ; then
show_nls_message "**** Usage: \${0} package"
exit 1
fi
load_package "$1"
MISSING_REQUIREMENTS="$(get_missing_requirements)"
log_variable MISSING_REQUIREMENTS
if [ -n "${MISSING_REQUIREMENTS}" ] ; then
report_missing_requirements "${MISSING_REQUIREMENTS}"
exit 1
fi
IS_INSTALL_NECESSARY="$(isInstallNecessary)"
log_variable IS_INSTALL_NECESSARY
if ! ${IS_INSTALL_NECESSARY} ; then
report_no_install_reason
log_message "Skipping package '${PACKAGE_NAME}'/'$(dist_version)' installation since version '$(version)' is already installed"
exit 0
fi
if ! have_root_permissions ; then
show_nls_message "**** Root privileges are required"
exit 1
fi
# attempt to install dependencies
DEPENDENCIES="$(dependencies)"
log_variable DEPENDENCIES
for DEPENDENCY in ${DEPENDENCIES} ; do
log_message "invoking: ${SCRIPTS_DIR}/package_install.sh" "${DEPENDENCY}"
if ! "${SCRIPTS_DIR}/package_install.sh" "${DEPENDENCY}" ; then
log_message "dependency installation failure"
exit 1
fi
done
log_message "removing previously installed files (if present)"
remove_package_files
# register package as dependency
register_dependency
# package specific install
log_message "installing package"
do_install
# install version file (if available)
DIST_VERSION_FILE="$(_dist_version_file "${PACKAGE_NAME}" "${PACKAGE_SUFFIX}")"
log_variable DIST_VERSION_FILE
if [ -r "${DIST_VERSION_FILE}" ] ; then
VERSION_FILE="$(_version_file "${PACKAGE_NAME}" "${PACKAGE_SUFFIX}")"
log_variable VERSION_FILE
install_p "${DIST_VERSION_FILE}" "${VERSION_FILE}" 2>&1 | log_redirected_output
else
log_message "'${DIST_VERSION_FILE}' is unavailable"
fi
# report end of install
after_install
log_message "finished"
Что мне это дало или должно было дать, я честно говоря не понял. Открыл cups указал файл ppd.
Принтер написал что он готов, но при отправке на печать ругался на отсутствие файла - rastertospl.
Скопировал я его,от root, в папку /usr/libs64/cups/filter, ошибка пропала, но получил теперь ошибку "filter failed"
В логах увидел следующее:
Код: Выделить всё
D [28/Nov/2020:16:19:38 +0300] [Job 4] Dictionary stack:
D [28/Nov/2020:16:19:38 +0300] [Job 4] --dict:739/1123(ro)(G)-- --dict:1/20(G)-- --dict:80/200(L)-- --dict:80/200(L)-- --dict:133/256(ro)(G)-- --dict:318/325(ro)(G)-- --dict:33/64(L)-- --dict:6/9(L)-- --dict:6/20(L)--
D [28/Nov/2020:16:19:38 +0300] [Job 4] Current allocation mode is local
D [28/Nov/2020:16:19:38 +0300] [Job 4] Last OS error: Broken pipe
D [28/Nov/2020:16:19:38 +0300] [Job 4] GPL Ghostscript 9.53.3: Unrecoverable error, exit code 1
D [28/Nov/2020:16:19:38 +0300] [Job 4] Rendering completed
D [28/Nov/2020:16:19:38 +0300] [Job 4] PID 3568 (/usr/lib64/cups/filter/gstoraster) stopped with status 1.
D [28/Nov/2020:16:19:38 +0300] [Job 4] Hint: Try setting the LogLevel to "debug" to find out more.
D [28/Nov/2020:16:19:38 +0300] [Job 4] Waiting for read thread to exit...
D [28/Nov/2020:16:19:38 +0300] [Job 4] Read thread still active, aborting the pending read...
D [28/Nov/2020:16:19:38 +0300] [Job 4] Resetting printer.
D [28/Nov/2020:16:19:38 +0300] [Job 4] PID 3570 (/usr/lib64/cups/backend/usb) exited with no errors.
D [28/Nov/2020:16:19:38 +0300] [Job 4] End of messages
D [28/Nov/2020:16:19:38 +0300] [Job 4] printer-state=3(idle)
D [28/Nov/2020:16:19:38 +0300] [Job 4] printer-state-message="Rendering completed"
D [28/Nov/2020:16:19:38 +0300] [Job 4] printer-state-reasons=none
Сканер, если верить этому
не поддерживается совсем. sane его не находит, в группу scanner пользователь добавлен. Что в таком случае дают драйвера,я так же не понял.
Правда вопрос чем он его считает, SCX-4x16 или 4200 Series, как указано в файле ppd принтера.
lsusb пишет это:
Код: Выделить всё
Bus 001 Device 004: ID 04e8:3409 Samsung Electronics Co., Ltd SCX-4216F Scanner
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Установка МФУ
Либ каких-нибудь, небось, не хватает. Попробуйте его руками запустить, что скажет?
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Установка МФУ
Bizdelnick
а что вы имеете в виду под руками? с консоли?
Мне тут подумалось что наверно мне перед сборкой в пакет Slackware, нужно было выполнить установку драйвера во временный каталог...
И уже потом собирать пакет Slackware. Т.к папка х86_64 осталась без дела, в моем варианте сборки... Хотя не уверен что оно бы установилось, надо пробовать.
а что вы имеете в виду под руками? с консоли?
Мне тут подумалось что наверно мне перед сборкой в пакет Slackware, нужно было выполнить установку драйвера во временный каталог...
И уже потом собирать пакет Slackware. Т.к папка х86_64 осталась без дела, в моем варианте сборки... Хотя не уверен что оно бы установилось, надо пробовать.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Установка МФУ
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Установка МФУ
Bizdelnick, в ручном режиме он пишет:
А в очереди так же про "filter failed"
С установкой драйверов не понятно мне.
По логике если оно у меня не работает с установленными драйверами, значит я что-то не так сделал. Readme бы какой прикрутили, как-то не хочется мне скрипты, которые не ясно куда и что поставят запускать. Особенно учитывая что драйвер 2017г, может он вообще не должен у меня устанавливаться.
Код: Выделить всё
id запроса Samsung_SCX-4x16_Series-6 (1 файл.)
С установкой драйверов не понятно мне.
По логике если оно у меня не работает с установленными драйверами, значит я что-то не так сделал. Readme бы какой прикрутили, как-то не хочется мне скрипты, которые не ясно куда и что поставят запускать. Особенно учитывая что драйвер 2017г, может он вообще не должен у меня устанавливаться.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Установка МФУ
Ну препарируйте этот скрипт и разберитесь, что и куда он ставит.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Расскажите, как создавали пакет.
Чисто физически это должно было создать нужные структуры каталогов и раскидать туда файлы,
попутно выставив права доступа и т.п.
В этом нет ничего удивительного. Создатели sane не имеют возможности проверить все существующие на свете аппараты и добавить их поддержку.
Поддержка добавляется либо производителями устройств, либо пользователями, у кого есть такие устройства.
В самом простом случае берется блоб - бинарный файл с фирменной начинкой (прошивка, условно говоря) и скармливается sane.
После этого sane имеет возможность нормально общаться с аппаратом.
Но это возможно только в случае, если в sane существует драйвер для данного класса устройств.
Тогда работа с конкретными устройствами данного класса происходит с использованием этих прошивок.
Если же производитель всё-таки озаботился созданием драйверов сканера под Linux, то вполне вероятно,
предполагается использование sane. В этом случае при установке "фирменного драйвера" в систему добавляются нужные библиотеки, блобы и пр., и всё это хозяйство взаимодействует с sane.
Драйвера дают ту самую поддержку устройства в Linux, которой изначально нету.
Вообще, да. Немного не с того конца.
Скрипты запускать не советую, по крайней мере, на боевой системе.
Лучше в контейнере/виртуалке.
Я бы создал слакбилд, который раскидывает файлы по каталогам так, как это принято в системе.
Ну или так, как это делают скрипты. Там создается структура каталогов в /opt/ и туда раскидываются бинарные файлы, ppd и пр.
А вот куда это всё раскидывается по итогам установки Вашего пакета - это вопрос интересный.
Re: Установка МФУ
Зашел в папку /noarch и выполнил команду sudo makepkg <название создаваемого пакета>.
Я подумал что он будет ругаться, если пакет создать не удастся,но он создался.
Установить его во временный каталог,с помощию make install предварительно не вышло. Точно файлы попадают в /usr/share и что-то в /etc.
Уходят ли куда-то файлы из папки x86_64 не знаю, думаю что нет. Readme там нет, make тоже нет.
Как в таком случае создаются пакеты Slackware правильно? Это и не исходник и даже не перепаковка?
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Понятно. Что бы ему не создаться-то? Создастся, только бестолковый.
Он тупо упаковал содержимое каталога noarch в формат пакета tgz. Вот и всё.
Причем, упаковал "как есть": эти вот скрипты попали в пакет, текст лицензии (нафиг оно не надо).
Структура каталогов создавалась? Нет. Значит, всё попадает в корень.
Единственное, что при таком раскладе оказывается более-менее на своём месте - каталог etc, поскольку он действительно должен быть в корне.
Бинарники/конфиги копировались в правильные места? Нет. Значит, они вообще в пакет не попадают, поскольку они расположены не в noarch, а в соседнем каталоге.
Естественно, оно в итоге не работает: ни одного бинарника нет.
Там нет make-файла, поэтому make не поможет.
Как я уже сказал, никуда не уходят: они вообще в другом каталоге, который при создании пакета
даже не затрагивался.
Вручную. Создаем слакбилд, в котором предварительно создаются все нужные каталоги,
а потом туда копируются файлы. Это тупо команды mkdir и cp. Ну или install, если больше нравится.
Я могу попробовать создать, но у меня устройства нет, поэтому проверять не на чем.
Да, это не исходник. Но это упаковка.
Посмотрите любой слакбилд, что там происходит с файлами документации.
Ровно это и происходит: создание каталогов и копирование.
Или посмотрите какой-нибудь слакбилд закрытой софтины (типа браузера Opera).
Там сплошные бинарники и всё что нужно сделать - раскидать их по местам - то же самое: создание каталогов и копирование.
Да, кстати.
В данном конкретном случае, может оказаться, что нужно воспроизвести структуру каталогов, которую создают скрипты. Здесь уже готовые бинарники, как они компилировались, мы не знаем. И где эти бинарники намерены друг друга искать, мы тоже не знаем. Поэтому размещение их по стандартным путям в системе может не сработать (хотя попробовать, конечно, можно). Достоверно я этого не знаю, разумеется. Просто этот вот момент с путями надо иметь в виду.
Re: Установка МФУ
По Слакбилду я хотя бы понимаю куда и что ставится. Здесь же конкретного пути нет. Или я не понял где это смотреть.Hephaestus писал: ↑29.11.2020 14:57Да, это не исходник. Но это упаковка.
Посмотрите любой слакбилд, что там происходит с файлами документации.
Ровно это и происходит: создание каталогов и копирование.
Я такую задачу пока не осилю, я смотрел в эти скрипты, понимаю что он какие-то переменные дергает с PATH, что - то он хочет положить в /opt, так по-крайней мере показал bash -x. Но как из этого сформировать нужную мне структура каталогов я не понял.Hephaestus писал: ↑29.11.2020 14:57Я могу попробовать создать, но у меня устройства нет, поэтому проверять не на чем.
Если есть время/желание - посмотрите.
Но честно говоря это уже выходит за рамки форумной помощи и мне не очень удобно о таком просить.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
UnixNoob
Ну, вот примерно так. Решение, можно сказать, в лоб.
Создаются каталоги, раскидываются файлы, выставляются права.
Создаются симлинки, генерится конфиг.
Поскольку устройства у меня нет, ставить собранный пакет мне бессмысленно.
Возможно, я что-то упустил, но с виду всё нормально.
Тем не менее, это ещё не всё.
В оригинальных скриптах ещё выполняется генерация файлов для udev.
В принципе, нужный кусок можно выдернуть прямо из скрипта
и воткнуть в doinst.sh, но это я не пробовал. Там надо посмотреть, что к чему.
Попробуйте пока этот вариант. Возможно, что-то и взлетит.
Насчет правил udev подумаем.
Ну, вот примерно так. Решение, можно сказать, в лоб.
Создаются каталоги, раскидываются файлы, выставляются права.
Создаются симлинки, генерится конфиг.
Поскольку устройства у меня нет, ставить собранный пакет мне бессмысленно.
Возможно, я что-то упустил, но с виду всё нормально.
Тем не менее, это ещё не всё.
В оригинальных скриптах ещё выполняется генерация файлов для udev.
В принципе, нужный кусок можно выдернуть прямо из скрипта
и воткнуть в doinst.sh, но это я не пробовал. Там надо посмотреть, что к чему.
Попробуйте пока этот вариант. Возможно, что-то и взлетит.
Насчет правил udev подумаем.
Re: Установка МФУ
Hephaestus спасибо большое, попробую - отпишусь.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Re: Установка МФУ
Hephaestus
Принтер заработал.
Сканер по команде sane-find-scanner пишет:
А scanimage - L выдает это:
При открытии xsane в названии окна видно что он нашел сканер, так же при открытии Load Device settings он сам открывает путь к файлу .drc,
но при нажатии кнопки scan пишет:
Кратенько порядок действий, если вас не затруднит. Потому что я смотрел в install.sh и package_install.sh и не понял куда и что
Принтер заработал.
Сканер по команде sane-find-scanner пишет:
Код: Выделить всё
# Your USB scanner was (probably) detected. It may or may not be supported by
# SANE. Try scanimage -L and read the backend's manpage.
Код: Выделить всё
device `smfp:usb;04e8;3409;6758-04020434815' is a Samsung SCX-4x16 Series on USB Scanner
но при нажатии кнопки scan пишет:
А откуда вы узнали вот это все:Failed to start scanner. Error during device I/O.
Код: Выделить всё
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/
mkdir -p $PKG/opt/samsung/printer/share/ppd/cms
mkdir -p $PKG/opt/smfp-common/printer/{lib,bin}/
mkdir -p $PKG/opt/smfp-common/scanner/lib/
mkdir -p $PKG/opt/smfp-common/scanner/share/locale/fr/
mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/cups/backend
mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/cups/filter
mkdir -p $PKG/usr/share/locale/fr/LC_MESSAGES/
#cp -R noarch/share/ppd $PKG/opt/samsung/printer/share
install -m644 noarch/share/ppd/*.ppd $PKG/opt/samsung/printer/share/ppd
install -m644 noarch/share/ppd/cms/* $PKG/opt/samsung/printer/share/ppd/cms
install -m755 $ARCH/libscmssc.so $PKG/opt/smfp-common/printer/lib/
install -m755 $ARCH/pstosecps $PKG/opt/smfp-common/printer/bin/
install -m755 $ARCH/rastertospl $PKG/opt/smfp-common/printer/bin/
install -m755 $ARCH/smfpnetdiscovery $PKG/opt/smfp-common/printer/bin/
install -m755 $ARCH/libsane-smfp.so.1.0.1 $PKG/opt/smfp-common/scanner/lib/
install -m644 noarch/share/locale/fr/LC_MESSAGES/sane-smfp.mo $PKG/opt/smfp-common/scanner/share/locale/fr/
install -m644 noarch/pagesize.xml $PKG/opt/smfp-common/scanner/share/
install -m644 noarch/libsane-smfp.cfg $PKG/opt/smfp-common/scanner/share/
install -m644 noarch/oem.conf $PKG/opt/smfp-common/scanner/share/
install -m644 noarch/etc/smfp.conf $PKG/$SANE_CONF_DIR/smfp-samsung.conf
ln -sf "/opt/smfp-common/printer/bin/smfpnetdiscovery" "$PKG/usr/lib${LIBDIRSUFFIX}/cups/backend"
ln -sf "/opt/smfp-common/printer/bin/rastertospl" "$PKG/usr/lib${LIBDIRSUFFIX}/cups/filter"
ln -sf "/opt/smfp-common/printer/bin/pstosecps" "$PKG/usr/lib${LIBDIRSUFFIX}/cups/filter"
ln -sf "$SANE_DIR"/libsane-smfp.so.1 "$PKG/$SANE_DIR"/libsane-smfp.so
ln -sf "$SANE_DIR"/libsane-smfp.so.1.0.1 "$PKG/$SANE_DIR"/libsane-smfp.so.1
ln -sf "/opt/smfp-common/scanner/lib/libsane-smfp.so.1.0.1" "$PKG/$SANE_DIR"
ln -sf "/opt/smfp-common/scanner/share/locale/fr/sane-smfp.mo" "$PKG/usr/share/locale/fr/LC_MESSAGES/"
cat <<EOF >$PKG/$SANE_CONF_DLL_DIR/smfp.conf
smfp
EOF
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
На самом деле всё невероятно просто.
Я пошел по пути наименьшего сопротивления и запустил скрипты в контейнере.
Подменил в скрипте каталог назначения, чтобы установка прошла "в чистый каталог".
Таким образом стало известно, какие файлы куда ставятся.
Это всё не сразу, а по итогам нескольких запусков install/uninstall.
Потом я выставил в некоторых местах set -x, чтобы был отладочный вывод на экран.
Далее, я обратил внимание на сообщения типа "Registering CUPS backend" ("Registering SANE backend") во время установки.
Прошерстив скрипты на предмет этих сообщений, нашел соответствующие функции.
Выставляя выборочно set -x в функциях, смотрел, что происходит в скрипте.
Таким образом, было выявлено остальное: симлинки, редактирование конфигов и пр.
Если действовать чисто аналитическим путем (без запуска скриптов), будет примерно то же самое,
только дольше: нужно смотреть скрипты от стартового и вглубь. Встретив вызов функции, искать в скриптах её реализацию и смотреть, что она делает. Просмотр отладочной информации в процессе выполнения проще в том смысле, что можно видеть уже присвоенные значения переменных. В самом скрипте не всегда понятно, чему равна переменная.
Кстати, обычный запуск этих скриптов завершится с ошибкой: не отрабатывает mktemp. Пришлось подправить.
Нужно смотреть дальше: printer.pkg. Там внутри функция do_install(), из которой
вызывается install_base_files(). Вот в ней как раз раскидывание файлов по каталогам (для принтера).
Для сканера всё аналогично в файле scanner.pkg.
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Мда. Я подозреваю, что у Вас отсутствует файл устройства /dev/scanner или подобный.
А вообще, не исключено, что устройств в системе должно быть два: принтер и сканер,
потому что CUPS ничего не знает о сканерах, а SANE ни сном, ни духом о существовании принтеров.
Поскольку с udev мы ничего не делали, то устройство сейчас в лучшем случае одно.
Если SANE пытается обращаться к устройству, которое на самом деле принтер, то понятно, что будет ошибка.
Но это всё домыслы. В режиме экстрасенса сложновато анализировать ситуацию.
Реальную картину видно только Вам.
Короче, надо бы дожать правила udev.
Причем, не обязательно именно те, которые генерируются в скриптах, хотя и их тоже.
Правила udev там в основном для "горячего подключения" устройства.
А в данном случае они представляют интерес с точки зрения создания файлов устройств
и присвоения всяких там "правильных" имен.
Кстати, нажатие кнопки scan - это же в программе? Или на аппарате?
Аппаратная, скорее всего, сейчас не работает, но кто знает...
Re: Установка МФУ
Да уж, проще не придумаешь.
Это docker или что-то родное из linux?Hephaestus писал: ↑30.11.2020 01:07Я пошел по пути наименьшего сопротивления и запустил скрипты в контейнере.
Посмотрю.Hephaestus писал: ↑30.11.2020 01:07Нужно смотреть дальше: printer.pkg. Там внутри функция do_install(), из которой
вызывается install_base_files(). Вот в ней как раз раскидывание файлов по каталогам (для принтера).
А он должен быть? Или появиться после установки драйвера?Hephaestus писал: ↑30.11.2020 08:22Мда. Я подозреваю, что у Вас отсутствует файл устройства /dev/scanner или подобный.
Я с радостью, куда смотреть?
Программы, на аппарате нет отдельно кнопки сканирования, только режим копира, для этого ПК не нужен совсем.Hephaestus писал: ↑30.11.2020 08:22Кстати, нажатие кнопки scan - это же в программе? Или на аппарате?
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Просто, в том смысле, что никаких чудес.
Берем картину мироздания
и тупо смотрим, что к чему (c).
В смысле, берем скрипты, разбираем по косточкам, пишем свои.
Эдакий "анализ и синтез", да.
На самом деле это всё проще, чем кажется на первый взгляд.
Ну, какой-то файл должен быть. Иначе как обращаться к устройству? По идее, появление файла устройства происходит при загрузке драйвера в память.
От udev это не зависит. Но udev может помочь в другом: выставить права доступа, выполнить команду (или вызвать скрипт), присвоить более удобное имя (или создать симлинк).
Вывод scanimage -L должен показать нечто такое
smfp:/dev/scanner0
А в Вашем случае вместо этого мы видим
то есть вместо имени файла VID/PID и серийный номер, судя по всему.
Запуск сканирования из командной строки выглядит как-то так:
scanimage backend:/dev/scanner --format pnm > outfile.pnm
то есть для Вашего аппарата по идее должно быть так:
scanimage smfp:/dev/scanner --format pnm > outfile.pnm
А с учетом имеющихся данных получается как-то так:
scanimage `smfp:usb;04e8;3409;6758-04020434815' --format pnm > outfile.pnm
я собственно, даже не соображу, как это правильно записать.
Не знаю, поможет ли здесь udev(думаю, можно его заставить), но в некоторых conf-файлах прописано имя /dev/scanner. Возможно, это стоит сделать, но целевой conf-файл слишком уж отличается от всех прочих. Так что здесь пока неясно.
Да, кстати, оригинальные скрипты редактируют dll.conf: добавляют туда строку "smfp", и "отключают" строку "geniusvp2". Я сделал немного иначе: создал отдельный файл и поместил его в подкаталог dll.d.
Почему так? Создать новый файл при установке пакета и удалить этот файл при удалении пакета - это проще, чем редактировать существующий файл при установке пакета, а потом "вертать взад" при удалении пакета.
Так вот, dll.conf я не трогал и соответственно, наличие строки "geniusvp2" не проверял. На что она влияет, судить не берусь. В моих файлах такой строки нет, но тем не менее.
Да всё туда же - в скрипты.
Если есть энтузиазм, можете эту маленькую задачу решить в качестве упражнения на "анализ и синтез".
Итак, задача: Вытащить из скрипта кусок кода, который генерирует файл правил udev на основе шаблона.
Полученный кусок кода изменить таким образом, чтобы его можно было вставить в SlackBuild, например.
Это значит, что нужно оставить только значимую часть кода, убрав всю обвязку (сопутствующие функции, запись логов, словом всё, что не имеет отношения к слакбилду).
Отправная точка: модуль scanner-script.pkg, функция fill_full_template().
Инструменты: терминал, любимый текстовый редактор, grep (больше вроде бы ничего не нужно).
Сам файл правил udev, как оказалось, не содержит ничего интересного - всего лишь присваивает владельца/группу и выставляет права доступа. Я ожидал большего, честно говоря. С учетом того, что вместо имени файла устройства выводится всякая техническая премудрость, возможно имеет смысл запрячь udev на предмет присвоения имени или создания симлинка.
Вариант файла правил udev, как он создается оригинальными скриптами, представлен под спойлером.
Насколько я понимаю, он всегда выходит одинаковый.
В общем-то, можно не заморачиваться с генерацией, а взять его "как есть".
Spoiler
Код: Выделить всё
# This file is a part of Unified Linux Driver
# Rules to allow low level USB device access for smfpautoconf
#
# For new distributions,
# Permissions and group are set according to common libsane rules
#
ACTION!="add", GOTO="smfp_label_end"
# Check device type
ENV{DEVTYPE}=="usb_device", GOTO="smfp_create_usb_dev"
# Check SUBSYSTEM (should be either "usb" or "usb_device")
SUBSYSTEM=="usb", GOTO="smfp_create_usb_dev"
SUBSYSTEM=="usb_device", GOTO="smfp_create_usb_dev"
GOTO="smfp_label_end"
LABEL="smfp_create_usb_dev"
# Check Vendor ID
ATTR{idVendor}!="04e8", GOTO="smfp_label_end"
ATTRS{idProduct}=="3425", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="341c", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="342a", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="343d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3456", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="345a", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3427", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="343a", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3428", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="343b", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3455", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3421", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3439", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3444", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="343f", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="344e", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3431", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="345c", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="344d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3462", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3464", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3461", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3460", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="340e", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3435", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="340f", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3441", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="344f", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3413", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="341b", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="342e", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3426", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="342b", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3433", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3440", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3434", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="345b", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3457", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="341f", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3453", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="344b", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3409", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3412", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3419", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="342c", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="343c", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3432", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="342d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3430", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="342f", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3446", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="341a", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3437", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3442", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3466", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="340d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="341d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3420", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3429", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3443", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3438", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="344c", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="345d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3463", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3465", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3450", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3468", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3469", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3467", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="346b", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="346a", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="346e", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3471", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3472", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="347d", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="347c", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="347e", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3481", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3482", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3331", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3332", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3483", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3484", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3485", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3478", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3325", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3327", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="346f", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3477", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3324", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3326", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3486", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3487", ENV{libsane_matched}="yes"
ATTRS{idProduct}=="3489", ENV{libsane_matched}="yes"
ENV{libsane_matched}=="yes", OWNER="root", MODE="664", GROUP="lp"
LABEL="smfp_label_end"
Re: Установка МФУ
Посмотрю на днях, отпишусь потом о результатах.Hephaestus писал: ↑30.11.2020 22:57Если есть энтузиазм, можете эту маленькую задачу решить в качестве упражнения на "анализ и синтез".
Итак, задача: Вытащить из скрипта кусок кода, который генерирует файл правил udev на основе шаблона.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Re: Установка МФУ
Посмотрел немного файлы.Hephaestus писал: ↑30.11.2020 22:57Вариант файла правил udev, как он создается оригинальными скриптами, представлен под спойлером.
Насколько я понимаю, он всегда выходит одинаковый.
Он извлекает из sane.rules имя я так понял, для будущего файла rules.
Код: Выделить всё
80 RULES=$(ls /etc/udev/rules.d/*sane*.rules /lib/udev/rules.d/*sane*.rules 2>/dev/null)
181 NUMBER=100
182 for RULE in ${RULES}
183 do
184 RULE=$(basename ${RULE})
185 CUT1=$(echo ${RULE} | cut -f1 -d'-')
186 if [ ${#RULE} -ne ${#CUT1} ]; then
187 NUM=$CUT1
188 else
189 CUT1=$(echo ${RULE} | cut -f1 -d'_')
190 if [ ${#RULE} -ne ${#CUT1} ]; then
191 NUM=$CUT1
192 fi
193 fi
194 if [ ${NUMBER} -gt ${NUM} ]; then
195 NUMBER=${NUM}
196 fi
197 done
198 RULE_NUMBER=$((NUMBER-1))
Т.е получается мне надо создать файл smfp.rules и положить в /etc/udev/rules.d
Только там еще правила HAL создаются дальше и hotplug. Но hotplug я так понял не обязателен, а вот на счет hal не знаю.
Еще я что-то в /dev/ и принтера то не нашел. Но я так понял для него они не создаются, все только с cups связано.
Я конечно не знаю как ребята с HP предполагают это устанавливать в Linux. Сейчас еще у одних systemd у других нет.
Надо про контейнеры почитать в итоге. На случай таких вот драйверов и скриптов установки.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Конкретно этот момент я не отслеживал. Меня интересовало содержимое, а не имя.
Имя-то присвоить - вообще не проблема.
Правильно. Вот эту самую генерацию я и предлагал Вам выдернуть из скриптов. В качестве "домашнего задания".
Получиться должно то, что я показывал по спойлером.
Впрочем, как я уже говорил, можно сохранить текст из спойлера в файл и просто включить в пакет.
Поскольку этот файл всегда один и тот же. Хотя я бы его модифицировал. А заодно поэкспериментировал бы с конфигами. Есть там одна идея.
Чего Вы не знаете? Нет его. Сдох он. Уже лет десять как. Последняя версия в апстриме была в 2009 году.
В состав Slackware входил во времена версии 13.37. В 14.0 уже не было.
На смену HAL, кстати, пришел как раз udev. Так что тут и сомневаться нечего.
На кой ляд в этих скриптах предусмотрен вариант для HAL, я не знаю. Скорее всего, тянется ещё с тех времен.
Ну, как? Обыкновенно. Распаковали тарбол, запустили скрипты, всё сгенерировалось/раскидалось, симлинки создались.
А дальше перезапуск - всё должно работать.
Все эти "установщики от производителя" - они практически все такие. Более продвинутые предлагают разные режимы запуска и даже генерируют пакеты под разные дистры.
В данном случае рестарт CUPS в процессе работы скрипта, правда, не сработал, но это в контейнере. В основной системе, может, и сработал бы. Я с этим не разбирался, поскольку для создания пакета это несущественно.
Про контейнеры могу поделиться опытом. В контексте их использования в Slackware.
Re: Установка МФУ
Понятно.
Поделитесь, буду знать в какую сторону смотреть хотя бы, чтобы ознакомиться с вопросом.Hephaestus писал: ↑04.12.2020 07:37Про контейнеры могу поделиться опытом. В контексте их использования в Slackware.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Сначала я остановился на варианте с LXC. В частности потому, что нашлись материалы на русском языке.
Затем, немного вникнув в тему, понял, что лучше запускать непривилегированные контейнеры,
и таким образом перешел к использованию связки LXC/LXD. Разбирался с помощью цикла статей (это не в контексте Slackware, а вообще), плюс на оф. сайте есть некоторые материалы на русском.
Что могу отметить по опыту использования.
Непривилегированный контейнер разворачивается из готового (заранее подготовленного) образа системы.
Образ загружается из Сети. Также можно создать собственный образ. И даже опубликовать его.
Сложность в том, что LXC/LXD изначально заточены под Ubuntu, соответственно, и образы убунтовские (не все, но многие).
Но контейнер - это не виртуальная машина, то есть не полностью изолированная среда. Это, скорее, chroot с дополнительными мерами изоляции. Следовательно, нельзя, скажем, находясь в Slackware, развернуть в контейнере Windows7.
Развернуть Ubuntu, находясь в Slackware, может быть, и можно, но я не пробовал. Точнее, пробовал, но сразу оно не взлетело, а разбираться мне было некстати. Мне нужно было иметь в контейнере Slackware, и я копал в этом направлении.
А раз нужна Slackware, значит, нужен образ Slackware. Один такой образ нашелся, но мне не подошел (уже не помню, почему).
И я создал свой.
Вкратце это так:
Подготавливаем файл нужного размера (пустой). Это будет "диск", на который поставим систему.
Настраиваем chroot к этому "диску" (со всеми сопутствующими манипуляциями).
Устанавливаем Slackware на этот "диск" (в chroot).
Получается такой "виртуальный диск" с установленной системой внутри.
Упаковываем его для создания образа системы под контейнер.
Полученный образ используем для разворачивания контейнера.
Разумеется, нужно подготовить файлы конфигурации контейнера, в которых будут настройки сети, указаны устройства (в том числе наш "диск") и т.п.
При установке системы в chroot нужно не забыть включить туда необходимые пакеты (пакеты можно поставить и позже),
но если есть готовые, лучше включить сразу. Понадобятся базовые настройки системы (создание пользователя, например).
Кроме того, я создал файлы профилей в числе прочего содержащие определенные настройки приглашения командной строки.
Таким образом, в терминале сразу видно, когда мы в контейнере, а когда за пределами.
Также пригодится каталог обмена (share) через него можно будет перекидывать файлы в контейнер и обратно.
О возможных проблемах.
Поскольку LXC/LXD ориентирован на Ubuntu, он хочет systemd, а точнее, cgroup/systemd.
В Slackware этой штуки нет, поэтому для контейнера необходимые элементы создаются.
Вообще, это происходит ещё на этапе установки lxd, но нужно иметь в виду.
По умолчанию используется файловая система zfs.
Но я несколько раз столкнулся с тем, что при очередном запуске контейнера дисковые устройства попросту отсутствовали.
Соответственно, контейнер не запускается. И вместо работы с контейнером начинаешь ковырять zfs.
Лично я грешу на то, что поддержки zfs нет в ядре linux, она подгружается отдельным модулем.
Когда устройства исчезли в очередной раз, я плюнул и перешел к использованию btrfs, которая в этом смысле значительно стабильнее.
В btrfs я вижу ещё и тот плюс, что она представлена файлом на диске. И этот файл можно примонтировать при случае (без запуска контейнера). Насколько я помню, zfs в системе представлена иначе, и прицепиться к ней вне контейнера может быть сложнее (во всяком случае, менее удобно).
Существует мнение, что btrfs старая, нестабильная и вообще, zfs лучше, но я не расположен спорить на эту тему. Я сделал выбор, исходя из практики.
Все эти манипуляции по созданию "виртуального диска", установке системы в chroot, настроек, созданию конфигов для контейнера,
созданию самого контейнера - это довольно много "ручной работы". Мне это быстро надоело и я обернул это дело в скрипты.
Кроме того, бывает нужно разные этапы процесса выполнять по отдельности, то есть только те, которые нужны (скажем, если образ уже создан, не нужно создавать его ещё раз), с этой целью был создан Makefile, который позволяет нормально этим рулить.
Это всё касается LXC/LXD. Насколько это проще (или сложнее), например, в docker, я судить не берусь.
Re: Установка МФУ
Hephaestus
хорошо, спасибо, посмотрю тогда этот вариант и может какое-то сравнение с docker. Про docker я читал и так понял там образы берутся готовые, по-крайней мере по началу, а образ слепок файловой системы. А контейнером там называют запущенное приложение, которое думает что оно работает одно, просто нет гипервизора, как в виртуалке. А вот что считать таким вот "приложением" в задаче установки пакета я пока не понимаю. Но возможно пойму почитав про LXC/LXD.
Я когда вижу что что-то требует systemd иду в gentoo wiki сейчас. Так как там оно на выбор,бывает там какая-то полезная информация встречается. Но думаю это вы все знаете,это так,мысли в слух.
хорошо, спасибо, посмотрю тогда этот вариант и может какое-то сравнение с docker. Про docker я читал и так понял там образы берутся готовые, по-крайней мере по началу, а образ слепок файловой системы. А контейнером там называют запущенное приложение, которое думает что оно работает одно, просто нет гипервизора, как в виртуалке. А вот что считать таким вот "приложением" в задаче установки пакета я пока не понимаю. Но возможно пойму почитав про LXC/LXD.
Я когда вижу что что-то требует systemd иду в gentoo wiki сейчас. Так как там оно на выбор,бывает там какая-то полезная информация встречается. Но думаю это вы все знаете,это так,мысли в слух.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
UnixNoob
Забыл один важный момент.
LXC и LXD - это две части одного инструмента.
LXD - демон, LXC - клиент.
Причем, LXC ставится из официальной репы (и может работать самостоятельно, но это будут привилегированные контейнеры).
А LXD ставится из SBo (и соответственно, работает в паре с LXC, обеспечивая создание непривилегированных конетейнеров).
Так вот, версия LXC в репе - 2.0.9, а версия LXD в SBO - 3.0.1. В какой-то момент это перестало работать в таком сочетании. И мне пришлось собрать пакет LXC версии 3.0.3.
Кроме того, при сборке LXD из SBo у меня была какая-то проблема (что-то там не собиралось, уже не помню, из-за чего) и я накладывал патч.
Так что не исключено, что придется повозиться, но в целом, всё вполне решаемо.
Забыл один важный момент.
LXC и LXD - это две части одного инструмента.
LXD - демон, LXC - клиент.
Причем, LXC ставится из официальной репы (и может работать самостоятельно, но это будут привилегированные контейнеры).
А LXD ставится из SBo (и соответственно, работает в паре с LXC, обеспечивая создание непривилегированных конетейнеров).
Так вот, версия LXC в репе - 2.0.9, а версия LXD в SBO - 3.0.1. В какой-то момент это перестало работать в таком сочетании. И мне пришлось собрать пакет LXC версии 3.0.3.
Кроме того, при сборке LXD из SBo у меня была какая-то проблема (что-то там не собиралось, уже не помню, из-за чего) и я накладывал патч.
Так что не исключено, что придется повозиться, но в целом, всё вполне решаемо.
Re: Установка МФУ
Либо я что-то еще не понимаю, либо какие-то проблемы с xsane и драйверами samsung.
Создал в /etc/udev/rules.d/ файл smfp.rules, перезапустил udev (ну и в процессе поисков было еще парочку перезагрузок), но он как не работал, так и не работает.
Добавлял в /etc/sane.d/dll.conf строчку smfp, ,но в итоге снова ошибка - "Failed to start scanner. Error during device I/O"
В /var/log/syslog падает это:
Пробовал закомментировать "hpio" в /etc/sane.d/dll.conf, в итоге сканнер как-будто готовится сканировать, происходит пару движений и снова та же ошибка failed to start.
После комментирования hpio, в лог еще падает это:
В остальном я не вижу перемен.
scanimage -L:
Или правила нужно создавать как-то сложнее?
Если открыть в /etc/sane.d файл hp.conf:
т.е в случае usb я так понимаю не используется /dev/scanner. Нужно ли udev правило в целом я не знаю.
Не знаю что ему от меня еще хочется, кто-то при решении подобной проблемы на WinXP в виртуалке уходил.
Создал в /etc/udev/rules.d/ файл smfp.rules, перезапустил udev (ну и в процессе поисков было еще парочку перезагрузок), но он как не работал, так и не работает.
Добавлял в /etc/sane.d/dll.conf строчку smfp, ,но в итоге снова ошибка - "Failed to start scanner. Error during device I/O"
В /var/log/syslog падает это:
Код: Выделить всё
xsane: io/hpmud/pp.c 627: unable to read device-id ret=-1
После комментирования hpio, в лог еще падает это:
Код: Выделить всё
Dec 6 18:55:48 darkstar /hp-toolbox: hp-toolbox[2244]: warning: Reportlab not installed. Fax coverpages disabled.
Dec 6 18:55:48 darkstar /hp-toolbox: hp-toolbox[2244]: warning: Please install version 2.0+ of Reportlab for coverpage support.
scanimage -L:
Код: Выделить всё
device `smfp:usb;04e8;3409;6758-04020434815' is a Samsung SCX-4x16 Series on USB Scanner
Если открыть в /etc/sane.d файл hp.conf:
Код: Выделить всё
1 scsi HP
2 # Uncomment the following if you have "Error during device I/O" on SCSI
3 # option dumb-read
4 #
5 # The usual place for a SCSI-scanner on Linux
6 /dev/scanner
7 #
8 # USB-scanners supported by the hp-backend
9 # HP ScanJet 4100C
10 usb 0x03f0 0x0101
11 # HP ScanJet 5200C
12 usb 0x03f0 0x0401
13 # HP ScanJet 62X0C
14 usb 0x03f0 0x0201
15 # HP ScanJet 63X0C
16 usb 0x03f0 0x0601
17 #
18 # Uncomment the following if your scanner is connected by USB,
19 # but you are not using libusb
20 # /dev/usb/scanner0
21 # option connect-device
Не знаю что ему от меня еще хочется, кто-то при решении подобной проблемы на WinXP в виртуалке уходил.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
UnixNoob
Если всё, отработало как нужно, то в каталоге /etc/sane.d/dll.d/ есть файл smfp.conf.
Я писал выше, что в оригинальных скриптах предусмотрено комментирование строки geniusvp2.
Почему? Я не знаю. Вероятно, что-то с чем-то конфликтует. В моей системе такой строки нет, а Вы у себя проверьте. На всякий.
Здесь должен быть файл устройства. Если его нет, то как обращаться к устройству? Непонятно.
Напихаем ли мы туда больше инструкций или меньше - зависит от ситуации.
Как максимум - выполняет дополнительные действия (это для разных устройств - по-разному).
С 3G/4G-модемом, например, без дополнительных действий вообще работать невозможно - он просто не переходит в нужный режим. Со сканерами в этом смысле попроще, но всё равно нюансы могут быть.
Но у Вас есть шанс - scanimage -L обнаруживает устройство (и похоже, что именно то устройство, которое нужно). Осталось добиться нормального взаимодействия с этим устройством.
Сейчас главное - чтобы у Вас энтузиазм не иссяк раньше времени. Впрочем, это ведь Вам нужно, а не кому-то ещё.
Какой именно? Который я предъявлял под спойлером выше? Или ещё какой?
Это излишне. Я в слакбилде предусмотрел этот момент.
Если всё, отработало как нужно, то в каталоге /etc/sane.d/dll.d/ есть файл smfp.conf.
Почему именно эту строчку, а не какую-то другую?
Я писал выше, что в оригинальных скриптах предусмотрено комментирование строки geniusvp2.
Почему? Я не знаю. Вероятно, что-то с чем-то конфликтует. В моей системе такой строки нет, а Вы у себя проверьте. На всякий.
Я бы начал решение проблемы именно с этого. Эта штука не дает мне покоя.
Здесь должен быть файл устройства. Если его нет, то как обращаться к устройству? Непонятно.
Сложнее, чем что? Синтаксис правил всегда один и тот же.
Напихаем ли мы туда больше инструкций или меньше - зависит от ситуации.
Используется. Какой-то файл устройства должен быть в любом случае.
Нужно. Как минимум, выставляет владельца/группу и права доступа.
Как максимум - выполняет дополнительные действия (это для разных устройств - по-разному).
С 3G/4G-модемом, например, без дополнительных действий вообще работать невозможно - он просто не переходит в нужный режим. Со сканерами в этом смысле попроще, но всё равно нюансы могут быть.
Ничего особенного. Эти скрипты сделаны довольно лихо - под все линуксы сразу. Обычно это означает, что без дополнительных манипуляций оно не взлетит нигде - разные версии ядер, разные механизмы инициализации, разный состав библиотек, разные версии sane.
Но у Вас есть шанс - scanimage -L обнаруживает устройство (и похоже, что именно то устройство, которое нужно). Осталось добиться нормального взаимодействия с этим устройством.
Сейчас главное - чтобы у Вас энтузиазм не иссяк раньше времени. Впрочем, это ведь Вам нужно, а не кому-то ещё.
Самы простой вариант, но это скучно.
Re: Установка МФУ
Да, этот.
Есть, но я решил попробовать и в dll.conf попробовать добавить.Hephaestus писал: ↑06.12.2020 20:13Если всё, отработало как нужно, то в каталоге /etc/sane.d/dll.d/ есть файл smfp.conf.
Кому-то в интернете это помогло, при решении похожей проблемы.
Забыл про это, проверю.Hephaestus писал: ↑06.12.2020 20:13Я писал выше, что в оригинальных скриптах предусмотрено комментирование строки geniusvp2.
По адресу шины? Или так нельзя?Hephaestus писал: ↑06.12.2020 20:13Здесь должен быть файл устройства. Если его нет, то как обращаться к устройству? Непонятно.
Ну может ему права доступа нужны или чтобы имя было строго конкретное.
Меня беспокоит не столько мой энтузиазм, сколько вопрос, а решаемо ли это в целом. Может есть какие-то проблемы именно между sane и samsung драйверами, ошибка в логах слишком абстрактная, не указывает ни на что конкретное.Hephaestus писал: ↑06.12.2020 20:13Сейчас главное - чтобы у Вас энтузиазм не иссяк раньше времени. Впрочем, это ведь Вам нужно, а не кому-то ещё.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Установка МФУ
Похожая - не значит, что такая же. Рискну предположить, что там устройство всё-таки было другое.
Или проблема другая.
А какой он - этот адрес шины? И sane знает, что нужно обращаться по адресу шины?
Вот правила udev, которые под спойлером как раз права доступа и выставляют.
Кстати, Вы обратили внимание, что там группа устанавливается как "lp"?.
Это для принтера, скорее всего.
Не исключено, что для сканера нужно что-то иное.
А вот именем стоит заняться. Есть одна мысль, которую стоит проверить.
Изложу ниже.
Я склонен думать, что решаемо. Самое главное: устройство обнаруживается и определяется. Это уже полдела.
Ну почему же? Кое-что извлечь всё-таки можно.
Буквально написано следующее: не могу прочитать идентификатор устройства. И возвращает -1 как признак неудачного завершения (в случае успеха возращался бы 0).
Если идентификатор прочитать невозможно, значит, либо его нет вообще (пустой), либо он есть, но какой-то неправильный. Сама по себе эта ошибка мало что дает, остается надеяться, что это не баг в драйвере, и решение проблемы где-то уровнем выше - в настройках.
А это вообще не ошибка. Это предупреждение о том, что титульные страницы для факса работать не могут без установленного ReportLab версии 2.0 или выше. К Вашей проблеме это относится лишь постольку, поскольку есть у Вас факс.
Что касается имени устройства.
Если посмотреть конфиги в /etc/sane.d/, то можно видеть, что они все устроены примерно одинаково.
Однако файл для Вашего устройства принципиально другой: это xml с каким-то своим содержимым.
Между тем, в файле epson.conf сказано следующее:
То есть существует два способа конфигурации usb-сканера: libusb и модуль ядра.# USB scanner:
# There are two different methods of configuring a USB scanner: libusb and the kernel module
# For any system with libusb support (which is pretty much any recent Linux distribution) the
# following line is sufficient. This however assumes that the connected scanner (or to be more
# accurate, it's device ID) is known to the backend.
Для начала проверьте, создается ли файл устройства (какой-нибудь /dev/scanner0 или /dev/usb/scanner0).
Если нет, то опробуйте следующий вариант.
Существующий в /etc/sane.d/ файл конфига (smfp-samsung.conf) временно уберите куда-нибудь.
И по аналогии с другими файлами создайте для Вашего устройства конфиг smfp.conf такого содержания:
Код: Выделить всё
usb 0x04e8 0x3409
/dev/usb/scanner0
Вы увидите нормальное имя файла. И, может быть, даже что-то заработает.device `smfp:usb;04e8;3409;6758-04020434815'
Если действительно появится имя файла, попробуйте запустить сканирование из командной строки.
Команды я давал выше.