不得不在 CentOS 6 上安裝上一代的 mysql 5.0.95,怎麼辦?

先不管是什麼原因非得在 CentOS 6 上捨 mysql 5.1 或 5.5 而是用 5.0 不管。其實這個問題很簡單,一般大家都會用 make 一般大家都會用 make 一般大家都會用 make(因為太普遍了所以要寫三次)。不過比較易於管理的方式,我還是建議自己用 rpmbuild 來生出套件安裝,未來要更新或移除也會乾淨許多。

方法很簡單:

  1. 去 vault.centos.org 中找出 CentOS 5.11 中的 .src.rpm 檔(很久以前是叫 srpm 檔),目錄是 http://vault.centos.org/5.11/os/SRPMS/ ,可以找到 mysql 5.0.95 的 .src.rpm,把它抓回來,執行 rpm install(指令是 rpm -i 這應該不用我教了吧⋯⋯)。
  2. 使用一般 user 來執行 rpmbuild。CentOS 6 預設會在 user home dir 下建立一個叫 rpmbuild 的目錄,剛剛用 rpm install 的 .src.rpm 檔的內容都會在此目錄下出現。這時就要到 ~/rpmbuild/SPECS/ 下,會看到 mysql.spec 這個專門給 rpmbuild 的規格檔。
  3. 在 SPECS 目錄下直接執行 rpmbuild -ba mysql.spec。很抱歉,這樣會有錯誤訊息,rpm檔會做不出來。要在 .spec 檔中修改某一行的一個設定:%{!?runselftest:%define runselftest 0} 把 1 改成紅字的 0 才行。其實這樣差不多就可以了,但對 .spec 檔比較有把握修改的人,就改 Name: mysql50 及修改一下 %setup -q 變成 %setup -q -n mysql-%{version},這樣產生出 mysql50-*.rpm 就可以減少(不是沒有喔)與 CentOS 6 附的 mysql 5.1 有太多的安裝衝突。最厲害的就是用 SCL 去搞,是最符合 Redhat 對同名但不同版本的套件的管理方式。但是這太麻煩了,那 .spec 檔得改寫太多地方,不符合經濟效益;本案件並不會同時執行 mysql 5.0 與 5.1,所以沒必要。
  4. 再來一次 rpmbuild -ba mysql.spec 吧,如果人品沒什麼問題,你應該會得到成功編譯完成的 rpm 檔,會在 ~/rpmbuild/RPMS/x86_64/ 看到所有的 rpm 檔。

當然,如果還是想用 make 的話,這當然還是很好很直觀的方法。但如果你有一百台 server 要 make 做一模一樣的事情,對地球的環保節能並不是一件好事。