在我的组织中,我们需要为我们的Scientific Linux节点部署自定义的mysql包。 我们需要最新版本的mysql和安装目录
/select/ MySQL的
我试图从通用Linux源代码存档mysql-5.5.18.tar.gz
这是我第一次尝试构build一个rpm包,并且被这个spec文件卡住了:
Name: mysql Version: 5.5.18 Release: 1 Summary: よろしく Group: incubation License: GPL Source0: mysql-5.5.18.tar.gz BuildRoot: %{_tmppath}/%{name}-buildroot Source1: mysql.sysconfig Source2: mysql.init Source3: my.cnf %description first shot %prep %setup -q %build cmake . -DCMAKE_INSTALL_PREFIX="/opt/mysql" \ -DMYSQL_DATADIR="/var/lib/mysql" %install rm -rf $RPM_BUILD_ROOT make DESTDIR=$RPM_BUILD_ROOT install mkdir -p $RPM_BUILD_ROOT/var/log touch $RPM_BUILD_ROOT/var/log/mysqld.log mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d mkdir -p $RPM_BUILD_ROOT/var/run/mysqld mkdir -p $RPM_BUILD_ROOT/etc/sysconfig install -m 0755 -d $RPM_BUILD_ROOT/var/lib/mysql %clean rm -rf $RPM_BUILD_ROOT
失败像这样:
rpmbuild -ba SPECS/mysql-server.spec [ STRIPPED DATA ] -- Installing: /home/jean_daniel/rpmbuild/BUILDROOT/mysql-5.5.18-1.x86_64/opt/mysql/man/man8/mysqld.8 + mkdir -p /home/jean_daniel/rpmbuild/BUILDROOT/mysql-5.5.18-1.x86_64/var/log + touch /home/jean_daniel/rpmbuild/BUILDROOT/mysql-5.5.18-1.x86_64/var/log/mysqld.log + mkdir -p /home/jean_daniel/rpmbuild/BUILDROOT/mysql-5.5.18-1.x86_64/etc/rc.d/init.d + mkdir -p /home/jean_daniel/rpmbuild/BUILDROOT/mysql-5.5.18-1.x86_64/var/run/mysqld + mkdir -p /home/jean_daniel/rpmbuild/BUILDROOT/mysql-5.5.18-1.x86_64/etc/sysconfig + install -m 0755 -d /home/jean_daniel/rpmbuild/BUILDROOT/mysql-5.5.18-1.x86_64/var/lib/mysql + /usr/lib/rpm/find-debuginfo.sh --strict-build-id /home/jean_daniel/rpmbuild/BUILD/mysql-5.5.18 extracting debug info from /home/jean_daniel/rpmbuild/BUILDROOT/mysql-5.5.18-1.x86_64/opt/mysql/bin/mysql_plugin extracting debug info from /home/jean_daniel/rpmbuild/BUILDROOT/mysql-5.5.18- [ STRIPPED DATA ] extracting debug info from /home/jean_daniel/rpmbuild/BUILDROOT/mysql-5.5.18-1.x86_64/opt/mysql/lib/libmysqlclient.so.18.0.0 symlinked /usr/lib/debug/opt/mysql/lib/libmysqlclient.so.18.0.0.debug to /usr/lib/debug/opt/mysql/lib/libmysqlclient_r.so.18.debug symlinked /usr/lib/debug/opt/mysql/lib/libmysqlclient.so.18.0.0.debug to /usr/lib/debug/opt/mysql/lib/libmysqlclient_r.so.debug symlinked /usr/lib/debug/opt/mysql/lib/libmysqlclient.so.18.0.0.debug to /usr/lib/debug/opt/mysql/lib/libmysqlclient.so.debug symlinked /usr/lib/debug/opt/mysql/lib/libmysqlclient.so.18.0.0.debug to /usr/lib/debug/opt/mysql/lib/libmysqlclient_r.so.18.0.0.debug symlinked /usr/lib/debug/opt/mysql/lib/libmysqlclient.so.18.0.0.debug to /usr/lib/debug/opt/mysql/lib/libmysqlclient.so.18.debug cpio: mysql-5.5.18/storage/innobase/lexyy.c: Cannot stat: No such file or directory cpio: mysql-5.5.18/storage/innobase/pars0grm.c: Cannot stat: No such file or directory cpio: mysql-5.5.18/storage/innobase/pars0grm.y: Cannot stat: No such file or directory cpio: mysql-5.5.18/storage/innobase/pars0lex.l: Cannot stat: No such file or directory 74358 blocks + /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot + /usr/lib/rpm/redhat/brp-compress + /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip + /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump + /usr/lib/rpm/brp-python-bytecompile + /usr/lib/rpm/redhat/brp-python-hardlink + /usr/lib/rpm/redhat/brp-java-repack-jars error: Bad file: /home/jean_daniel/rpmbuild/SOURCES/my.cnf: No such file or directory error: Bad file: /home/jean_daniel/rpmbuild/SOURCES/mysql.init: No such file or directory error: Bad file: /home/jean_daniel/rpmbuild/SOURCES/mysql.sysconfig: No such file or directory RPM build errors: Bad file: /home/jean_daniel/rpmbuild/SOURCES/my.cnf: No such file or directory Bad file: /home/jean_daniel/rpmbuild/SOURCES/mysql.init: No such file or directory Bad file: /home/jean_daniel/rpmbuild/SOURCES/mysql.sysconfig: No such file or directory
我不知道在哪里看。
有任何想法吗? 提前致谢
缺less的文件(在spec文件中指定为Source [123])是RedHat特定的,或者是基本的my.cnf文件。 这些通常不会包含在基本的mysql-5.5.18源代码包中,通常由Red Hat在RPM中添加。
我会做的是得到这个版本的MySQL的SRPM。 转到http://dev.mysql.com/downloads/mysql/和“select平台:源代码”。 这将为您提供RHEL的SRPM列表。 select一个对应于您的版本的科学和安装它。
这会给你一些/ usr / src / redhat文件(我想,这已经有一段时间了),包括一个RedHat spec文件,你可以修改它指向/ opt / mysql。 它也会给你在/ usr / src / redhat / SOURCES目录中缺less的补充文件。 你可以从那里继续。 RPM构build过程在SOURCES目录中查找这些文件。 (当你实际构build它时,spec文件可能会把所有东西都分解成一堆单独的RPM,即客户端软件包,服务器软件包,开发库等等)
更新:看看http://fedoraproject.org/wiki/How_to_create_an_RPM_package#Macros ,它描述了spec文件如何排列已安装的文件。 我相信你需要在spec文件的顶部定义像“_bindir”,“_sbindir”等macros。