精華區beta FreeBSD 關於我們 聯絡資訊
因為平常都有在進行Ports Upgrade的動作,今天也不例外,就給它在console下打了 # cd /usr/ports # make update # portupgrade -r pkgconfig 昇級了一堆已裝的軟體,其中的參數用途就是在維護軟體的相關性,一切都正常無誤。但是在更新ports source tree的過程中看到mod_php4的ports tree有更動到,但是確沒有進行其昇級動作,手癢的我就又打了如下指令 # portupgrade -ar 這指令用意就是更新所有已安裝的ports,並且維護軟體的相依性,怎知在更新的過程中看到它也順便更新了Mysql Server,從Mysql 3.23.56 -> 3.23.56_1。 慘案就是由此發生的,因為我的資料庫安不是安裝在預設的路徑(/var/db/mysql),並且使用LINUXTHREADS(用意在跑更多的mysqld, MySQL daemon-->mysqld,也因為FreeBSD是kernel-thread,只會跑一支mysqld),就在更新後它將我的資料庫路徑裝回預設路徑,而且還 只跑一支mysql daemon,差點沒發瘋了,也算是一段小插曲啦,因為已經自行搞定了,在網路上找不到自已要的文件,因為都是教你如何事前預防MySQL SERVER出問題,不然就是移植到其它機器上,我要找的卻是救火的那個"水",索性就將自已解決的經驗分享一下(好 幾年前po過一次文章,這大概算是第二篇吧:D )。 我的平台環境FreeBSD 4.8-Stable SMP(P!!!*2),上面跑了幾個網站(phpnuke*2, BLOG/MV)都有用到MySQL資料庫,平常又只有備份其中一個資料庫的習慣,實在不想萬丈高樓又重建了。 BLAH BLAH...的打了一堆,重點現在要出來了,需要的人請注意吧! # cd /usr/ports/databases/mysql323-server # make deinstall # make WITH_CHARSET=big5 DB_DIR=/usr/local/etc/mysql WITH_LINUXTHREADS=yes SKIP_INSTALL_DB=yes BUILD_STATIC=yes install clean 什麼就上面這麼簡短的幾個動作,是的!是的!就是這麼簡單,花了一、二個小時的時間才處理OK。 這邊解說一些最後那些指令參數的用意: WITH_CHARSET=big5 <--讓資料庫預設使用/支援BIG5碼的編碼 DB_DIR=/usr/local/etc/mysql <--設定資料庫檔案的目錄 (最重要的就是這個了) WITH_LINUXTHREADS=yes <--使用 linuxthreads pthread library (要使用MySQL 的 multi-thread 功能必備) SKIP_INSTALL_DB=yes <--跳過安裝資料庫 (最重要的就是這個了) BUILD_STATIC=yes <--建立靜態版本的mysql (不太清楚它的用意,知道的人也可以補充一下) 另外想知道還有那些參數可以使用,可以看Makefile檔,或者在 # cd /usr/ports/databases/mysql323-server # make fetch 也會秀出幾個可用的參數出來。像是沒有合法DNS的人就會用到SKIP_DNS_CHECK=yes 。 最後再執行 # safe_mysqld & (如果你用的是MySQL 4 ,指令大概是mysqld_safe 吧) 就可以了。要確認有無跑該程式就 ps 一下,有無跑多個執行緒程式就 top,再按u,輸入mysql,就會看到4支mysqld了(數目會隨著使用量/人數增加)。 拉哩拉雜打了一堆,謝謝各位看倌了。 ------------------------------------------------------------------------------ 只中一項值得參考的資訊是值得借鏡,不想在日後使用portupgrade時發生同樣的問題,就試試下面的作法吧,我自已也還沒試它一試。希望原作者不會告我未告知就剪貼他的文章。:P! http://freebsd.lab.mlc.edu.tw/ports.htm portupgrade時,改變預設的編譯安裝選項 編輯 /usr/local/etc/pkgtools.conf MAKE_ARGS = { 'databases/mysql323-*' => 'WITH_CHARSET=big5', 'databases/mysql323-*' => 'SKIP_INSTALL_DB=yes', 'databases/phpmyadmin' => 'MYADMDIR?=www/data/phpMyAdmin', 'www/apache13' => 'WITH_APACHE_SUEXEC=yes', } mysql 安裝時,預設不支援中文;而phpMyAdmin預設的安裝路徑則在www/data.default/phpMyAdmin,與apache不同,害我裝了之後找好久才找到。 -- □ Origin: 雲淡風清 - bbs.au.edu.tw □ From: adsl-sta-tpe-145-123.so-net.net.tw > -------------------------------------------------------------------------- < 發信人: [email protected] (破邪劍征‧櫻花放神), 看板: FreeBSD 標 題: Re: [文件] MySQL 昇級發生的小插曲 發信站: 克萊恩大地 (Sat May 24 11:05:36 2003) 轉信站: Ptt!news.ntu!freebsd.ntu!News.Math.NCTU!krynn ※ 引述《[email protected] (狂野遊龍)》之銘言: > BUILD_STATIC=yes <--建立靜態版本的mysql (不太清楚它的用意,知道的人也 > 可以補充一下) /usr/ports/database/mysql323-server/Makefile 裡面 if defined(BUILD_STATIC) CONFIGURE_ARGS+=--with-mysqld-ldflags=--static 然後 http://www.mysql.com/doc/en/configure_options.html 上面寫說 If you want to compile statically linked programs (for example, to make a binary distribution, to get more speed, or to work around problems with some Red Hat Linux distributions), run configure like this: shell> ./configure --with-client-ldflags=-all-static \ --with-mysqld-ldflags=-all-static > -------------------------------------------------------------------------- < 發信人: [email protected] (皓袖繽紛 美目流盼), 看板: FreeBSD 標 題: Re: [文件] MySQL 昇級發生的小插曲 發信站: 玲瓏水榭 (Mon May 26 10:46:31 2003) 轉信站: Ptt!news.ntu!freebsd.ntu!netnews.csie.nctu!SungSung 把會 define 到的都寫入 /etc/make.conf 就不會每次都打那麼多啦