墨墨導(dǎo)讀:本文詳細(xì)介紹一鍵式安裝部署,,定制化制作MySQL RPM包的過程,,希望可以幫助到讀者朋友 ,。 rpm的全稱是Redhat Package Manager,,有五種基本的操作功能:安裝、卸載,、升級(jí),、查詢和驗(yàn)證。 linux軟件包分為兩大類: (1)二進(jìn)制類包,,包括rpm安裝包(一般分為i386和x86等幾種) (2)源碼類包,,源碼包和開發(fā)包應(yīng)該歸位此類(.src.rpm)。 通過官網(wǎng)提供rpmbuild工具,,可自行打包軟件,。下面是制作過程,。 1 安裝工具包
yum install make gcc rpm-build rpmdevtools -y yum install make cmake gcc gcc-c++ bison libaio ncurses-devel perl perl-DBI perl-DBD-MySQL perl-Time-HiRes readline-devel numactl zlib-devel curldevel 2 初始化目錄結(jié)構(gòu)
3 下載源碼包
2)Mysql5.6后都要依賴boost_1_59_0.tar.gz包,,所以這里我直接解壓到BUILD目錄下,,不然檢測(cè)不到; 4 配置文件 [root@CS20190727 SPECS]# cat mysql5.7.26.spec Name: mysql Version: 5.7.26 Release: 1%{?dist} License: GPL URL: http://downloads.mysql.com/archives/get/file/mysql-5.7.26.tar.gz Group: applications/database Source: %{name}-%{version}.tar.gz BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) BuildRequires: cmake Packager: [email protected] Autoreq: no #Source: %{name}-%{version}.tar.gz prefix: /opt/rpm/mysql-%{version} Summary: MySQL 5.7.26
%description The MySQL(TM) software delivers a very fast, multi-threaded, multi-user, and robust SQL (Structured Query Language) database server. MySQL Server is intended for mission-critical, heavy-load production systems as well as for embedding into mass-deployed software.
%define MYSQL_USER mysql %define MYSQL_GROUP mysql
%prep %setup -n mysql-%{version}
%build
#CFLAGS="-O3 -g -fno-exceptions -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing" #CXX=g++ #CXXFLAGS="-O3 -g -fno-exceptions -fno-rtti -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing" #export CFLAGS CXX CXXFLAGS
cmake \ -DCMAKE_INSTALL_PREFIX=%{prefix} \ -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \ -DMYSQL_DATADIR=/data/mysql \ -DMYSQL_TCP_PORT=3310 \ -DSYSCONFDIR=/etc \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DEXTRA_CHARSETS=all \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DWITH_DEBUG=0 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_BOOST=../boost_1_59_0 \ -Wno-dev
make -j `cat /proc/cpuinfo | grep processor| wc -l`
%install rm -rf %{buildroot} make install DESTDIR=%{buildroot} cp %{_sourcedir}/my.cnf $RPM_BUILD_ROOT%{prefix}/
%pre groupadd mysql useradd -g mysql -s /bin/nologin -M mysql >/dev/null 2>&1
mkdir -p /data mkdir -p /data/mysql mkdir -p /data/mysqltmp mkdir -p /data/dbdata
chown -R mysql:mysql /data chmod 700 /data/mysqltmp
%post /bin/cp %{prefix}/support-files/mysql.server /etc/init.d/mysql /bin/cp %{prefix}/my.cnf %{_sysconfdir}/my.cnf chkconfig mysql on %{prefix}/bin/mysqld --initialize-insecure --basedir=%{prefix} --datadir=/data/mysql --user=mysql service mysql start chown -R mysql:mysql /data/mysql echo "export PATH=.:\$PATH:%{prefix}/bin;" >> ~/.bash_profile source ~/.bash_profile
%preun service mysql stop chkconfig --del mysql userdel -r mysql >/dev/null 2>&1 rm -rf %{prefix} >/dev/null 2>&1 rm -rf /data/mysql >/dev/null 2>&1 rm -rf /etc/init.d/mysql >/dev/null 2>&1
%files %defattr(-, %{MYSQL_USER}, %{MYSQL_GROUP}) %attr(755, %{MYSQL_USER}, %{MYSQL_GROUP}) %{prefix}/*
%changelog Name: 軟件包的名稱,,后面可使用%{name}的方式引用 Summary: 軟件包的內(nèi)容概要 Version: 軟件的實(shí)際版本號(hào),,例如:1.0.1等,后面可使用%{version}引用 Release: 發(fā)布序列號(hào),,例如:1linuxing等,,標(biāo)明第幾次打包,后面可使用%{release}引用 Group: 軟件分組,,建議使用標(biāo)準(zhǔn)分組 License: 軟件授權(quán)方式,,通常就是GPL Source: 源代碼包,可以帶多個(gè)用Source1,、Source2等源,,后面也可以用%{source1}、%{source2}引用 BuildRoot: 這個(gè)是安裝或編譯時(shí)使用的“虛擬目錄” URL: 軟件的主頁 Vendor: 發(fā)行商或打包組織的信息,,例如RedFlag Co,Ltd Disstribution: 發(fā)行版標(biāo)識(shí) Prefix: %{_prefix} 這個(gè)主要是為了解決今后安裝rpm包時(shí) %description 軟件的詳細(xì)說明 %install 開始把軟件安裝到虛擬的根目錄中 %clean 清理臨時(shí)文件 %files 定義那些文件或目錄會(huì)放入rpm中 %changelog 變更日志 %pre rpm前執(zhí)行的腳本 %post rpm安裝后執(zhí)行的腳本 %preun rpm卸載前執(zhí)行的腳本 %postun rpm卸載后執(zhí)行的腳本 5 執(zhí)行命令打包
6 rpm安裝MySQL 7 參考 rpmbuild 構(gòu)建rpm包時(shí)報(bào)錯(cuò)解決 error: Installed (but unpackaged) file(s) found: 解決的辦法: 找到 /usr/lib/rpm/macros 中 %__check_files /usr/lib/rpm/check-files %{buildroot} 注釋掉 https://wiki./HowTos/SetupRpmBuildEnvironment https://blog.51cto.com/songhl/2152087 https://www./html/149.html https://docs./en-US/packaging-guidelines/RPMMacros/ |
|