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

编译环境

1、 安装rpm-build;

检查是否配置rpm环境

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)进入目录,创建如下文件夹

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/目录下面

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

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部分,包括一些变量定义:

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                         需要打包的文件目录

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目录,无法修改

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段

制作 mysql的rpm文件_自制mysql.rpm安装包相关推荐

  1. mysql rpm包_自制mysql.rpm安装包

    RPM安装比源码更快更方便,更利于统一版本,省去了繁琐的编译过程,下面以制作mysql的rpm安装包为例. 编译环境 1. 安装rpm-build: 检查是否配置rpm环境 1 # sudo yum ...

  2. mysql 参数sql文件_为MySQL的source命令导入SQL文件配置参数

    为MySQL的source命令导入SQL文件配置参数 执行 mysql -uroot -p 输入密码后进入 MySQL 命令提示符 set charset utf8; source /root/xxx ...

  3. mysql 读取data文件_利用mysql的LOAD DATA INFILE的功能读取客户端文件

    前言:今天在浏览某知论坛时,看到某大佬在渗透过程中使用伪造的MySQL服务端读取客户端文件,此大佬在利用过程中描述得不是很详细,作为小白的我看不懂啊,由此产生了此篇文章. 某大佬文章:https:// ...

  4. mysql cluster 数据文件_关于MYSQL CLUSTER数据文件存放节点错误问题 -问答-阿里云开发者社区-阿里云...

    SQL节点,DATA节点均已配置正常,但是出现一个匪夷所思的问题. 在33节点执行了建库脚本及建表脚本,发现数据文件在33和34两个SQL节点存在,按理说数据文件应该数据节点上的DATADIR. Co ...

  5. linux jdk1.8 rpm安装全教程,含安装包

    linux jdk1.8 rpm安装全教程,含安装包 大家好,我是酷酷的韩金群~ 1.linux系统jdk安装包准备 这里是jdk-8u311-linux-x64.rpm 百度网盘地址(永久有效): ...

  6. mysql导入dat文件_从零开始学习 MySQL 系列--索引、视图、导入和导出

    前言 上篇文章我们学习了数据库和数据表操作语句,今天我们学习下数据库索引,视图,导入和导出的知识. 作为基础篇,不会涉及到关于索引和视图的高级应用和核心概念,但是基本操作大家会了解,尤其是关于索引的内 ...

  7. mysql 读取文件_关于mysql:逐行读取文件而不将整个文件加载到内存中

    我正在使用50 Gb MySQL导出文件,并对其执行脚本操作列表以转换为SQLite3可加载形式(我从这里得到的线索:脚本将mysql dump sql文件转换为可以导入sqlite3的格式D b ) ...

  8. mysql日期维表sql文件_《MySQL必知必会》笔记(SQL练习+建表语句)

    站在巨人的肩上 Standing On Shoulders Of Giants 部分转自:https://www.jianshu.com/p/294502893128 https://blog.csd ...

  9. 哪些是能安装mysql的文件_安装mysql详细步骤有哪些?

    安装mysql详细步骤有哪些? 安装mysql详细步骤有: MySQL下载 进入页面官网,找到下载页面页面下拉,找到如下图,然后点击下载Windows (x86, 64-bit), ZIP Archi ...

最新文章

  1. Arch linux
  2. HDU 1978 How many ways DP问题
  3. ABP vNext微服务架构详细教程——架构介绍
  4. Android学习路线总结
  5. Java 目录操作一(递归创建目录、删除目录、判断目录是否为空、判断文件是否隐藏、获取目录大小、在指定目录中查找文件)
  6. Spring 框架基础(03):核心思想 IOC 编程说明,案例演示
  7. LeetCode--45. 跳跃游戏Ⅱ(贪心)
  8. java实现面向对象编程_java实现面向对象编程
  9. 重读《从菜鸟到测试架构师》--构建测试
  10. 【益智题】十块钱去哪了?
  11. 对象可以创建数组吗_淘宝联盟平台可以创建淘礼金吗?相关问题解答
  12. linux系统下如何github,在Linux系统下使用Github的基本教程
  13. PHP的设计模式及场景应用介绍
  14. 输出任意乘法 口诀表
  15. 如何自学CAD制图?学会这5个方法,只需一周就能从小白变大神
  16. java根据word模板导出_java根据word模板导出word文件
  17. hbase报错: ERROR: Can‘t get master address from ZooKeeper; znode data == null
  18. 基于SSH+Html的外汇资产业务交易管理系统设计与实现
  19. Makefile: 参数-I (大写字母i), -l (小写字母l) 和-L的区别
  20. 程序员公司实行996,加班费却只有10块!网友:我们20块

热门文章

  1. html script 放置位置,script标签应该放在HTML哪里,总结分享
  2. django安装_技术大牛详解:Django框架之环境安装
  3. Mybatis源码之与Spring集成包
  4. mysql查询很慢优化方法1
  5. idea中Error:java: Compilation failed: internal java compiler error
  6. Hive的数据模型-分区表
  7. java continue goto_Java中goto和break、continue实现区别
  8. python ide如何运行_ide - 如何运行Python程序?
  9. c语言 文件游程统计,游程 码表 如何形成
  10. 博客url什么形式_URL的完整形式是什么?