Как обычно: ответ зависит. RPMs (или в основном любой данный двоичный контейнер пакета) содержат выполнимый код. Большую часть времени тот код зависит от определенных библиотек или программ, пакет указывает, что действительно, например, зависит от библиотеки libA
в версии> = 1.0.
Теперь возьмите два различных дистрибутива с обоими использованиями об/мин упаковочный формат. скажем, каждый называет пакет libA-1.0 так об/мин, которого Вы имеете, указывает, что он зависит от libA. Второе двоичное распределение имеет другую naimg схему и префиксы пакет с a language
таким образом, это называют language-libA
. Даже если содержание обоих этих libA пакетов идентично, диспетчер пакетов не может знать это. Вы могли, конечно, вынудить об/мин просто установить пакет так или иначе, не смотря на зависимости, но это обычно просто просит наказание.
Проблема менее плоха, если оба дистрибутива связаны или даже основанные друг на друге: Ubuntu, например, основана на debian и поэтому совместно использует многие соглашения о присвоении имен и пакеты, таким образом, Вы можете othen передавать сборку пакета для debian к полю Ubuntu.
Это также во многом зависит, на каком языке пакет записан в: Если Вам интерпретировали что-то как Python, где пакет является в основном просто набором текстовых файлов, берущих пакет для другого распределения, обычно легко обработать, но если это записано в C++ и зависит, и оба дистрибутива используют различные версии оперативных библиотек или компиляторов, Вам в основном не повезло.
Поместите строку как это в файле в /etc/udev/rules.d
:
KERNEL=="sd*", ATTRS{vendor}=="Yoyodyne", ATTRS{model}=="XYZ42", ATTRS{serial}=="123465789", RUN+="/pathto/script"
Добавьте пункт как NAME="subdir/mydisk%n"
если Вы хотите использовать пользовательский путь записи под /dev
.
Выполненный udevadm info -a -n sdb
видеть, что приписывает Вас, может соответствовать против (attribute=="value"
; замена sdb
именем устройства, автоматически присвоенным диску, соответствуя новой записи, созданной в /dev
когда Вы включаете его). Обратите внимание, что можно использовать ATTRS
пункты из любой строки файла конфигурации: можно выбрать любую строку файла конфигурации, но ATTRS
пункты должны все прибыть из той же строки файла конфигурации, Вы не можете смешивание и подгонка. Можно смешаться ATTRS
пункты с другими типами пунктов перечислены в другой строке файла конфигурации.
Я изучил /lib/udev/rules.d
для примеров связанных с диском правил. В системе Ubuntu один файл правила обеспечивает переменную среды ID_FS_UUID_ENC
который можно использовать в собственных файлах правила.
Таким образом я поместил файл пользовательского правила под /etc/udev/rules.d/foodevice.rules
. Так как это не снабжается префиксом число, это, работал наконец udev. Btw, udev наблюдаемый демон /etc/udev/rules.d
для изменений, таким образом, что Вы не должны перезапускать его на изменениях файла.
Содержание /etc/udev/rules.d/foodevice.rules
:
ACTION=="add", KERNEL=="sd*[!0-9]", ENV{ID_FS_UUID_ENC}=="FFFF-AAAF",
RUN+="/usr/bin/sudo -u juser /home/juser/path/script.sh"
(это - одно правило - необходимо удалить новую строку после огибающего пункта, потому что udev не имеет механизма продолжения строки),
Программа, запущенная udev блоками демон - таким образом, это не должно работать в течение долгого времени. Я решил его через at
- т.е. через отсоединение от процесса, делающего реальную работу:
$ cat /home/juser/path/script.sh
#!/bin/sh
echo ~/path/mountcopystuff.sh | at now
udevadm control --reload-rules
, В зависимости от Вашего распределения.
– user44038
29.07.2013, 16:44
at
ни batch
? Я нахожусь во встроенной среде с busybox.
– natenho
27.04.2015, 23:58
~/path/mountcopystuff.sh &
- at
и т.д. имеет преимущество, что Вы получаете уведомления по электронной почте в случае, если что-то идет не так, как надо - но во встроенной системе это, вероятно, не очень интересно.
– maxschlepzig
28.04.2015, 00:22
udevadm trigger
? Ваша система использует udev? Если Вы хотите запустить скрипт, когда что-либо включается, удалите все условия (пункты с==
) (возможно, синтаксис требует одного условия, я не уверен; если это делает, использоватьKERNEL=="*"
). – Gilles 'SO- stop being evil' 22.02.2013, 17:28