天天看点

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文件的相关参数,便于升级、删除、查询与验证

 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

   --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

  #/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包分组信息

 如何为yum定义repo文件

  [Repo_ID]

  name=Description

  baseurl=

   ftp://

   http://

  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

  repolist:显示repo列表及其简要信息

   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}

本文转自 陈延宗 51CTO博客,原文链接:http://blog.51cto.com/407711169/1156530,如需转载请自行联系原作者