日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發(fā)布時間:2025/3/11 数据库 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 制作 mysql的rpm文件_自制mysql.rpm安装包 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

RPM安裝比源碼更快更方便,更利于統(tǒng)一版本,省去了繁瑣的編譯過程,下面以制作mysql的rpm安裝包為例。

編譯環(huán)境

1、 安裝rpm-build;

檢查是否配置rpm環(huán)境

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、創(chuàng)建rpm編譯目錄

(1)選定目錄,選擇一個可進行寫操作的目錄,這里選擇根目錄/home/wyett;

(2)進入目錄,創(chuàng)建如下文件夾

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

這樣,編譯環(huán)境部署完成,目錄結構如下:

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編譯安裝時需要的環(huán)境包

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進行編譯安裝,相關參數(shù)請參考:

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??? 只執(zhí)行到%

-bi??? 只執(zhí)行到%install段

-bp??? 只執(zhí)行到%prep段

總結

以上是生活随笔為你收集整理的制作 mysql的rpm文件_自制mysql.rpm安装包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。