软件包安装和管理:
 库文件: 软件角度分为 1.标准库 或通用库(glibc)  2.程序附带的库
软件包:
 安装软件方式: 1.源代码需手动编译安装 2.二进制格式
 组成: 1.配置文件 2.二进制程序 3.库文件 4.帮助文件
 软件包的安装路径:
 默认路径文件保存路径:
 启动要用到的 在" /" 下
 1.usr            系统启动后用到的
 2. usr/local     第三方软件
 3.usr/local/APP 4.opt  指定的目录
 配置文件:/etc  二进制文件:/bin ;/sbin;/usr/bin;/usr/sbin 库:/lib  
  帮助文件:/usr/share/man
 
定义库文件路径::
 /etc/ld.so.conf  保存路径
  /etc/ld.so.conf.d/*.conf    保存文件路径
man定义路径:
 /etc/man.config   
     MANPATH (路径)
    
二进制格式安装:
   GPL  程序为GPL  一般为源代码
   manage ,软件包管理器
   1.redhat   .rpm包
   2.suse      rpm 同redhat rpm不同
   3.debian   .dep包
   Redhat软件包管理器 RPM  RPM is Package Manager
  命名格式: package-version-release.arch.rpm
    release redhat内部发行号    .el5  redhat企业版5
    arch:标示平台  noarch 跟平台无关
  [注:安装光盘中一般保存有大多数软件包]
rpm包管理:
rpm数据库 : /var/lib/rpm 
 一般为标准安装  安装至默认路径下
重新导入RPM数据库
 rpm --rebuilddb  重建
 rpm --initdb     原来要是有就不建

rpm包的管理的常用命令 :   包存在依赖关系
1、查询:rpm 
     -q  PACKAGE_NAME  查询软件包是否安装
     -qa  查看所有安装的软件包
     -ql packagename  列出来软件包安装都生成了那些文件
     -qc packagename  查看软件的配置文件
     -qd packagename  显示软件包安装完后生成的帮助文档
     -qf filepath     查询文件是有哪个软件包生成的
     -qi packagename  查询软件包的摘要信息
2、安装:
     rpm -i  packagename  安装
     rpm -ivh packagename 显示安装进度
           --nodeps 忽略依赖关系,但是装的软件包可能无法使用
3、卸载:
     rpm -e PACKAGENAME 卸载
                       --nodeps  忽略依赖关系
4、升级:
     rpm -U /path/to/rpm_file
         -Uvh                 老版本没装,直接安装新版本,有安装和升级
     rpm -F /path/to/rpm_file
         -Fvh                  仅能在原版本基础上升级
         --force 强行升级
         [注:内核只能安装,不能升级]
5. 校验
  rpm -V (包名) 可以查看软件包和安装文件是否被修改
  rpm -V -p  filename  安装前检查软件是否可靠
  S表示大小变化  M 权限  5 校验码 D 设备号不起配 L  U  G 属主 属组 

签名: 软件包   操作系统发行商签名使用公钥加密算法和md5 校验码
检查签名:    --checksig  只检查签名
         rpm -V (完整包名) 安装后检查
         rpm -K (完整包名) 安装前检查
         rpm -V -p (完整包名) 同上
      导入key   (key文件位置: /etc/pki/rpm-gpg/*-release)
         rpm   --import  (key文件)
       
数据库:
   重建: rpm --rebuilddb  完全重建
         rpm --initdb   没有才建 有则不建

为自动解决依赖关系而产生的软件包管理工具:
  Redhat
    1.up2date
    2.Yellow Dog
    3.yum --> rpm :Yellowdog Updater Modified
yum: 1.支持所有rpm包  2. XML文件 记录软件依赖关系 
yum获取软件包支持的协议1. ftp协议  2. http协议  3. file:///  本地文件
yum仓库:  yum repository 软件仓库
  yum客户端配置文件  :/etc/yum.conf      
  仓库配置文件  :/etc/yum.repos.d/*.repo
       XML在哪儿 yum仓库在哪儿   XML一般在仓库父目录
仓库配置:
 分类存放:
 [id]  分为四块:
    1.base
    2.VT
    3.Cluster  集群
    4.ClusterStorage  集群存储
每块下配置内容格式:  
   name=         随便起
   baseurl=URL   具体yum库地址  本地file:///yum.....找到repodata所在位置
   gpgcheck=0    校验  0 不检查
   enabled=1 /0  默认为1  不启用为0

yum客户端管理软件包yum不允许运行两次  yum list all  查看所有可用yum包
    格式:yum [option]  [command]  [package]
    
查看软件包:
   yum list ( all| installed | available )
查询文件是由哪个软件包生成的
      yum   provides | whatprovides FILE
查询yum包摘要信息:
      yum info  ==  rpm -qi
查看组:
      yum grouplist
安装组:
      yum gruopinstall  1   安装一个组  可跟多个组
安装软件包:   -y  表示自动回答为yes
     yum install  (包名,可不加版本号) p1 p2 p3 
安装本地文件:
      yum  --nogpgcheck localinstall  RPM_FILE
           --nogpgcheck  不检测签名信息
重装软件包
      yum  reinstall
降级安装:
      yum  downgrad 
升级:
     yum update (包名)
      如果升级的为内核的话 将自动切换为安装
检查是否有可升级的软件包
      yum check-update 
卸载:
      remove (包名)
清除缓存cache: 
      yum clean all  清除所有缓存  
注:可能会遇到的问题
   1. 启动两次  
      提示有一个yum正在运行  使用ps kill
   2. 地址正确  但经常报错
      可能是DNS配置错误
    
其他软件包:  
 一.  类似绿色软件
 二.  源码安装
      C ,C++ , Perl
      源码文件: 编译顺序   makefile文件 根据makefile编译
   C,C++ 编写的文件编译安装:
      1.  ./configure   --prefix= (自定义安装路径)
      2. make
      3. make  install 
   两个文件: 1.configure  2. Makefile.in
   1.  检查预编译环境   结合2. --> 生成makefile
   Perl  编写的文件编译安装:
      1. Perl Makefile
      2. make
      3. make install
 头文件在 /etc/include/  存放.没有可以链接过来 
 include 包含头文件