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

  • 10,382 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
10,382
On Slideshare
0
From Embeds
0
Number of Embeds
7

Actions

Shares
Downloads
112
Comments
0
Likes
12

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 用RPM&YUM进行基础软件管理
    @NinGoo
    http://NinGoo.net
    2011.5.25
  • 2. 简化自动安装过程
    标准化
    解决RPM依赖
    集中的软件库,版本控制
    简化分发部署
    。。。
    WHY:为什么用RPM/YUM
  • 3. 源代码编译安装
    二进制执行文件
    可执行脚本
    Shell命令
    文本配置文件
    。。。
    WHAT:什么适合打成RPM包
  • 4. HOW: 打包工具rpmbuild
    1. 构建二进制rpm包
    rpmbuild –bb x.spec
    2. 构建源码rpm包
    rpmbuild –bsx.spec
    3. 同时构建二进制和源rpm包
    rpmbuild –bax.spec
    4.从源码包构建二进制包
    rpmbuild –rebuild x.src.rpm
  • 5. 打包工作路径
    Default:/usr/src/redhat
    BUILD: 解包编译
    BUILDROOT: 安装
    RPMS: 目标rpm包
    SOURCES: 源tar.gz包
    SPECS: spec文件
    SRPMS: 目标src.rpm包
    限制: 此路径下需要root用户执行打包
  • 6. 自定义打包工作路径
    vi ~/.rpmmacros
    %_topdir /home/ningoo/rpm
    %_prefix /u01/mysql
    mkdir /home/ningoo/rpm
    cd /home/ningoo/rpm
    mkdir RPMS SRPMS SOURCES BUILD BUILDROOT SPECS
  • 7. SPEC的精髓:宏
    默 认:/usr/lib/rpm/macros or /etc/rpm/macros
    自定义:~/.rpmmacros
    查看所有宏
    rpmbuild --showrc
  • 8. 常见宏
    %_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后执行的动作
  • 9. SPEC文件
    第一部分:包的详细信息描述
    Name: helloworld
    Summary: Hello World!
    Version: 0.1
    Release: 1
    License: GPL
    URL: http://www.ningoo.net/
    Group: applications/system
    BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
    Source: %{name}-%{version}.tar.gz
    Prefix: %{_prefix}
    Requires: libaio-devel
    Packager: NinGoo
    Autoreq: no
    %description: xxx
  • 10. SPEC文件
    第一部分:包的详细信息描述
    $ rpm -qpi myddl-0.1-1.i386.rpm
    Name : myddl Relocations: /u01/mysql
    Version : 0.1 Vendor: (none)
    Release : 1 Build Date: 2011年05月21日 星期六 01时01分07秒
    Install Date: (not installed) Build Host: ning
    Group : applications/system Source RPM: myddl-0.1-1.src.rpm
    Size : 92615 License: GPL
    Signature : (none)
    Packager : NinGoo
    URL : http://www.ningoo.net/
    Summary : xxx
    Description : xxx
  • 11. SPEC文件
    第二部分:打包过程控制
    %prep 准备阶段
    解压SOURCES下的.tar.gz包
    %setup -q
    如果源.tar.gz包没有目录,则需要创建目录
    %setup -q -c -n %{name}-%{version}
  • 12. 编写SPEC文件
    第二部分:打包过程控制
    %build 编译阶段
    %configure宏或者自己
    ./configure –prefix=%{_prefix}
    编译
    make -j `cat /proc/cpuinfo | grep processor | wc -l`
  • 13. 编写SPEC文件
    第二部分:打包过程控制
    %install 安装阶段
    %make_install宏或者自己
    make DESTDIR=$RPM_BUILD_ROOT install
    or
    make prefix=$RPM_BUILD_ROOT install
    or
    install -D xxx ${RPM_BUILD_ROOT}/%{_prefix}/
  • 14. 编写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/*
  • 15. 编写SPEC文件
    第三部分:安装卸载控制部分
    %pre 安装前执行
    %post 安装结束执行
    %preun卸载前执行
    %postun卸载后执行
  • 16. MySQL5.1打包演示

  • 17. MySQL5.5打包演示

  • 18. 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
  • 19. YUM(YellowDog Updater, Modified)
    配置文件
    /etc/yum/
    /etc/yum.conf
    /etc/yum.repos.d
  • 20. YUM(YellowDog Updater, Modified)
    安装/更新/卸载
    yum install mysql
    yum update mysql
    yum remove mysql
  • 21. 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
  • 22. 参考
    • Maximum RPM
    • 23. RPM包rpmbuild SPEC文件深度说明
  • 追求简单,做到极致
    The End
    Thanks~~