Browse Source

PR#202 run-time check and related issues

Thomas Lotterer 22 years ago
parent
commit
621404a75b
2 changed files with 47 additions and 27 deletions
  1. 36 13
      mysql/mysql.spec
  2. 11 14
      mysql/rc.mysql

+ 36 - 13
mysql/mysql.spec

@@ -39,7 +39,7 @@ Distribution: OpenPKG [BASE]
 Group:        Database
 Group:        Database
 License:      GPL
 License:      GPL
 Version:      %{V_opkg}
 Version:      %{V_opkg}
-Release:      20030722
+Release:      20030723
 
 
 #   package options
 #   package options
 %option       with_berkeleydb  yes
 %option       with_berkeleydb  yes
@@ -183,17 +183,40 @@ AutoReqProv:  no
 %clean
 %clean
     rm -rf $RPM_BUILD_ROOT
     rm -rf $RPM_BUILD_ROOT
 
 
+%pre
+    #   before upgrade, save status and stop service
+    [ $1 -eq 2 ] || exit 0
+    eval `%{l_rc} mysql status 2>/dev/null | tee %{l_tmpfile}`
+    %{l_rc} mysql stop 2>/dev/null
+    exit 0
+
 %post
 %post
-    #   create initial database
-    $RPM_INSTALL_PREFIX/bin/mysql_install_db \
-        --defaults-file=$RPM_INSTALL_PREFIX/etc/mysql/my.cnf
-    chown %{l_rusr}:%{l_rgrp} \
-        $RPM_INSTALL_PREFIX/etc/mysql/my.cnf \
-        $RPM_INSTALL_PREFIX/etc/mysql/my.pwd
-    chown -R %{l_rusr}:%{l_rgrp} $RPM_INSTALL_PREFIX/var/mysql/
-    ( echo "The MySQL package includes automated maintenance procedures"
-      echo "that require administrator access to the database. For this"
-      echo "to work you must keep a copy (plain text) of the administrator"
-      echo "account in '$RPM_INSTALL_PREFIX/etc/mysql/my.pwd'."
-    ) | %{l_rpmtool} msg -b -t notice
+    if [ $1 -eq 1 ]; then
+        #   after install, create initial database
+        $RPM_INSTALL_PREFIX/bin/mysql_install_db \
+            --defaults-file=$RPM_INSTALL_PREFIX/etc/mysql/my.cnf
+        chown %{l_rusr}:%{l_rgrp} \
+            $RPM_INSTALL_PREFIX/etc/mysql/my.cnf \
+            $RPM_INSTALL_PREFIX/etc/mysql/my.pwd
+        chown -R %{l_rusr}:%{l_rgrp} $RPM_INSTALL_PREFIX/var/mysql/
+        ( echo "The MySQL package includes automated maintenance procedures"
+          echo "that require administrator access to the database. For this"
+          echo "to work you must keep a copy (plain text) of the administrator"
+          echo "account in '$RPM_INSTALL_PREFIX/etc/mysql/my.pwd'."
+        ) | %{l_rpmtool} msg -b -t notice
+    fi
+    if [ $1 -eq 2 ]; then
+        #   after upgrade, restore status
+        { eval `cat %{l_tmpfile}`; rm -f %{l_tmpfile}; true; } >/dev/null 2>&1
+        [ ".$mysql_active" = .yes ] && %{l_rc} mysql start
+    fi
+    exit 0
+
+%preun
+    #   before erase, stop service and remove log files
+    [ $1 -eq 0 ] || exit 0
+    %{l_rc} mysql stop 2>/dev/null
+    rm -f $RPM_INSTALL_PREFIX/var/mysql/*.log* >/dev/null 2>&1 || true
+    rm -f $RPM_INSTALL_PREFIX/var/mysql/*.err* >/dev/null 2>&1 || true
+    exit 0
 
 

+ 11 - 14
mysql/rc.mysql

@@ -20,12 +20,12 @@
     mysql_log_common=@l_prefix@/var/mysql/common.log
     mysql_log_common=@l_prefix@/var/mysql/common.log
     mysql_log_update=@l_prefix@/var/mysql/update.log
     mysql_log_update=@l_prefix@/var/mysql/update.log
 
 
-%status -u @l_susr@ -o
+%status -u @l_rusr@ -o
     mysql_usable="unknown"
     mysql_usable="unknown"
     mysql_active="no"
     mysql_active="no"
     @l_prefix@/bin/mysqladmin \
     @l_prefix@/bin/mysqladmin \
         --defaults-extra-file=${mysql_pwd_file} \
         --defaults-extra-file=${mysql_pwd_file} \
-        ping 2>/dev/null && mysql_active="yes"
+        ping >/dev/null 2>&1 && mysql_active="yes"
     if [ $mysql_active = "no" -a -f $mysql_pid_file ] ; then
     if [ $mysql_active = "no" -a -f $mysql_pid_file ] ; then
         kill -0 `cat $mysql_pid_file` && mysql_active="unknown"
         kill -0 `cat $mysql_pid_file` && mysql_active="unknown"
     fi
     fi
@@ -35,6 +35,7 @@
 
 
 %start -p 400 -u @l_rusr@
 %start -p 400 -u @l_rusr@
     rcService mysql enable yes || exit 0
     rcService mysql enable yes || exit 0
+    rcService mysql active yes && exit 0
     cd @l_prefix@
     cd @l_prefix@
     @l_prefix@/bin/mysqld_safe >/dev/null 2>&1 \
     @l_prefix@/bin/mysqld_safe >/dev/null 2>&1 \
         --mysqld=@l_mysqld@ \
         --mysqld=@l_mysqld@ \
@@ -43,30 +44,26 @@
 
 
 %stop -p 400 -u @l_rusr@
 %stop -p 400 -u @l_rusr@
     rcService mysql enable yes || exit 0
     rcService mysql enable yes || exit 0
+    rcService mysql active no  && exit 0
     @l_prefix@/bin/mysqladmin \
     @l_prefix@/bin/mysqladmin \
         --defaults-extra-file=${mysql_pwd_file} \
         --defaults-extra-file=${mysql_pwd_file} \
         shutdown
         shutdown
 
 
 %restart -p 400 -u @l_rusr@
 %restart -p 400 -u @l_rusr@
     rcService mysql enable yes || exit 0
     rcService mysql enable yes || exit 0
-    cd @l_prefix@
-    @l_prefix@/bin/mysqladmin \
-        --defaults-extra-file=${mysql_pwd_file} \
-        shutdown
-    @l_prefix@/bin/mysqld_safe >/dev/null 2>&1 \
-        --mysqld=@l_mysqld@ \
-        --pid-file="$mysql_pid_file" \
-        --err-log="$mysql_log_err" &
+    rcService mysql active no  && exit 0
+    rc mysql stop start
 
 
 %daily -u @l_rusr@
 %daily -u @l_rusr@
     rcService mysql enable yes || exit 0
     rcService mysql enable yes || exit 0
+
+    #   rotate logfile
     shtool rotate -f \
     shtool rotate -f \
         -n ${mysql_log_numfiles} -s ${mysql_log_minsize} -d \
         -n ${mysql_log_numfiles} -s ${mysql_log_minsize} -d \
-        -z ${mysql_log_complevel} -o @l_rusr@ -g @l_rgrp@ -m 644 \
+        -z ${mysql_log_complevel} -m 660 -o @l_rusr@ -g @l_rgrp@ \
         -P "${mysql_log_prolog}" \
         -P "${mysql_log_prolog}" \
-        -E "@l_prefix@/bin/mysqladmin \
-            --defaults-extra-file=${mysql_pwd_file} \
-            flush-logs; ${mysql_log_epilog}" \
+        -E "$mysql_log_epilog && @l_prefix@/bin/mysqladmin \
+            --defaults-extra-file=${mysql_pwd_file} flush-logs" \
         ${mysql_log_common} \
         ${mysql_log_common} \
         ${mysql_log_update} \
         ${mysql_log_update} \
         ${mysql_log_err}
         ${mysql_log_err}