制作 mysql的rpm文件_自制mysql.rpm安装包

RPM安装比源码更快更方便,更利于统一版本,省去了繁琐的编译过程,下面以制作mysql的rpm安装包为例。

编译环境

1、 安装rpm-build;

检查是否配置rpm环境

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 # sudo yum list | greprpm2 This system is not registered with RHN.3 RHN support will be disabled.4 redhat-rpm-config.noarch 8.0.45-32.el5 installed5 rpm.x86_64 4.4.2.3-22.el5 installed6 rpm-build.x86_64 4.4.2.3-22.el5 installed7 rpm-libs.x86_64 4.4.2.3-22.el5 installed8 rpm-python.x86_64 4.4.2.3-22.el5 installed

View Code

若未安装则:

# sudo yum install rpm-build

2、创建rpm编译目录

(1)选定目录,选择一个可进行写操作的目录,这里选择根目录/home/wyett;

(2)进入目录,创建如下文件夹

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 # cd /home/wyett2 # sudo mkdirmysql3 # cd mysql4 # sudo mkdir BUILD RPMS SOURCES SPECS SRPMS

View Code

BUILD //解压后的tar.gz包

RPMS  //编译后的RPM

SOURCES //放编译需要的文件mysql-xxx.tar.gz,*.cnf

SPECS //*.spec编译脚本

SRPMS //src格式的rpm包存放的位置

3、预先准备mysql-x.x.x.tar.gz源码安装包,下载地址:http://downloads.mysql.com/archives/community/,放在/home/wyett/mysql/SOURCES/下面。

4、准备mysql-company-xxx.spec文件,放在/home/wyett/mysql/SPECS/目录下面

这样,编译环境部署完成,目录结构如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 # pwd

2 /home/wyett/mysql3 # tree4 .5 |--BUILD6 |--RPMS7 |--SOURCES8 | `-- mysql-xxx.tar.gz9 |--SPECS10 | |-- mysql-xxx-xxx.spec11 | `-- mysql-xxx-xxx.spec12 `-- SRPMS

View Code

准备spec文件

Spec文件包括三部分,introduction section,编译部分,files部分;

1、introduction section部分,包括一些变量定义:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 ###################################################2 #File name:mysql-company-x.x.x-release.x86_64.spec3 #Author :wyett4 #Date :Oct 15,2013

5 #6 ###################################################7

8 %define _topdir /home/wyett/mysql9 %define name mysql10 %define version x.x.x11 %define release dba.4

12 %define serial 1

13 %define userpath /usr/local/mysql14 %define myusr mysql15 %define mygrp mysql16 %define buildroot %{_topdir}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)17

18 BuildRoot:%{buildroot}19 Summary:Mysql.rmp package of the company20 License:GPL21 Name:%{name}22 Version:%{version}23 Release:%{release}24 Vendor:Mysql package of the company25 Url:http://www.company.com/

26 SOURCE0:%{name}-%{version}.tar.gz27 #SOURCE1:my3306.cnf28 BuildRequires:ncurses-devel29 Group:Application/Databases

View Code

%define这部分变量可以自己指定,不要也可以,不过定义后修改方便,其中:

_topdir 定义了rpm工作的根目录,上文中提到,需要有写权限

Buildroot 定义了rpm包安装后的根目录,相当于咱们编译安装的 /目录,rpm打包就打包这部分;

下面部分需要注意:

BuildRoot:%{buildroot}              //编译安装的根目录

SOURCE0:%{name}-%{version}.tar.gz      //tar包

SOURCE1:my3306.cnf               //配置文件

BuildRequires:ncurses-devel                              //mysql编译安装时需要的环境包

2、编译部分,包括

%description             文字性描述

%prep                      包括解压命令和其他一些shell脚本

%setup –q                解压tar包到BUILD目录

%build                      预编译,如果再需要重新编译,修改这部分就行

./configure

Make

%setup                     安装,安装到BuildRoot(即${RPM_BUILD_ROOT})目录下

%clean                      清理一些编译过程的目录

%file                         需要打包的文件目录

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 %description2 The rpm package forthe company3

4 %prep5 %setup-q -n %{name}-%{version}6

7 %build8 ./configure \9 --prefix=%{userpath} \10 --with-comment=Source \11 --with-server-suffix=-enterprise-gpl \12 --with-mysqld-user=mysql \13 --without-debug \14 --with-charset=latin1 \15 --with-extra-charsets=big5,ascii,gb2312,gbk,utf8 \16 --with-client-ldflags=-all-static \17 --with-mysqld-ldflags=-all-static \18 --with-plugins=csv,innobase,myisam,heap,partition \19 --enable-local-infile20 make -j 8

21

22

23 %install

24 if

25 getent group %mygrp >/dev/null

26 then

27 : OK group %mygrp already present28 else

29 /usr/sbin/groupadd -r %mygrp 2>/dev/null ||:30 fi

31 if

32 id %myusr > /dev/null 2>&1

33 then

34 : OK user %myusr already present35 else

36 /usr/sbin/useradd -g %mygrp -s /sbin/nologin -c "User for Mysql" -d /var/tmp %myusr 2> /dev/null ||:37 fi

38 if ! [ -d %{buildroot}/mysqldata ]39 then

40 %{__mkdir} -p %{buildroot}/mysqldata41 fi

42

43 make install DESTDIR=%{buildroot} INSTALLDIRS=vendor44 install -m 755 %{SOURCE1} %{buildroot}/mysqldata/mysql/data/mysql3306/my3306_master.cnf45 #install

46 %{__rm} -rf %{buildroot}/usr/local/mysql/sql-bench47 %{__rm} -rf %{buildroot}/usr/local/mysql/mysql-test48

49

50 %clean51 %post52

53 if

54 getent group %mygrp >/dev/null

55 then

56 : OK group %mygrp already present57 else

58 /usr/sbin/groupadd -r %mygrp 2>/dev/null ||:59 fi

60 if

61 id %myusr > /dev/null 2>&1

62 then

63 : OK user %myusr already present64 else

65 /usr/sbin/useradd -g %mygrp -s /sbin/nologin -c "User for Mysql" -d /var/tmp %myusr 2> /dev/null ||:66 fi

67 /usr/local/mysql/bin/mysql_install_db --user=mysql --datadir=/mysqldata/mysql/data/mysql330668 chown mysql:mysql /mysqldata -R

View Code

注:在mysql 5.5及以上版本中,不再对./configure支持,需要cmake进行编译安装,相关参数请参考:

http://blog.csdn.net/seteor/article/details/7249513

3、生成rpm包的打包目录,默认BUILDROOT目录,无法修改

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 %files2 %defattr (-,root,root)3 %{userpath}/

4 /mysqldata

View Code

生成rpm包

rpmbuild命令,过程可以分阶段

-bb    制作成二进制                               // # sudo rpmbuild –bb mysql.spec

-bs    源码形式

-ba    源码和二进制两种形式

-bl    制作后检测buildroot生成但没有包含到rpm包中的文件,注意如果生成未包含进去会出错

-bc    只执行到%

-bi    只执行到%install段

-bp    只执行到%prep段

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql multi主从复制_mysqld_multi方式配置Mysql数据库主从复制

mysqld_multi设计用于管理在同一台机器上运行的多个mysqld进程,这些进程使用不同的socket文件并监听在不同的端口上。mysqld_multi可以批量启动、关闭、或者报告这些mysqld进程的状态。在这里我们通过这种方式来在同一个机器上启动多个数据库实例,并配置…

mysql中if在oracle怎么用_mysql和oracle的mybatis操作

1.Oracle、MySQL插入时返回下一个主键的操作Xml代码 Oracle:SELECT SEQ_ROLE.NEXTVAL AS ID FROM DUALinsert into ROLE(ID, NAME, CREATE, MODIFY) values (#{id}, #{name}, sysdate, sysdate)注意:这边的keyProperty"id"中"id"指的…

mysql数据库的三级模式_2016年计算机三级MySQL数据库试题

2016年计算机三级MySQL数据库试题一、选择题1.E-R图提供了表示信息世界中实体、属性和________的方法。A.数据B.联系C.表D.模式2.数据库系统的核心是________。A.数据模型B.数据库管理系统C.数据库D.数据库管理员3.E-R图是数据库设计的工具之一,它一般适用于建立数据…

mysql没加引号导致全表扫描_mysql隐蔽的索引规则导致数据全表扫描

索引是为了加速数据的检索,但是不合理的表结构或适应不当则会起到反作用。我们在项目中就遇到过类似的问题,两个十万级别的数据表,在做连接查询的时候,查询时间达到了7000多秒还没有查出结果。首先说明,关联的字段都已…

mysql 多个密码登录_mysql 多实例登录密码测试

最近在做mysql 多实例的时候,采用不同的方式登录mysql数据库,发现mysql -uroot -p -h 127.0.0.1 -P3308 ,登录时居然不要密码就可以登录,吓得我一身汗,经过检查终于找到原因记录下来,给小白们参考。[rootmy…

redhat5.4 安装mysql_Linux redhat 5.4上安装MYDNS

Linux redhat 5.4上安装MYDNS一、1,MYDNS 的简介:MyDNS是一个UNIX平台下的免费DNS服务器端软件。它被设计成直接从数据库中读取DNS记录软件,并且修改记录后也可时时生效。在MyDNS上,你可随心所欲地增加你自己的次级域名的同时建站…

java的反射机制是什么_JAVA反射机制

一、什么是反射机制 简单的来说,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息。二、哪里用到反射机制 有些时候,我们用过一些知识&#xf…

java unsafe park_Java魔法类——Unsafe应用解析

前言Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等,这些方法在提升Java运行效率、增强Java语言底层资源操作能力方面起到了很大的作用。但由于Unsafe类使Java…

计算机视觉基础(12)——图像恢复

前言 我们将学习图像恢复相关知识。主要有图像恢复的定义、评价标准和实现图像恢复的方法。图像恢复任务包括图像去噪、去模糊、图像超分辨率、图像修复等;评价标准有峰值信噪比和结构相似性;图像超分辨的方法有传统方法和基于深度学习的方法&#xff1a…

百度编辑器图片上传 java_百度编辑器粘贴图片自动上传到服务器(Java版)

ChromeIE默认支持粘贴剪切板中的图片,但是我要发布的文章存在word里面,图片多达数十张,我总不能一张一张复制吧?Chrome高版本提供了可以将单张图片转换在BASE64字符串的功能。但是无法处理多张图片。而且转换成BASE64后是作为内容…

matlab解方java_Java:调用window的matlab遇到的问题和解决方案

描述容易报错的问题和可能原因1.java.lang.NullPointerException解决途径:window和linux的文件路径不同,window分隔符是\\,linux是/2.Exception in thread “main” java.lang.ExceptionInInitializerError解决途径:matlab生成的j…

java中的输入语句判断正负_在java中使用方法调用统计数组中正数的个数,将判断数据的正负功能定义成方法...

满意答案donglin820推荐于 2018.04.21public class TestDemo {static int count 0;// 统计整数的个数public static void main(String[] args) {int[] number new int[10];// 动态生成一个整数数组(长度为10)Scanner s new Scanner(System.in);for (int i 0; i < 10; i)…

java二级考试有草稿纸吗_“大型考试”为什么需要回收草稿纸?学生:这么多年也没整明白!...

在大家的求学生涯中&#xff0c;肯定不难发现这个事情&#xff0c;那就是学生考完试不能带走草稿纸&#xff0c;尤其是高考、中考这种全国统一大型考试&#xff0c;英语四六级等等&#xff0c;而一些初中高中、大学院校内部期末考试也是这样。学校和考场提供统一草稿纸目的是非…

expressjs如何做mysql注入_Node.js+Express+Mysql 实现增删改查

这次选用nodejsexpressmysql 使用http作为客户端&#xff0c;express框架搭建服务端&#xff0c;从而实现数据的增删改查。这篇文章可以算作上篇文章的升级篇&#xff0c;加入了和数据库的交互。安装node 直接去官网下载选择下载即可https://nodejs.org/en/download/current/cn…

docker pxc mysql_docker安装pxc集群的详细教程

前言现在mysql自建集群方案有多种&#xff0c;keepalived、MHA、PXC、MYSQL主备等&#xff0c;但是目前根据自身情况和条件&#xff0c;选择使用pxc的放来进行搭建&#xff0c;最大的好处就是&#xff0c;多主多备&#xff0c;即主从一体&#xff0c;没有同步延时问题&#xff…

php微信开源框架,SOPHP免费微信开源框架 php版 v4.5

SOPHP是一款稳定开源的微信公众平台开发系统,也是基于weiphp开发的第一款商业系统。依托自身强大的钩子功能&#xff0c;她可以帮助大家快速开发出自己想要的微信功能插件&#xff0c;运营近两年来我们收获了上千用户与良好的口碑。作为一个开源产品&#xff0c;希望大家都能参…

java系统管理员停用,为什么犯错让我成为一个更好的系统管理员

诀窍就是同一个错误不要犯两次。到目前为止&#xff0c;我已做了十多年 Fedora 贡献者。 Fedora 有一个由开发者和用户组成的大型社区&#xff0c;其中每一个人&#xff0c;不管是极富洞察力的用户还是出色的程序员&#xff0c;都有一些独有的技能。我喜欢这样的社区&#xff0…

php ajax json 实例,php+ajax+json 详解及实例代码

phpajaxjson 实例代码html页面&#xff1a;$(function(){$("#send").click(function(){var cont $("input").serialize();$.ajax({url:ab.php,type:post,dataType:json,data:cont,success:function(data){var str data.username data.age data.job;$(&…

php 五颗星评价,简单实现点触/输入值给五颗星评价

先上效果图gif.gif1.码UI。。。UILabel *label [[UILabel alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 30)];label.text "点击星星可以自动获取评分哦&#xff5e;";label.textColor [UIColor whiteColor];label.textAlignment NSTextAlignmentCenter;…

oracle1461,Oracle 10.2.0.3的ORA-1461错误

Oracle 10.2.0.3的ORA-1461错误ORA-1461 encountered when generating server alert SMG-3500经研究发现&#xff0c;其是Oracle 10g的一个Bug&#xff0c;并且目前只有Oracle 10.2.0.3会遇到&#xff1a;造成这个错误的原因是由于SMON 进程正在 UPDATE SMON_SCN_TIME表时引发了…