Migration /var/run в /run и проблемы запуска MySQL и TeamSpeak

Материал из AlexNook
Перейти к: навигация, поиск

После обновления пакета openRC до версии sys-apps/openrc-0.11.8 произошла миграция каталога /var/run в /run. Таким образом каждый раз при старте в /run монтируется tmpfs и все папки и файлы пересоздаются. Некоторые программные продукты не успели ещё обновить свою init скрипты, отчего они перестали запускаться.

Рассмотрю решение этой проблемы на примере MySQL и TeamSpeak server.

Корректировка init скрипта и запуск MySQL

Необходимо в файл /etc/init.d/mysql в функцию checkconfig() добавить строчки

File: /etc/init.d/mysql
  1.     if [ ! -d /var/run/mysqld ] ; then
  2.         checkpath -d -m 755 -o mysql:mysql /var/run/mysqld
  3.     fi

Ниже приведён пример кусочек файла:

File: /etc/init.d/mysql
  1. checkconfig() {
  2.         wdebug 4 ">>> checkconfig(\"${1}\")"
  3.         local datadir="${1}" pidfile="${2}" socket="${3}"
  4.  
  5.         if [ ! -d /var/run/mysqld ] ; then
  6.                 checkpath -d -m 755 -o mysql:mysql /var/run/mysqld
  7.         fi
  8.  
  9.         if [[ -n "${NOCHECK}" ]] ; then
  10.                 rm -f "${pidfile}" "${socket}"
  11.                 return 0
  12.         fi

Так как функция checkconfig() у меня уже существовала и вызывалась, когда следует, то больше я ничего не делал.

Корректировка init скрипта и запуск TeamSpeak

Необходимо в файл /etc/init.d/teamspeak2-server добавить функцию checkconfig() с содержимым:

nano /etc/init.d/teamspeak2-server

Ниже приведён пример кусочек файла:

File: /etc/init.d/teamspeak2-server
  1. depend() {
  2.         need net
  3.         use mysql
  4. }
  5.  
  6.  
  7. checkconfig() {
  8.     if [ ! -d /var/run/teamspeak2-server ] ; then
  9.         checkpath -d -m 755 -o teamspeak2:teamspeak2 /var/run/teamspeak2-server
  10.     fi
  11. }
  12.  
  13. start() {
  14. checkconfig
  15.         ebegin "Starting TeamSpeak Server"
  16.         start-stop-daemon --start --quiet --chuid teamspeak2 \
  17.                 --exec "/opt/teamspeak2-server/server_linux" -- \

а так же в этом же вайле в функцию start() { добавить вызов checkconfig.


Ссылки

  • Блог человека, который мне помог и стал основой данного хелпа