Guard не может найти libnotify и не может отключить уведомления, но выдает ошибки
Охранник работал нормально, пока из ниоткуда, он выбрасывает мне кучу ошибок:
$bin/guard
Could not open library 'libgtkmm-2.4': libgtkmm-2.4: cannot open shared object file: No such file or directory.
Could not open library 'libgtkmm-2.4.so': libgtkmm-2.4.so: cannot open shared object file: No such file or directory.
Could not open library 'libgtkmm-2.4.so.1': libgtkmm-2.4.so.1: cannot open shared object file: No such file or directory.
Could not open library 'libgtkmm-3.0': libgtkmm-3.0: cannot open shared object file: No such file or directory.
Could not open library 'libgtkmm-3.0.so': libgtkmm-3.0.so: cannot open shared object file: No such file or directory.
Could not open library 'libgtkmm-3.0.so.1': libgtkmm-3.0.so.1: cannot open shared object file: No such file or directory
13:15:58 - INFO - Guard is using Libnotify to send notifications.
13:15:58 - INFO - Guard is using TerminalTitle to send notifications.
13:15:59 - INFO - Bundle already up-to-date
13:15:59 - INFO - Guard::Rack will now restart your app on port 9292 using development environment.
13:15:59 - INFO - Restarting Rack...
libnotify.so not found!
13:15:59 - ERROR - Guard::Rack failed to achieve its <start>, exception was:
> [#4FE305F3B849] NoMethodError: undefined method `notify_init' for #<Libnotify::API:0x97a2d18>
Вот guard notifiers
команда (сокращенная):
+-------------------+-----------+------+-----------+-------------------+
| libnotify | ✔ | ✘ | transient | false |
| | | | append | true |
| | | | timeout | 3 |
+-------------------+-----------+------+-----------+-------------------+
| notifysend | ✘ | ✘ | t | 3000 |
| | | | h | "int:transient:1" |
+-------------------+-----------+------+-----------+-------------------+
| terminal_title | ✔ | ✘ | | |
+-------------------+-----------+------+-----------+-------------------+
| file | ✘ | ✘ | format | "%s\n%s\n%s\n" |
+-------------------+-----------+------+-----------+-------------------+
Я пытался установить notifiers :off
опция в Guardfile, удаляющая libnotify gem, но это не имело никакого эффекта.
Я работаю на сервере Ubuntu, так что я думаю, что не должен был libnotify, почему охрана так грубо для меня внезапно?
1 ответ
[EDIT2]
Вы упомянули, что вы установили notifiers :off
не notification :off
(Я все время путаюсь с опциями).
Также охранник "обнаруживает" libnotify
потребовав это здесь - это означает, что у вас есть файл где-то в вашей системе.
(Если файла нет, требуются сбои с помощью LoadError, и Guard решает, что libnotify недоступен).
Один способ "грубой силы" выяснить, где он находится, с помощью strace (должен быть доступен на сервере):
strace -f -e open bundle exec guard notifiers 2>&1 | /bin/grep -v 'ENOENT' |/bin/grep lib/libnotify.rb
который для меня показывает:
[pid 16703] open("/home/me/.rvm/gems/ruby-2.1.4@guard/gems/libnotify-0.9.0/lib/libnotify.rb", O_RDONLY|O_CLOEXEC) = 7
[pid 16703] open("/home/me/.rvm/gems/ruby-2.1.4@guard/gems/libnotify-0.9.0/lib/libnotify.rb", O_RDONLY|O_CLOEXEC) = 7
ПРИМЕЧАНИЕ: у вас могут быть установлены системные рубины, которые вы можете проверить с помощью:
rvm use system
gem list libnotify
Охранник жалуется просто потому, что камень где-то установлен (или где-то есть фирменный камень).