Приветствую! Делаю пока первые шаги в Linux и, в частности, в OpenSUSE 13.1 (рабочая среда XFCE 4.10).
Суть. Установил Pidgin IM через репозиторий, и хотел бы добавить в его в автозагрузку. Полистав Интернет, увидел, что автозагрузка в OpenSUSE описана достаточно фрагментарно, при том, что стандартный механизм с /etc/init.d/rc.local не работает. Вместо него предлагается работать с /after.local.
Исходно after.local имеет след. вид:
#! /bin/sh
#
# Copyright (c) 2010 SuSE LINUX Products GmbH, Germany. All rights reserved.
#
# Author: Werner Fink, 2010
#
# /etc/init.d/after.local
#
# script with local commands to be executed from init after all scripts
# of a runlevel have been executed.
#
# Here you should add things, that should happen directly after
# runlevel has been reached. Common environment
# variables for this are:
# RUNLEVEL -- The current system runlevel.
# PREVLEVEL -- The previous runlevel (useful after a runlevel switch).
#
После добавления в него пути запуска Pidgin стало так:
#! /bin/sh
#
# Copyright (c) 2010 SuSE LINUX Products GmbH, Germany. All rights reserved.
#
# Author: Werner Fink, 2010
#
# /etc/init.d/after.local
#
# script with local commands to be executed from init after all scripts
# of a runlevel have been executed.
#
# Here you should add things, that should happen directly after
# runlevel has been reached. Common environment
# variables for this are:
# RUNLEVEL -- The current system runlevel.
# PREVLEVEL -- The previous runlevel (useful after a runlevel switch).
/usr/bin/pidgin
Далее, следуя заветам учебников по уровням загрузки, выполнил chkconfig --level 35 after.local on. Однако, после перезагрузки Pidgin автоматически не запустился. Через YaST --> Управление службами нашёл after.local, но в неактивном состоянии (Inactive). Попытка сделать его Enabled\Active привело к сообщению об ошибке:
after.local.service
Loaded: loaded (/etc/init.d/after.local)
Active: failed (Result: exit-code) since Wed 2014-10-01 15:54:21 EEST; 4min 47s ago
Process: 2534 ExecStart=/etc/init.d/after.local start (code=exited, status=1/FAILURE)
Oct 01 15:54:21 linux-mk500 after.local[2534]: (Pidgin:2535): Gdk-CRITICAL **: IA__gdk_display_get_name: assertion 'GDK_IS_DISPLAY (display)' failed
Oct 01 15:54:21 linux-mk500 after.local[2534]: ** (Pidgin:2535): WARNING **: cannot open display: unset
Oct 01 15:54:21 linux-mk500 after.local[2534]: Pidgin 2.10.9
Oct 01 15:54:21 linux-mk500 systemd[1]: after.local.service: control process exited, code=exited status=1
Oct 01 15:54:21 linux-mk500 systemd[1]: Failed to start after.local.service.
Oct 01 15:54:21 linux-mk500 systemd[1]: Unit after.local.service entered failed state.
Warning: Unit file changed on disk, 'systemctl daemon-reload' recommended.
В какую сторону копать? Какие ошибки синтаксиса и понимания механизма с моей стороны, как пользователя? Скакать по дистрибутивам в поисках простоты взаимодействия пользователь --> система, не хочется. Хочется постичь механизм, используемый в SUSE, и научиться.
Спасибо!
xfce4 настройки в разделе “Сеансы и запуск” – “Автозапуск приложений”
Правильно заданный вопрос – половина ответа.
Спасибо, помогло! Но здесь ещё вопрос -- как обойтись без GUI-средств, только за счёт консоли - т.е., как заставить автоматически стартовать некую программу (не демон) или user.based скрипт через консоль и какой при этом корректный синтаксис для .local файлов.
~/.bash_profile
Синтаксис шелл, обычный.
Можно, плз, привести пару живых примеров _успешного_ добавления программы или скрипта в автозагрузку через after.local, после которого не будет сообщений об ошибках и система успешно обработает записи из этого файла после перезагрузки? Просто, чтобы на наглядном примере понять "физику" этого процесса, и в дальнейшем уже самому ориентироваться. Спасибо!
Скрипты грузятся для юзера! after.local откуда?
Отсюда: /etc/init.d/after.local. Мне как раз и нужно понять все эти нюансы - автозапуска от пользователя и непосредственно системы, затем же и прошу дать пару-тройку примеров для наглядности. На основании этого можно будет сделать хорошую и познавательную заметку в разделе "Статьи" сайта. Тем более, что в OpenSUSE свой путь организации автозагрузки, отличный от /rc.local. У "соседей" вопросы автозагрузки более наглядно описаны, но, как я уже писал ранее - "Скакать по дистрибутивам в поисках простоты взаимодействия пользователь --> система, не хочется. Хочется постичь механизм, используемый в SUSE, и научиться." Уж простите моё нубство.
Это следствие внедрения systemd. Вот было решение http://avm-xandry.blogspot.com/2012/05/systemd-afterlocal.html
У мну пример не спрашивайте, юзаю линукс без оного нововведения.
ЗЫ. Дело хозяйское, но Pidgin подразумевает работающую сеть, очевидно нужна проверка этого факта или запускать после подьема сетевого интерфейса.
В целом прояснилось -- спасибо автору блога xandry's blog Александру Митюнину -- направил ход мыслей и действия рук в правильное русло. Для GUI-приложений в /usr/share/applications/ лежат .desktop-файлы (e.g. pidgin.desktop), в которых в строке Exec указан путь исполняемого файла. Для того, чтобы та или иная программа автоматически стартовала при загрузке пользовательского профиля, необходимо скопировать её .desktop-файл в ~/.config/autostart. А systemd отвечает за загрузку сервисов (демонов) для _всей_системы_в целом_. А я, как выяснилось, в своих поисках истины не с той стороны начал копать.
Люди несколько раз тонко намекали тебе , что все что касается пользователя лежит в ~/ , но ты так рвался в бой..
А не надо "тонко намекать". Если человек обращается за помощью с целью научиться (рвался в бой ), его надо буквально носом тыкать - "смотри сюда, попробуй сделать вот так (я же просил примеры, но не сложилось), почитай вот это". Причём по части "почитать" -- наилучший вариант -- это из сборника статей самого ресурса open-suse.ru. А этого как раз и нет - есть куда развивать ресурс. Это в качестве ответного "тонкого намёка" администратору ресурса. Тему можно закрывать, спасибо.