装配MySQL源代码分发

 作者:天极软件 泉源:天极软件

你需求下列东西机关并装配MySQL源代码:

  • GNU gunzip解紧缩该分发。
  • 一个适宜的tar解包分发。GNU tar已知可以义务。
  • 一个能运转的ANSI C 编译器。gcc> = 2.8.1 、egcs> = 1.0.2 、SGI C 和SunPro C 是一些已知能义务编译器。 当使gcc用时,不需求libg 。gcc2.7.x 有一个bug,使得它能够不能编译一些完全合法的C 文件,例如“sql/sql_base.cc”。假如你仅有gcc2.7.x,你必须晋级gcc才干编译MySQL
  • 一个出色的make次序。GNU make总是被举荐且有时必须。假如你有功效,我们举荐试一试GNU make3.75或更新。

假如你碰到功效,当向mysql@lists.mysql.com邮寄功效时,请接续使用mysqlbug。就算功效不是一个bug,mysqlbug搜集零碎信息,将有助于此外人筹划你的功效。假如倒运用mysqlbug,你裁汰得到关你功效的一个筹划方案的能够性!在你解包分发后,你会在“scripts”目录下找到mysqlbug。见2.3 若何陈述错误或功效。

4.7.1 疾速装配概述

你必须执行的装配MySQL源代码分发的基础下令是(从一个解包的tar文件):

shell>configure
shell>make
shell>make install
shell>scripts/mysql_install_db 
shell>/usr/local/mysql/bin/safe_mysqld &

假如你从一个源代码RPM开端,那么执行如下下令。

shell> rpm -- rebuild MySQL-VERSION.src.rpm

多么你制作一个可以装配的二进制RPM。

假如你装配了DBIMsql-Mysql-modulesPerl模块,你可以利用bin/mysql_setpermission剧本增进新用户。

以下是更详尽的描写:

为了装配源代码分发,遵循下列步骤,然后承袭到4.15 装配前期的设置与测试,举行装配前期的初始化与测试。

  1. 挑选一个你要在其上面解包分发的目录,而且进入该目录。
  2. 从节4.1 若何得到MySQL中列出的站点之一得到一个分发文件。MySQL源代码分发以紧缩的tar档案供给,而且有近似于“mysql-VERSION.tar.gz”的名字,这里的VERSION是一个近似3.23.7-alpha的数字。
  3. 在以后目录下解包分发:
    shell> gunzip < mysql-VERSION.tar.gz | tar  xvf -

    这个下令创设名为“mysql-VERSION”的一个目录。

  4. 进入解包分发的顶级目录:
     shell> cd  mysql-VERSION
  5. 设置发行版本而且编译:
    shell>./configure--prefix=/usr/local/mysql 
    shell>make 
    

    当你运转configure时,你能够想要指定一些选项,运转./configure --help得到一张选项表。4.7.3 典范的configure选项批评辩论一些很有用的选项。假如configure失败,你将发送包孕你感受能帮你筹划该功效的“config.log”的邮件,假如configure很是列入,也要包括configure的最后几行输入。用mysqlbug剧本邮寄错误陈述。见2.3 若何陈述错误和功效。假如编译失败,见节4.8 编译功效?,帮忙筹划很多罕见功效。

  6. 装配全部东西:
    shell>make install

    你能够需求root用户来运转这个下令。

  7. 缔造MySQL受权表(只要你曩昔没装配MySQL是必须的):
    shell>scripts/mysql_install_db

    看重,在运转mysql_install_db时,那些比3.22.10旧的MySQL版本启动MySQL效劳器。目下当今不是多么了!

  8. 假如你想要装配对Perl DBI/DBD接口的支撑,见4.10 Perl装配看重阐明');。
  9. 假如你想要MySQL在你指导呆滞时自动地启动,你可以拷贝support-files/mysql.server到你的零碎中有启动文件的处所。更多的信息可以在support-files/mysql.server剧本里和4.15.3 自动启动和终止MySQL找到。

在全部东西装配完以后,你应该初始化而且测试你的分发。

你可以用下列下令启动MySQL效劳器,这里BINDIRsafe_mysqld被装配的目录(缺省为“/usr/local/bin”):

shell> BINDIR/safe_mysqld &

假如这个下令提醒mysqld daemon ended并即速失败,那么你能在文件“mysql-data-directory/'hostname'.err”找到一些信息。能够的缘由是你已经有另外一个正在运转的mysqld效劳器。见19.3 在一致台呆滞上运转多个MySQL效劳器。

拜见4.15 装配前期的设置与测试。

4.7.2 运用补丁

有时补丁呈目下当今邮件列表上或放在MySQL FTP所在的补丁区。

为了使用来自邮件列表的一个补丁,留存补丁呈目下当今文件的往事,进入你的MySQL源代码树的顶级目录并运转这些下令:

shell>patch - p1 <patch-file-name 
shell>rm config.cache
shell>make clean

来自FTP所在的补丁是作为普通文本文件或作为被紧缩了的gzip文件分发。运用一个文本的补丁如上述邮件列表补丁,为了使用一个紧缩的补丁,进入你的MySQL源代码树顶级目录并运转这些下令:

shell>gunzip <patch-file-name.gz |patch - p1 
shell>rm  config.cache 
shell>make clean

在使用一个补丁以后,遵循正常的源代码装配的指令,开端./configure步骤。在运转make install后,重启你的MySQL效劳器。

在运转make install前,你能够需求封闭全部正在运转的效劳器(使用mysqladmin shutdown)。假如一个次序的新版本替代以后正在执行的版本,一些零碎不答应你装配它。

4.7.3 典范的configure选项

configure剧本给你一个很年夜的节制权来若何设置配备陈设你的MySQL分发。典范地,你使用configure下令行的选项举行。你也可以用正确的环境变量感化于configure。关于一个由configure支撑的选择列表,运转这个下令:

shell> ./configure -- help

一些更常用的configure选项见上面的描写:

  • 只编译MySQL客户库和客户次序而不是效劳器,使用--without-server选项:
    shell> ./configure --without-server

    假如你没有一个 C 编译器,mysql将不编译(有一个客户次序需求C )。在这种环境下,你可以去丢失configure里面测试C 编译器的代码,然后运转带有 --without-server选项的./configure。编译步骤步将仍旧尝试机关mysql,可是你可以马虎任何干于“ mysql.cc ”的正告。(假如make终止,尝尝make -k陈述它即使失足承袭剩下的机关步骤)。

  • 假如你不想要位于“/usr/local/var”目录上面的日记(log)文件和数据库,使用近似于下列configure下令的一个:
    shell>./configure--prefix=/usr/local/mysql 
    shell>./configure--prefix=/usr/local --localstatedir=/usr/local/mysql/data
    

    第一个下令变化装置前缀以便任何东西被装配在“/usr/local/mysql”上面而非缺省的“/usr/local”。第二个下令留存缺省装配前缀,可是覆盖了数据库目录缺省目录(每每是“/usr/local/var”)而且把它改/usr/local/mysql/data.

  • 假如你正在使用Unix而且你想要MySQL的套接字位于缺省所在以外的某个处所(每每在目录“/tmp”“/var/run”,使用象多么的configure的下令:
    shell> ./configure -- with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock

    看重给出的文件必须是一个绝对途径!

  • 假如你想编译静态链接次序(例如,制作二进制分发、得到更快的速率或与筹划与RedHat分发的一些),像多么运转configure
    shell>./configure --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
    
  • 假如你正在使用gcc而且没有装配libg libstdc ,你可以陈述configure使用gcc作为C 编译器:
    shell> CC=gcc  CXX=gcc  ./configure

    当你使用时gcc作为C 编译器是,它将不试图链接libg libstdc 。假如机关失败而且孕育发生有关编译器或链接器的错误,不能创设共享库“libmysqlclient.so.#”(“#”是一个版本号), 你可以经过进程为configure指定--disable-shared选项来筹划此功效。在这种环境下,configure将不机关一个共享libmysqlclient.so.#库。

  • 你可以设置MySQL关于非NULL的列倒运用DEFAULT列值(即,不答应列是NULL)。这招致INSERT语句孕育发生一个错误,除非你大白地为全部要求非NULL值的列指定值。为了抑制使用缺省值,多么运转configure
    shell> CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS  ./configure
  • 缺省地,MySQL使用ISO-8859-1(Latin1)字符集。为了转变缺省设置,使用--with-charset选项目:
    shell> ./configure -- with-charset=CHARSET

    CHARSET可以是big5cp1251cp1257czechdanishdec8doseuc_krgb2312 gbk、german1hebrewhp8hungariankoi8_rukoi8_ukrlatin1latin2sjisswe7tis620ujisusa7win1251win1251ukr之一。见9.1.1 用于数据和排序的字符集。看重:假如你想要转变字符集,你必须在设置配备陈设时代做make distclean!假如你想在效劳器和客户之间变卦字符,你应该看一下SET OPTION CHARACTER SET下令。见7.25 SET OPTION句法。正告:假如你在创设了任何数据库表之后转变字符集,你将必须对每个表运转myisamchk -r -q,不然你的索引能够不正确地排序。(假如你装配了MySQL,创设一些表,然后从新设置配备陈设MySQL使用一个差此外字符集而且从新装配它,这时就能够孕育发生这种环境。)

  • 为了设置配备陈设MySQL带有调试代码,使用--with-debug选项:
    shell> ./configure --with-debug

    这招致包孕一个安全的内存分配器,能缔造一些错误和并供给关于正在孕育发生的事情的输入。见G.1调试一个MySQL效劳器。

  • 属于特定零碎的选项可在本章特定零碎的小节里找到。见4.11 零碎特定的功效。





版权声明: 原创作品,答应转载,转载时请务必以超链接方式标明文章 原始来因 、作者信息和本声明。不然将穷究纪律责任。

posted @ 2011-03-07 17:58  蓝色的天空III  阅读(288)  评论(0编辑  收藏  举报