rpm,srpm,yum的整理

软件包管理器
 1、打包成一文件:二进制程序,库文件,配置文件,帮助文件
 2、生成数据库,追踪所安装的每一个文件
软件包管理器的核心功能:
 1、制作软件包;
 2、安装、卸载、升级、查询、校验;
 
--------------------------------rpm

rpm命令:
 rpm:
  数据库: /var/lib/rpm
 rpmbuild:SRPM:其提供的软件内容并没有被编译,它提供的是代码源,需要自己通过编译。
 
安装的时候RPM与SRPM需要注意的问题
 1、软件安装的环境必须与打包时的环境需求一致或相当;
 2、需要满足软件的依赖属性需求;
 3、反安装时需要特别小心,最底层的软件不可先删除,否则可能造成整个系统的问题,
  则此时需要的步骤、用SRPM
 先将该文件以RPM管理的方式编译,此时SRPM会被编译成为RPM文件;
 然后将编译完成的RPM文件安装到Linux系统中
 
  文件格式 文件名格式  直接安装与否 内含程序类型 可否修改参数并编译
  RPM   XXX.rpm   可    已编译   不可
  SRPM  XXX.src.rpm  不可   未编译的源代码 可
  
RPM的优点
 1、RPM内含已经编译过的程序与设置文件等数据,可以让用户免除重新编译的困扰
 2、RPM在被安装之前,会先检查系统的硬盘容量、操作系统版本,可避免文件被错误安装
 3、RPM文件本身提供软件版本信息、依赖属性软件名称、软件用途说明、软件所含文件等信息,以便与了解软件
 4、RPM管理的方式使用数据库记录RPM文件的相关参数,便于升级、删除、查询与验证
 
 rpm:
 1、安装(install):
  rpm -i /PATH/TO/PACKAGE_FILE
   -h:以#显示进度:每个#表示2%
   -v:显示详细安装
   -vv:显示更详细的过程
   
  rpm -ivh /PATH/TO/PACKAGE_FILE
      rpm -vih rp-pppoe-3.5-32.1.i386.rpm
      rpm -ivh http://website.name./path/pkgname.rpm
   --nodeps:忽略依赖关系
   --replacepkgs:重新安装,替换原有安装;
   --force:强行安装,可以实现重装或降级;
      在没有网络的情况下,想用光盘来安装,那么就需要
       挂载光盘,使用: mount /dev/cdrom /media
       找出文件的实际路径:find /media -name 'pam-devel*'
       测试此软件是否有依赖性:rpm -ivh pam-devel... --text
       直接安装:rpm -ivh pam-devel...
       卸载光盘:umount /dev/cdrom
 
 2、查询 (query)
  rpm -q PACKAGE_NAMEPACKAGE_NAME
  rpm -qa:查询已经安装的所有包
  
  rpm -qi PACKAGE_NAME:查询指定包的说明信息;
  rpm -ql PACKAGE_NAME:查询指定安装包后生成的文件列表;
  rpm -qc PACKAGE_NAME:查新指定包安装的配置文件;
  rpm -qd PACKAGE_NAME:查新指定包安装的配置文件;
  
  rpm -q --scripts PACKAGE_NAME:查询指定包中包含的脚本
  
  rpm -qf /PATH/TO/SOMEFILE:查新指定的文件是由哪个rpm包安装生成的
  
  如果某rpm包尚未安装,我们需查询器说明信息、安装以后会生成的文件;
  rpm -qpi /PATH/TO/PACKAGE_FILE i软件包的信息
  rpm -qpl /PATH/TO/PACKAGE_FILE l软件包的列表
  
     rpm -qa  <==已安装软件
     rpm -q[licdR]  <==已安装的软件
     rpm -qf 存在于系统上的某个文件名
     rpm -qp[licdR]未安装的某个文件名

 3、升级
  rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的则升级,否则安装
  rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的则升级,否则退出
   --oldpackage:降级
   
 4、卸载
  rpm -e PACKAGE_NAME
   --nodeps
     找出与pam有关的软件名称,并删除
      rpm -qa | grep pam
      rpm -e pam
 5、校验
  rpm -V PACKAGE_NAME检查文件是不是被非法改变过的
  
 6、重建数据库
  rpm
   --rebuilddb:重建数据库,一定会重新建立;
   --initdb:初始化数据库,没有才建立,有就不用建立;
 
 7、检验来源合法性,及软件包完整性;
  加密类型:
   对称:加密解密使用同一对密钥
   公钥:一对儿密钥,公钥,私钥;公钥隐含于私钥中,可以提取出来并公开出去
   单向:
   /etc/pki/rpm-gpg/
    rpm -K /PATH/TO/PACKAGE_FILE
    dsa,gpg:验证来源合法性,也即验证签名:可以使用 --nosignature略过此项
    sha1,md5:验证软件包完整性;可以使用--nodigest,略过此项
  
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release:导入密钥文件
    
    
    
srpm
RPM安装:SRPM.其提供的软件内容并没有被编译,它提供的是代码源,需要自己通过编译。
  二进制格式:
  源程序-->编译-->二进制格式
   有些特性是编译选定的,如果编译时未选定此特性,将无法使用
   rpm包会落后于源码包,甚至落后很多
 定制:手动编译安装
 
 编译环境,开发环境
 开发库,开发工具,  
 
 C,C++:
  gcc:GNU C Complier,C
  g++:
  
  make:项目管理工具,
   makefile:定义了make(gcc,g++)按何种次序去编译这些源程序
   
  automake,-->makefile.in -->makefile
  autoconf,-->configure配置当前文件如何编译
  
  make install
  
  编译安装的三步骤:
  前提:准备开发环境(编译环境)
  安装"Development Tools"和"Development Libraries"
  #tar      //解压缩
  #cd  //cd到当前目录
  # ./configure脚本
    --help
    --prefix=/path/to/somewhere指定安装路径
    --sysconfdir=/PATH/TO/CONFFILE_PATH指定配置文件路径
     功能:1、让用户选定编译特性;2、检查编译环境,
  #make
  #make install
  
  #tar xf tengine-1.4.2.tar.gz
  #cd tegnine-1.4.1
  # ./configure --prefix=/usr/local/tengine --conf-path=/etc/tengine/tengine.conf
  #make
  #make install
  #/usr/local/tengine/sbin/ngix
  

  解决nginx没法直接运行,先编辑vim /etc/profile  然后加进去PATH=$PATH:/usr/local/tengine/sbin/ngix
   然后重读   source /etc/profile或者重新登录
  netstat -tnlp可以查看 其为web80端口
   可以在浏览器打开相应地址打开相应的网页
    编辑网页文件,可以cd /usr/local/tengine/  cd html/ ls  其为index.html
     然后vim编辑
 编译好软件包以后,如果想将其安装到非默认路径下  
  1、修改PATH环境变量,以能够识别此程序的二进制文件路径
   修改/etc/profile文件
   在/etc/profile.d/目录中建立一个以.sh为名称后缀的文件,在里面定义export PATH=$PATH:/path/to/somewhere
  2、默认情况下,系统搜索库文件的路径/lib,/usr/lib;要增添额外搜寻路径:
   在/etc/ld.so.conf.d/目录中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中;
   #ldconfig:通知系统重新搜寻库文件
    -v:显示重新搜寻库的过程
  3、头文件:#include 输出给系统
   默认:/usr/include
   增添头文件搜寻路径,可以使用连接进行;
    /usr/local/tengine/include/  /usr/include/
    两种方式:
    ln -s /usr/local/tengine/include/* /usr/include/或
    ln -s /usr/local/tengine/include  /usr/include/tengine
  4、man文件路径:默认安装在--prefix指定的目录下的man目录;/usr/share/man
    1、man -M /PATH/TO/MAN_DIR COMMAND
    2、在/etc/man.config中添加一条MANPATH

 
----------------------------------------------------yum


rpm --> yum           yum:rpm能力
  解决rpm的依赖关系
  

    
    
 yum仓库中的元数据文件:
  primary.xml.gz
   所有RPM包的列表
   依赖关系
   每个RPM安装生成的文件列表
  filelists.xml.gz
   当前仓库内所有RPM包的所有文件列表;
  other.xml.gz
   额外信息,RPM包的修改日志;  
  repomd.xml
   记录的是上面三个文件的时间戳和校验和;
 yum install zsh

 comps*xml:RPM包分组信息

 ftp://172.16.0.1/pub/{Sever,VT,Cluster,ClusterStorage}

 如何为yum定义repo文件
  [Repo_ID]
  name=Description
  baseurl=
   ftp://
   http://
   file:///
  enabled={1|0}允许1  不允许0
  gpgcheck={1|0}
  gpgkey=路径
 
 yum [options] [command] [package ...]
 
  -y:自动回答yes
  --installroot=/some/path:将软件安装在/some/path中而不是默认路径
  --nogpgcheck不做检查
  
  
  list:列表
   支持glob
   all
   available:可用的,仓库中有尚未安装的
   installed:已安装的
   updates:可用的升级
   

  clean:清理缓存
   packages
   headers
   metadata
   dbcache
   all
  

  repolist:显示repo列表及其简要信息
   all
   enabled:默认
   disabled
   
  install:安装
   yum install PACKAGE_NAME
   
  update:升级
   update_to:升级为指定版本
   yum list updates <==一定要是updates
   
  remove|erase:卸载
  
  info:详细信息
  
  provides| whatprovides:查看指定的文件或特性是由哪个包安装生成的
  
  groupinfo
  grouplist
  groupinstall
  groupremove
  groupupdate
  
 光盘创建yum
 /media/cdrom/{Sever,VT,Cluster,ClusterStorage}

你可能感兴趣的:(yum,rpm,SRPM)