[devel] Usb-modeswitch

Alexey Shabalin a.shabalin на gmail.com
Вт Май 3 15:59:45 MSK 2016


3 мая 2016 г., 14:18 пользователь Hihin Ruslan  написал:
> Создал тестовые задания на новые версии udb-modeswitch
>
> http://git.altlinux.org/tasks/164160/
> http://git.altlinux.org/tasks/164159/
>
Сразу замечания. Обновление апстримных исходников и правку spec'ов
делайте пожалуйста в разных коммитах.

> Требуется ваша консультация, судя по всему программу с udev
> перевесили на systemd.
не увидел никаких перевешиваний на systemd. как все было раньше, так и осталось.
точнее, как не было нормальной поддержки sysv, так и нет :)
зато увидел в usb-modeswitch-data/ChangeLog
"ATTENTION: requires usb-modeswitch version >= 2.3.0"
а в спеке этой зависимости не увидел.

> Всвязи с этим вопросы:
> --------------------------------
> - не правильние-ли оставить правила udev (не везде-же есть
> systemd).
так они же остаются. или нет?
без правил ничего работать не будет. посмотрите на них - правила udev
стартуют сервис.
поэтому специально включать этот сервис не надо.

> - как правильно команды (и какие) вписать в spec, или добавить в
> пакет, что-бы сервис начал подниматься.
все как и раньше. читайте документацию.
- обычно сервисы не должны стартовать самостоятельно при установке
из-за вопросов с безопасность(есть исключения). администратор сам
осознано их включает с помощью chkconfig. должны включаться или нет
сервисы при установке определяется в заголовке инит-скрипта
# chkconfig: - 11 91  - при установке не пропишется в автозагрузке.
надо делать chkconfig foo on
# chkconfig: 345 11 91 - при установке пропишется в автозагрузке на
3,4,5 уровни.

для systemd аналогичный механизм размещается в
/lib/systemd/system-preset/* файлах

в спеках как и раньше достаточно только
%post
%post_service foo

%preun
%preun_service foo



> - нельзя-ли сделать какой-то трюк, что-бы в систему с systemd
> устанавливался-бы сервис, а с SysVinit правило udev (ну или
> демон в rc.d ...).

Стандартный для нас трюк - одинаковое имя сервиса для sysv  и для
systemd (/etc/init.d/foo и /lib/systemd/system/foo.service)
Обычно дополнительных трюков не надо.

Но у вас в данном конкретном случае совсем другой вариант с
использованием usb_modeswitch на .service. таких аналогов под sysv не
существует.

По существу.
- правила udev паковать обязательно. они запускают RUN+="usb_modeswitch '%b/%k'
- usb_modeswitch - определяет работает ли под systemd и запускает
сервис, если нет то запускает команду напрямую без всяких сервисов.

В общем никакой самодеятельности вам предпринимать не надо :)

-- 
Alexey Shabalin


Подробная информация о списке рассылки Devel