Разбивка идентификаторов rpm для файлов разделяемых библиотек

Ответ на этот вопрос - поменять местами User = nobody не на User = ziga , а на Пользователь = root в /etc/systemd/system/battery.service . Каким-то образом, даже если пользователь ziga имеет все привилегии использования команды sudo , он не может выполнить systemctl hibernate внутри сценария bash. Я действительно не знаю, почему это происходит. Итак, рабочие файлы выглядят следующим образом:

/etc/systemd/system/battery.service

[Unit]
Description=Preko skripte preveri stanje baterije in hibernira v kolikor je stanje prenizko

[Service]
Type=oneshot
ExecStart=/home/ziga/Dropbox/workspace/operacijski/archlinux/hibernate/hibernatescript
User=root
Group=systemd-journal

/etc/systemd/system/battery.timer

[Unit]
Description=Periodical checking of battery status every two minutes

[Timer]
OnBootSec=2min
OnUnitActiveSec=2min 

[Install]
WantedBy=battery.service

/ home / ziga / Dropbox / workspace / operacijski / archlinux / hibernate / hibernatescript

#!/bin/sh
/usr/bin/acpi -b | /usr/bin/awk -F'[,:%]' '{print $2, $3}' | (
        read -r status capacity
        if [ "$status" = Discharging ] && [ "$capacity" -lt 7 ]; then
                /usr/bin/systemctl hibernate
        fi
)

Я попробовал, и все это также работает с User = ziga или User = nobody , но нам нужно изменить / usr / bin / systemctl hibernate в sudo / usr / bin / systemctl hibernate в последнем скрипте. Получается, что переменная пользователя почему-то даже не имеет значения ...Да, и вы также можете удалить абсолютные имена из последнего скрипта и изменить первую строку с #! / Bin / sh на #! / Bin / bash . Я также изменил WantedBy = timers.target на WantedBy = battery.service в /etc/systemd/system/battery.timer .

Вот так. Лучшая альтернатива cron для ноутбуков с гибернацией при низком заряде батареи. =)

3
17.03.2017, 04:06
1 ответ

RPM отслеживает библиотеки, используя soname, точно так же, как компоновщик/загрузчик ELF.

Когда в glibc добавлялись версионные символы, RPM добавлял уникальные версии внутри первого набора круглых скобок. Смотрите "rpm -q --fileprovide glibc" для многих примеров.

При добавлении multilib (как 32-разрядных, так и 64-разрядных библиотек в одной системе )для различения добавлялся маркер «(64-разрядная )».

К сожалению, недопонимание привело к добавлению пустого " ()" с библиотеками, не имеющими версий символов. В принципе, версии символов появляются внутри пустого «()», но очень немногие библиотеки, кроме glibc, используют управление версиями символов.

4
27.01.2020, 21:18

Теги

Похожие вопросы