rpm包制作之——mysql-5.7.16

来源:互联网 发布:mac单windows系统 编辑:程序博客网 时间:2024/06/06 07:50

从MySQL 5.7.5开始需要Boost库,也就是因为这个库纠结了好久 )~^~(
By the way,编译过程需要花的时间比较久,对内存和硬盘要求比较高
环境 VM:内存3G,硬盘30G 系统:CentOS release 6.5

mysql-5.7.16源码编译安装

相关依赖安装

# yum -y install make gcc gcc-c++ cmake bison-devel ncurses ncurses-devel perl-JSON perl-devel perl-Time-HiRes

# ntpdate cn.pool.ntp.org
# useradd -M -s /sbin/nologin mysql

从MySQL 5.7.5开始Boost库是必需
Boost库编译安装

./bootstrap.sh
./b2 install threading=multi link=shared

Mysql编译安装

编译
cmake参数: http://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html

# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWIT
H_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=1 -DMYSQL_USER=mysql
# make -j3 && make install

# mkdir /var/lib/mysql/
# chown -R mysql:mysql /var/lib/mysql/
# mkdir -p /usr/local/mysql/data
# chown -R mysql:mysql /usr/local/mysql/data

配置文件修改

# vim /etc/my.cnf

[client]default-character-set=utf8[mysqld]datadir=/usr/local/mysql/datauser=mysql# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0character-set-server=utf8collation-server=utf8_general_ci#server-id=1#log-bin=/tmp/binlog#log-bin-index=/tmp/binlog.index[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid

初始化mysql,记得初始化密码

# bin/mysqld –initialize –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data
# bin/mysqld –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data
# bin/mysql_ssl_rsa_setup
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# service mysqld start

重置密码

# mysql -uroot -p$passwd -e “set password = password(‘*‘)”;

boost_1_59_0 单独rpmbuild

#vim ~/rpmbuild/SPECS/boost.spec

Name:       boostVersion:    1_59_0Release:    1%{?dist}Summary:    boost_installGroup:      System Environment/DaemonsLicense:    GPLv2URL:        http://www.boost.org/users/history/version_1_59_0.htmlSource0:    boost-1_59_0.tar.gzBuildRoot:   %{_topdir}/%{name}-%{version}-%{release}BuildRequires:  gcc,make,gcc-c++,bzip2-devel,python-devel,python-libs,libicu-develRequires:   bzip2,python-libs  %descriptionboost1_59_0 install%prep%setup -q%buildBOOST_ROOT=`pwd`export BOOST_ROOT./bootstrap.sh --prefix=%{buildroot}/usr/ --with-toolset=gcc --with-icuinstall -d -m 755 %{buildroot}/usr/./b2 --layout=system install threading=multi link=shared%cleanrm -rf %{buildroot}%post -p /sbin/ldconfig%postun -p /sbin/ldconfig%files%defattr(-,root,root,-)#${_includedir}/boost/usr/*%doc%changelog

mysql-5.7.16 包括boost

# vim ~/rpmbuild/SPECS/mysql.spec

Name:       mysqlVersion:    5.7.16Release:    1%{?dist}Summary:    mysql_installGroup:      System Environment/DaemonsLicense:    GPLv2URL:    http://www.boost.org/users/history/version_1_59_0.html&&http://dev.mysql.com/downloads/mysql/Source0:    boost_1_59_0.tar.gzSource1:    %{name}-%{version}.tar.gzSource2:    my.cnfBuildRoot:  %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)BuildRequires:  gcc,make,gcc-c++,cmake,bison-devel,ncurses,ncurses-devel,bzip2-devel,python-devel,python-libs,bzip2,libicu-develRequires:   python-libs,bzip2,perl-JSON,perl-Time-HiRes%descriptionBuild mysql-5.7.16.tar.gz to mysql-5.7.16.rpm%prep%setup -q -b 0 -b 1%buildcd ../boost_1_59_0BOOST_ROOT=`pwd`export BOOST_ROOT./bootstrap.sh --prefix=%{buildroot}/usr/ --with-toolset=gcc --with-icuinstall -d -m 755 %{buildroot}/usr/./b2 install threading=multi link=sharedcd ../mysql-5.7.16cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=1 -DMYSQL_USER=mysqlmake -j3 %{?_smp_mflags}%installmake install DESTDIR=%{buildroot}install -d -m 755 %{buildroot}/usr/%{__install} -p -D %{SOURCE2} %{buildroot}/etc/my.cnf%preif [ $1 == 1 ];then    /usr/sbin/useradd mysql -M -s /sbin/nologin 2>/dev/nullfi%postif [ $1 == 1 ];then    mkdir -p /usr/local/mysql/data    chown -R mysql:mysql /usr/local/mysql/data 2>/dev/null    /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 2>&1 | tee /usr/local/mysql/default-passwd    #/usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 2>/dev/null    /usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data 2>/dev/null    cp /usr/local/mysql/bin/* /usr/bin/ 2>/dev/null    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld 2>/dev/null    /sbin/chkconfig --add mysqld    /sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir 2> /dev/null || :fi%preunif [ $1 == 0 ];then    /usr/sbin/userdel -r mysql 2> /dev/null    /etc/init.d/mysqld stop > /dev/null 2>&1    /sbin/chkconfig --del mysqld 2> /dev/null    /sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir 2> /dev/null || :fi%postunif [ $1 == 0 ];then    rm -rf /usr/local/mysql 2> /dev/null    rm -rf /usr/bin/mysql* 2> /dev/null    rm -rf /etc/my.cnf 2> /dev/null    rm -rf /etc/init.d/mysqld 2> /dev/nullfi%cleanrm -rf %{buildroot}%files%defattr(-,root,root,-)/usr/local/mysql/*/usr/*%config(noreplace) /etc/my.cnf%doc%changelog
0 0
原创粉丝点击