zoukankan      html  css  js  c++  java
  • 七 软件管理

    软件包管理

    一、安装/查询/卸载

    • 源码包tarball 没有编译
    • 二进制包 已编译
      系统平台                包类型           工具                在线安装(自动解决依赖关系)
      RedHat/Centos/Fedora      RPM             rpm,rpmbuild        yum
      Ubuntu/Debian            DPKG         dpkg            apt
    

    注意: 不管是源码包,还是二进制包,安装时都可能会有依赖关系!!!

    二、RPM包管理

    1、获得RPM包途径:

    • RedHat光盘或官方网站 ftp://ftp.redhat.com
    • rpmfind.net
    • ...
      notecase-1.9.8-1.fc6.i386.rpm            套件名
      ntfs-3g-2010.3.6-1.el5.i386.rpm            套件名
      stardict-langdao-ec-gb-2.4.2-1.noarch.rpm    套件名
    
      软件包名   版本号       发布次数       平台
      notecase  1.9.8          1.fc6          i386(系统平台i386  x86_64 noarch )
      ntfs-3g     2010.3.6    1.el5             i386
    
      //version:  版本
      //release:  发布版本
    
      # uname -m        //查看当前系统是多少位
      x86_64
    
      # cat /etc/issue
      CentOS release 6.5 (Final)
      Kernel 
     on an m
    
      # cat /etc/redhat-release 
      CentOS release 6.5 (Final)
    

    2、使用rpm工具管理rpm包 (警告:需要手动解决包的依赖关系)

    • 安装

      # rpm -ivh stardict-langdao-ec-gb-2.4.2-1.noarch.rpm     套件名
      # rpm -ivh ntfs-3g-2010.3.6-1.el5.i386.rpm            套件名
      额外选项:
      --force        //强制安装,一般适用于某个包文件损坏或丢失
      --nodeps        //忽略依赖关系,不建议使用
      
    • 查询 (从本地的rpm数据库)

      # rpm -q ntfs-3g            //查询指定包是否安装
      # rpm -qa |grep ntfs
      # rpm -ql ntfs-3g            //查询ntfs-3g安装的文件       
      # rpm -qf /usr/bin/ntfs-3g    //查询该文件属于哪个rpm包
      # rpm -qi ntfs-3g            //查询包的information
      
      # rpm -e ntfs-3g
      # rpm -qi ntfs-3g
      package ntfs-3g is not installed
      # rpm -qc ntfs-3g
      # rpm -q vsftpd
      vsftpd-2.0.5-24.el5
      # rpm -qc vsftpd            //查询某个包安装的配置文件
      /etc/logrotate.d/vsftpd.log
      /etc/pam.d/vsftpd
      /etc/vsftpd/ftpusers
      /etc/vsftpd/user_list
      /etc/vsftpd/vsftpd.conf
      /etc/vsftpd/vsftpd_conf_migrate.sh
      
      # rpm -qd vsftpd            //查安装的帮助文档
      
    • 扩展知识: 针对没有安装的包,直接从套件中查询

      # rpm -qip vagrant_2.1.1_x86_64.rpm
      # rpm -qcp vagrant_2.1.1_x86_64.rpm
      # rpm -qdp vagrant_2.1.1_x86_64.rpm
      # rpm -qlp vagrant_2.1.1_x86_64.rpm
      
    • 卸载

      # rpm -e vagrant
      # rpm -e vagrant --nodeps    
      

    rpm工具管理软件包总结:

    • 很难解决包依赖关系
    • 如果某个文件没有,很难知道它由哪个rpm包提供,例如gunplot命令是由哪个包提供?

    3、使用YUM工具管理RPM包 (自动解决包的依赖关系) YUM仓库中必须包括:

    • 软件包
    • 数据库文件(数据库记录的是:每个包能提供哪些文件?每个包依赖哪些文件?)
      第一种情况:使用系统光盘安装rpm软件
    
      1.  本身存在yum数据库,不需要生成
    
      2.  YUM指定数据库位置
      [root@yangs ~]# df
      文件系统               1K-块        已用     可用 已用% 挂载点
      /dev/hdc               3435526   3435526         0 100% /media/cd
      /media/cd/Server
      /media/cd/VT
      /media/cd/Cluster 
      /media/cd/ClusterStorage
    
      [root@station230 ~]# cd /etc/yum.repos.d/
      [root@station230 yum.repos.d]# vim rhel5.repo        //文件名自定义,必须以.repo结尾
      [Server]                    //仓库ID
      name=Server                //仓库名
      baseurl=file:///media/cd/Server    //仓库位置
      enabled=1                //启用仓库
      gpgcheck=0                //不检查软件包的签名
    
    • 检查目前可用的仓库

      # yum clean all    //清空缓存
      # yum repolist    //查询可用的仓库
      
    • 安装

      # yum install mysql-server
      # yum install nginx
      # yum -y install mysql-server
      # yum -y install php
      # rpm -e php
      # yum -y remove mysql-server
      # yum -y install "mysql*" httpd vsftpd samba dovecot
      # yum -y update samba
      
    • 查询

      # yum list httpd mysql-server vsftpd tftp-server bind
      Installed Packages
      httpd.i386                  2.2.3-63.el5                 installed
      mysql-server.i386     5.0.77-4.el5_6.6             installed
      tftp-server.i386            0.49-2                        installed
      vsftpd.i386                 2.0.5-24.el5                 installed
      Available Packages
      bind.i386                   30:9.3.6-20.P1.el5         Server 
      
    • 卸载

      # yum -y remove mysql-server
      
    • 查询某个文件(通常是当前系统中没有)由哪个rpm包提供

      示例1:
      
            # gnuplot
            bash: gnuplot: command not found        //没有找到该命令
            # yum provides gnuplot
            Loaded plugins: katello, product-id, security, subscription-manager
            Updating certificate-based repositories.
            Unable to read consumer identity
            gnuplot-4.0.0-14.el5.i386 : 绘制数学表达式和数据的程序。
            Repo        : Server
            Matched from:
            # yum -y install gnuplot
            # gnuplot 
      
      示例2:
            # rpm -e httpd
      
            # htpasswd                  //没有找到该命令
            bash: htpasswd: command not found
      
            # yum provides */htpasswd
            Loaded plugins: katello, product-id, security, subscription-manager
            Updating certificate-based repositories.
            Unable to read consumer identity
            Server/filelists                                    | 2.4 MB     00:03     
            httpd-2.2.3-63.el5.i386 : Apache HTTP 服务器
            Repo        : Server
            Matched from:
            Filename    : /usr/bin/htpasswd
      
            # yum -y install httpd-2.2.3-63.el5.i386
            # htpasswd
      
      示例3:
            # createrepo
            bash: createrepo: command not found
      
            # yum provides createrepo
            Loaded plugins: katello, product-id, security, subscription-manager
            Updating certificate-based repositories.
            Unable to read consumer identity
            createrepo-0.4.11-3.el5.noarch : 生成一个通用元数据库
            Repo        : Server
            Matched from:
      
            # yum -y install createrepo
      

    指定光盘上其他软件包仓库

      # yum -y install gfs-utils
    
    • 软件包组管理

      # yum grouplist                          //查询当前软件包组的安装情况
      # yum -y groupinstall "DNS 名称服务器"        //安装软件包组
      
      作业:
      查询并安装 “开发工具” “开发库” 软件包组
      
      第二种情况:第三方rpm软件包(例如下载的rpm软件包)
      1. 生成yum数据库        //createrepo软件包
      2. 指定数据库位置
      3. yum安装软件包
    
      ==准备仓库(软件包 和 数据库文件)
      [root@station230 soft]# yum -y install createrepo
    
      [root@yangs newsoft]# pwd
      /newsoft
      [root@yangs newsoft]# ls
      ntfs-3g-2011.4.12-5.el5.i386.rpm
    
      [root@yangs newsoft]# createrepo .            //在当前目录生成yum数据库文件
      1/1 - ntfs-3g-2011.4.12-5.el5.i386.rpm                                          
      Saving Primary metadata
      Saving file lists metadata
      Saving other metadata
      [root@yangs newsoft]# ls
      ntfs-3g-2011.4.12-5.el5.i386.rpm  repodata
    
      ==给YUM指定仓库
      [root@yangs ~]# cd /etc/yum.repos.d/
      [root@yangs yum.repos.d]# cat newsoft.repo 
      [newsoft]
      name=newsoft
      baseurl=file:///newsoft
      enabled=1
      gpgcheck=0
    
      ==安装
      [root@yangs ~]# yum clean all
      [root@yangs ~]# yum repolist
      Loaded plugins: katello, product-id, security, subscription-manager
      Updating certificate-based repositories.
      Unable to read consumer identity
      repo id                                                     repo name                                                   status
      ClusterStorage                                              ClusterStorage                                                 39
      Server                                                      Server                                                      2,472
      newsoft                                                     newsoft                                                         1
      repolist: 2,512
      [root@yangs ftp]# yum -y install ntfs-3g
    
      扩展知识:
      如果有新rpm包加到入/newsoft仓库
      [root@yangs ftp]# cp notecase-1.9.8-1.fc6.i386.rpm /newsoft/
      [root@yangs ftp]# cd /newsoft/
      [root@yangs newsoft]# createrepo .
      2/2 - ntfs-3g-2011.4.12-5.el5.i386.rpm                                          
      Saving Primary metadata
      Saving file lists metadata
      Saving other metadata
    
    
      =================支持RPM签名检查=========================
      ==RPM工具使用签名机制:==
      # rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release  导入红帽公钥
      # rpm -ivh tftp-server-0.49-2.i386.rpm 
          Preparing...                ########################################### [100%]
         1:tftp-server            ########################################### [100%]
    
      ==YUM使用签名机制:==
      方法一:
      # rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release  导入红帽公钥
      [root@station230 yum.repos.d] vim rhel-debuginfo.repo
      [Server]
      name=Server
      baseurl=file:///media/Server
      enabled=1
      gpgcheck=1    //是否检查软件包的签名
    
      方法二:
      [root@station230 yum.repos.d] vim rhel-debuginfo.repo
      [Server]
      name=Server
      baseurl=file:///media/Server
      enabled=1
      gpgcheck=1    //是否检查软件包的签名
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release  指定公钥文件
      =====================================================================
    

    三、源码包tarball

    获得源码包途径

    • 官方网站,可以获得最新的软件包 例如Apache www.apache.org Nginx www.nginx.org
    • www.google.com

    准备工作

    • 编译环境如gcc编译器,建议安装软件包组 开发工具 开发库
    • 准备软件 httpd-2.2.11.tar.bz2

    安装httpd

      # rpm -q httpd                //查询
      # service httpd stop            //停止httpd服务 
      # rpm -e httpd    --nodeps        //卸载 yum -y remove httpd
      # tar xvf httpd-2.2.11.tar.bz2    //解压
      # cd httpd-2.2.11
    

    三步曲:

      # ./configure --prefix=/usr/local/apache2
         a. 指定安装路径,例如--prefix=DIR
         b. 启用或禁用某项功能, 例如 --enable-ssl, --disable-filter
         c. 和其它软件关联,例如--with-ssl=DIR
         d. 检查安装环境,例如是否有编译器gcc,是否满足软件的依赖需求
         最终生成:Makefile
    
      # make clean    //清理掉以前编译后产生的 *.o目标文件
      # make        //按Makefile文件编译
      # make install    //安装
    

    验证安装结果:

      [root@yangs ~]# ls /usr/local/apache2/
      bin  build  cgi-bin  conf  error  htdocs  icons  include  lib  logs  man  manual  modules
      [root@yangs ~]# ls /usr/local/apache2/bin/
      ab               apu-1-config  dbmmanage    htcacheclean  htpasswd   logresolve
      apachectl     apxs          envvars      htdbm         httpd      rotatelogs
      apr-1-config  checkgid      envvars-std  htdigest      httxt2dbm
      [root@yangs ~]# /usr/local/apache2/bin/apachectl start    //启动
    

    其它的二进制软件 bin格式软件包:jdk-6u27-linux-i586.bin

      [root@station230 software]# chmod a+x jdk-6u27-linux-i586.bin 
      [root@station230 software]# ./jdk-6u27-linux-i586.bin 
  • 相关阅读:
    [LeetCode] 199. Binary Tree Right Side View
    [LeetCode] 360. Sort Transformed Array
    [LeetCode] 146. LRU Cache
    [LeetCode] 28. Implement strStr()
    [LeetCode] 498. Diagonal Traverse
    [LeetCode] 545. Boundary of Binary Tree
    [LeetCode] 937. Reorder Data in Log Files
    软件开发之我剑!软件测试, 房子的刚性需求【原】
    c#调用Delphi的dll函数遇到的问题及解决方法
    C# 回调函数
  • 原文地址:https://www.cnblogs.com/zhaobin-diray/p/10936188.html
Copyright © 2011-2022 走看看