на самом деле такого механизма в rpmbuild нет. Однако, поскольку rpmbuild
автоматически определяет ваши зависимости; и если вы правильно используете версию библиотеки (с использованием SONAME ); затем rpmbuild
автоматически определит, зависите ли вы от libfoo.so.1 или от libfoo.so.2. Так что он не определит точную минорную версию, но должен помочь вам на уровне API (критических изменений ).
Если вы хотите перенаправить только то, что ваше приложение записывает в stdout/stderr, вы можете использовать параметры выполненияStandardOutput
и StandardError
, чтобы добавить эти выходные данные в файл, например.%h/userunit.log
(где %h
будет расширяться до домашнего каталога пользователя ).
Однако при этом будут пропущены сообщения, записанные непосредственно в журнал с помощью вызова syslog
.
[Unit]
Description=My user unit
[Service]
Type=oneshot
ExecStart=/usr/bin/echo Hello World
StandardOutput=append:%h/userunit.log
StandardError=append:%h/userunit.log
Конечно, того же можно добиться, запустив программу в оболочке и используя канал.
[Unit]
Description=My user unit
[Service]
Type=oneshot
ExecStart=/bin/bash -c '/usr/bin/echo Hello World |& tee -a %h/userunit.log'
Обратите внимание, что |&
является «башизмом»:https://www.gnu.org/software/bash/manual/html_node/Pipelines.html