23
用 RPM&YUM 用用用用用用用用 @NinGoo http://NinGoo.net 2011.5.25

使用Rpm&yum进行基础软件管理

Embed Size (px)

DESCRIPTION

 

Citation preview

用 RPM&YUM 进行基础软件管理@NinGoo

http://NinGoo.net

2011.5.25

1. 简化自动安装过程2. 标准化3. 解决 RPM 依赖4. 集中的软件库,版本控制5. 简化分发部署6. 。。。

WHY: 为什么用 RPM/YUM

1. 源代码编译安装2. 二进制执行文件3. 可执行脚本4. Shell 命令5. 文本配置文件6. 。。。

WHAT: 什么适合打成 RPM包

HOW: 打包工具 rpmbuild1. 构建二进制 rpm 包rpmbuild –bb x.spec

2. 构建源码 rpm 包rpmbuild –bs x.spec

3. 同时构建二进制和源 rpm 包rpmbuild –ba x.spec

4. 从源码包构建二进制包rpmbuild –rebuild x.src.rpm

打包工作路径Default : /usr/src/redhat

BUILD : 解包编译BUILDROOT : 安装RPMS : 目标 rpm 包SOURCES : 源 tar.gz 包SPECS : spec 文件SRPMS : 目标 src.rpm 包限制: 此路径下需要 root 用户执行打包

自定义打包工作路径vi ~/.rpmmacros%_topdir /home/ningoo/rpm%_prefix /u01/mysql

mkdir /home/ningoo/rpmcd /home/ningoo/rpmmkdir RPMS SRPMS SOURCES BUILD BUILDROOT SPECS

SPEC 的精髓:宏默 认: /usr/lib/rpm/macros or /etc/rpm/macros自定义: ~/.rpmmacros

查看所有宏rpmbuild --showrc

常见宏%_topdir 工作根目录%_tmpdir 工作临时目录%_prefix 前导目录%optflags 编译优化参数%prep 准备阶段 %setup 解压 .tar.gz 包%build 编译阶段 configure/make%install 安装阶段 make install%clean 清楚临时文件%files 打包阶段,列举所有需要打进 RPM 的文件%pre 安装 RPM 前执行的动作%post 安装 RPM 后执行的动作%preun 卸载 RPM 前执行的动作%postun 卸载 RPM 后执行的动作

SPEC 文件第一部分:包的详细信息描述Name: helloworldSummary: Hello World !Version: 0.1Release: 1License: GPLURL: http://www.ningoo.net/ Group: applications/systemBuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root Source: %{name}-%{version}.tar.gzPrefix: %{_prefix}Requires: libaio-develPackager: NinGooAutoreq: no%description: xxx

SPEC 文件第一部分:包的详细信息描述$ rpm -qpi myddl-0.1-1.i386.rpm Name : myddl Relocations: /u01/mysqlVersion : 0.1 Vendor: (none)Release : 1 Build Date: 2011 年 05 月 21 日 星期六 01 时 01 分 07 秒Install Date: (not installed) Build Host: ningGroup : applications/system Source RPM: myddl-0.1-1.src.rpmSize : 92615 License: GPLSignature : (none)Packager : NinGooURL : http://www.ningoo.net/Summary : xxxDescription : xxx

SPEC 文件第二部分:打包过程控制%prep 准备阶段解压 SOURCES 下的 .tar.gz 包%setup -q

如果源 .tar.gz 包没有目录,则需要创建目录%setup -q -c -n %{name}-%{version}

编写 SPEC 文件第二部分:打包过程控制%build 编译阶段%configure 宏或者自己./configure –prefix=%{_prefix}

编译make -j `cat /proc/cpuinfo | grep processor | wc -l`

编写 SPEC 文件第二部分:打包过程控制%install 安装阶段%make_install 宏或者自己make DESTDIR=$RPM_BUILD_ROOT installormake prefix=$RPM_BUILD_ROOT installorinstall -D xxx ${RPM_BUILD_ROOT}/%{_prefix}/

编写 SPEC 文件第二部分:打包过程控制%files RPM 文件生成设置文件默认权限和属主%defattr(755,mysql,dba)

%attr(755,mysql,dba) %{_prefix}/bin/*%doc %attr(644,mysql,dba) %{_prefix}/docs/*%config %attr(644,mysql,dba) %{_prefix}/conf/*

编写 SPEC 文件第三部分:安装卸载控制部分%pre 安装前执行%post 安装结束执行%preun 卸载前执行%postun 卸载后执行

MySQL5.1 打包演示…

MySQL5.5 打包演示…

RPM 包安装卸载安装 ( 只有 relocatable 的可以使用 prefix 执行另外的安装目录 )rpm -i -prefix mysql-5.1.48.1.x86_64.rpm

卸载rpm -e mysql

升级rpm –Uvh mysql-5.1.49.1.x86_64.rpm

YUM(YellowDog Updater, Modified)

配置文件/etc/yum//etc/yum.conf/etc/yum.repos.d

安装 / 更新 / 卸载yum install mysqlyum update mysqlyum remove mysql

YUM(YellowDog Updater, Modified)

上传 RPM 到 YUM 仓库上传工具sudo yum install yumtools -b current*-b 分支,包括 stable, current, test

配置 yum…

上传yum-upload --osver=5 --arch=x86_64 --group=dba mysql-5.1.48-1.x86_64.rpm -b test

YUM(YellowDog Updater, Modified)

追求简单,做到极致 The End

Thanks~~