装配MySQL源代码分发
作者:天极软件 泉源:天极软件
你需求下列东西机关并装配MySQL源代码:
- GNU
gunzip
解紧缩该分发。 - 一个适宜的
tar
解包分发。GNUtar
已知可以义务。 - 一个能运转的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”。假如你仅有gcc
2.7.x,你必须晋级gcc
才干编译MySQL。 - 一个出色的
make
次序。GNUmake
总是被举荐且有时必须。假如你有功效,我们举荐试一试GNUmake
3.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。
假如你装配了DBI
和Msql-Mysql-modules
Perl模块,你可以利用bin/mysql_setpermission
剧本增进新用户。
以下是更详尽的描写:
为了装配源代码分发,遵循下列步骤,然后承袭到4.15 装配前期的设置与测试,举行装配前期的初始化与测试。
- 挑选一个你要在其上面解包分发的目录,而且进入该目录。
- 从节4.1 若何得到MySQL中列出的站点之一得到一个分发文件。MySQL源代码分发以紧缩的
tar
档案供给,而且有近似于“mysql-VERSION.tar.gz”的名字,这里的VERSION
是一个近似3.23.7-alpha的数字。 - 在以后目录下解包分发:
shell> gunzip < mysql-VERSION.tar.gz | tar xvf -
这个下令创设名为“mysql-VERSION”的一个目录。
- 进入解包分发的顶级目录:
shell> cd mysql-VERSION
- 设置发行版本而且编译:
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 编译功效?,帮忙筹划很多罕见功效。
- 装配全部东西:
shell>make install
你能够需求
root
用户来运转这个下令。
- 缔造MySQL受权表(只要你曩昔没装配MySQL是必须的):
shell>scripts/mysql_install_db
看重,在运转
mysql_install_db
时,那些比3.22.10旧的MySQL版本启动MySQL效劳器。目下当今不是多么了!
- 假如你想要装配对Perl
DBI
/DBD
接口的支撑,见4.10 Perl装配看重阐明');。 - 假如你想要MySQL在你指导呆滞时自动地启动,你可以拷贝
support-files/mysql.server
到你的零碎中有启动文件的处所。更多的信息可以在support-files/mysql.server
剧本里和4.15.3 自动启动和终止MySQL找到。
在全部东西装配完以后,你应该初始化而且测试你的分发。
你可以用下列下令启动MySQL效劳器,这里BINDIR
是safe_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
可以是big5
、cp1251
、cp1257
、czech
、danish
、dec8
、dos
、euc_kr
、gb2312
gbk、german1
、hebrew
、hp8
、hungarian
、koi8_ru
、koi8_ukr
、latin1
、latin2
、sjis
、swe7
、tis620
、ujis
、usa7
、win1251
或win1251ukr
之一。见9.1.1 用于数据和排序的字符集。看重:假如你想要转变字符集,你必须在设置配备陈设时代做make distclean
!假如你想在效劳器和客户之间变卦字符,你应该看一下SET OPTION CHARACTER SET
下令。见7.25SET OPTION
句法。正告:假如你在创设了任何数据库表之后转变字符集,你将必须对每个表运转myisamchk -r -q
,不然你的索引能够不正确地排序。(假如你装配了MySQL,创设一些表,然后从新设置配备陈设MySQL使用一个差此外字符集而且从新装配它,这时就能够孕育发生这种环境。)
- 为了设置配备陈设MySQL带有调试代码,使用
--with-debug
选项:shell> ./configure --with-debug
这招致包孕一个安全的内存分配器,能缔造一些错误和并供给关于正在孕育发生的事情的输入。见G.1调试一个MySQL效劳器。
- 属于特定零碎的选项可在本章特定零碎的小节里找到。见4.11 零碎特定的功效。
版权声明: 原创作品,答应转载,转载时请务必以超链接方式标明文章 原始来因 、作者信息和本声明。不然将穷究纪律责任。