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

    学习路线如下



    一、软件包的分类

    1.二进制包

        二进制包指的是已经安装好了的软件包,只需要直接安装就可以使用;二进制包不需要编译,直接下载即可使用;二进制包需要根据自己的计算机CPU和操作系统去选择合适的包来安装

    2.源码包

        源码包是编程人员写的程序代码文件,不能够直接在计算机上运行;源码包需要进行编译,编程二进制的软件包后才能安装使用;源码包一般是压缩后的文件。

    3.二进制源码包(了解)

        二进制源码包是一个半成品,安装后不能直接使用,需要使用rpmbuild工具重建成真正的rpm包或源码包才可安装使用


    二、二进制包的安装

    使用rpm工具

    1.rpm工具安装软件的思路和rpm包的获取

        1)通过网络下载或通过光盘等镜像文件找到相应的rpm包

        2)使用rpm命令进行安装

        3)推荐网站下载rpm包:

        http://rpmfind.net

        rpm.pbone.net


    2.rpm工具对rpm包的管理

    ① rpm工具安装rpm包
    # rpm -ivh 软件包

    [root@jiangfeng1 Packages]# rpm -ivh gcc-4.4.7-18.el6.x86_64.rpm 
    warning: gcc-4.4.7-18.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
    Preparing...                ########################################### [100%]
       1:gcc                    ########################################### [100%]

    ② rpm工具卸载rpm包
    # rpm -e 软件包名字
    注:卸载软件只需跟软件包名,卸载成功不会有提示

    [root@jiangfeng1 Packages]# rpm -e gcc
    [root@jiangfeng1 Packages]# echo $?
    0
    [root@jiangfeng1 Packages]# rpm -e gcc-c++
    error: package gcc-c++ is not installed

    ③ rpm包的升级rpm包
    # rpm -Uvh 软件包 或者 # rpm -Fvh 软件包 选项说明: -v:输出详细信息 -h:打印散列标记,一般-vh一起使用 -U:升级软件包,如果该软件包没安装,会自动帮你安装 -F:升级软件包,如果该软件包没安装,不会自动帮你安装

    [root@jiangfeng1 Packages]# rpm -Fvh gcc-4.4.7-18.el6.x86_64.rpm 
    warning: gcc-4.4.7-18.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
    [root@jiangfeng1 Packages]# rpm -qa | grep gcc
    libgcc-4.4.7-18.el6.x86_64
    [root@jiangfeng1 Packages]# rpm -Uvh gcc-4.4.7-18.el6.x86_64.rpm 
    warning: gcc-4.4.7-18.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
    Preparing...                ########################################### [100%]
       1:gcc                    ########################################### [100%]
    [root@jiangfeng1 Packages]# rpm -qa | grep gcc
    libgcc-4.4.7-18.el6.x86_64
    gcc-4.4.7-18.el6.x86_64

    ④ 查看rpm包相关信息
    查看已经安装的软件的文件列表
         rpm -ql  软件包名
    查看未安装的rpm包里的文件列表
         rpm -qlp  软件包(xxx.rpm)
    查看已经安装的所有rpm包
         rpm -qa 软件包名
    查看已经安装软件的文档列表
         rpm -qd 软件包名
    查看已经安装软件的配置文件
         rpm -qc 软件包名
    查看已经安装软件的详细信息
         rpm -qi 软件包名
    查看指定文件来自哪个rpm包
         rpm -qf 文件名

    ⑤ rpm工具其他安装选项
    --force     表示强制
         rpm -ivh 软件包 --force    强制安装软件包
         rpm -e 软件包名 --force    强制卸载软件包
    --nodeps    忽略依赖关系
         rpm -ivh 软件包 --nodeps   忽略依赖关系安装
         rpm -e 软件包 --nodeps     忽略依赖关系卸载

       

    使用yum进行安装

    1.本地yum源的配置

        注:需要光盘或U盘的系统镜像

    1)把镜像文件挂在到系统中

    [root@jiangfeng1 ~]# mount /dev/sr0 /mnt/
    mount: block device /dev/sr0 is write-protected, mounting read-only

    2)更改/etc/yum.repos.d目录下的配置文件;对CentOS-Base.repo进行重命名(方便之后更改),对CentOS-Media.repo文件进行更改。

        其中CentOS-Media.repo配置文件改成如下内容

    [c6-media]
    name=CentOS-$releasever - Media
    baseurl=file:///mnt/
    #file:///media/CentOS/
    #        file:///media/cdrom/
    #        file:///media/cdrecorder/
    gpgcheck=0
    enabled=1
    #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

        CentOS-Base.repo可重命名为CentOS-Base.repo.bak.

    3)重新生成yum仓库

    [root@jiangfeng1 yum.repos.d]# yum makecache
    已加载插件:fastestmirror, security
    Determining fastest mirrors
    c6-media                                                                                       | 4.0 kB     00:00 ... 
    c6-media/group_gz                                                                              | 226 kB     00:00 ... 
    c6-media/filelists_db                                                                          | 6.3 MB     00:00 ... 
    c6-media/primary_db                                                                            | 4.7 MB     00:00 ... 
    c6-media/other_db                                                                              | 2.7 MB     00:00 ...  
    元数据缓存已建立

    4)对本地yum源进行测试

    [root@jiangfeng1 ~]# yum install gcc-c++ 已加载插件:fastestmirror, security 设置安装进程 Loading mirror speeds from cached hostfile 解决依赖关系 --> 执行事务检查 ---> Package gcc-c++.x86_64 0:4.4.7-18.el6 will be 安装 --> 处理依赖关系 libstdc++-devel = 4.4.7-18.el6,它被软件包 gcc-c++-4.4.7-18.el6.x86_64 需要 --> 执行事务检查 ---> Package libstdc++-devel.x86_64 0:4.4.7-18.el6 will be 安装 --> 完成依赖关系计算 依赖关系解决

    …………略 已安装: gcc-c++.x86_64 0:4.4.7-18.el6 作为依赖被安装: libstdc++-devel.x86_64 0:4.4.7-18.el6


    2.使用网络yum源

    1)使用Centos自带的yum源。

          当你装好Centos系统后,系统就会默认配置好了指向Centos的网络yum源,配置文件为/etc/yum.repos.d/CentOS-Base.repo。

              如果你像本人一样做了备份,直接更改改名即可,如果没有文件的代码如下。

    # CentOS-Base.repo
    #
    # The mirror system uses the connecting IP address of the client and the
    # update status of each mirror to pick mirrors that are updated to and
    # geographically close to the client.  You should use this for CentOS updates
    # unless you are manually picking other mirrors.
    #
    # If the mirrorlist= does not work for you, as a fall back you can try the 
    # remarked out baseurl= line instead.
    #
    #
    
    [base]
    name=CentOS-$releasever - Base
    mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
    #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #released updates 
    [updates]
    name=CentOS-$releasever - Updates
    mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
    #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #additional packages that may be useful
    [extras]
    name=CentOS-$releasever - Extras
    mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
    #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus
    mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
    #baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #contrib - packages by Centos Users
    [contrib]
    name=CentOS-$releasever - Contrib
    mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra
    #baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

    2)使用国内知名yum源

        访问国外的源,网速或多或少会有限制,配置成为国内的yum源,下载软件速度会有所提高。这里以配置清华园为例;清华源网址为:https://mirrors.tuna.tsinghua.edu.cn/

    [root@jiangfeng1 yum.repos.d]# vim qinghua.repo 
    
    [qinghua]
    name=qinghua network yum
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/6/os/x86_64/
    enabled=1
    gpgcheck=1
    gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/6/os/x86_64/RPM-GPG-KEY-CentOS-6

         配置完成后重新生成yum仓库即可。

    3.使用特定软件yum源

    在使用yum安装时,有许多软件在本地、网络yum仓库中没有这些软件(如Nginx,MYSQL),这时你可以去官网下载软件包或配置特定软件的源,这里我以Nginx和MYSQL为例进行配置。

    1)配置Nginx源

    在Nginx官网中,nginx就提供了yum源的配置,详情见http://nginx.org/en/linux_packages.html

    我们按照官方文档进行配置。

    [root@jiangfeng ~]# vim /etc/yum.repos.d/nginx.repo
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    
    [nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key

    重新生成缓存结果如下。

    [root@jiangfeng1 yum.repos.d]# yum makecache
    已加载插件:fastestmirror, security
    Loading mirror speeds from cached hostfile
    c6-media                                                  | 4.0 kB     00:00 ... 
    nginx-stable                                              | 2.9 kB     00:00     
    nginx-stable/filelists_db                                 |  61 kB     00:18     
    nginx-stable/primary_db                                   |  49 kB     01:12     
    nginx-stable/other_db                                     |  26 kB     00:01     
    qinghua                                                   | 3.7 kB     00:00     
    qinghua/group_gz                                          | 242 kB     00:00     
    qinghua/filelists_db                                      | 6.4 MB     00:36     
    qinghua/primary_db                                        | 4.7 MB     00:26     
    qinghua/other_db                                          | 2.8 MB     00:15     
    元数据缓存已建立

    2)配置MYSQL YUM存储库

        MYSQL官网有Yum源的配置,相应选择与你系统匹配的文件进行下载。相应的官方文档网址为:https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

    image_thumb3

           下载完成后,使用rpm命令进行安装,我下载的为第二个,如果你也一样的话 可以按下面的代码进行安装。

    yum mysql80-community-release-el6-3.noarch.rpm
    //默认情况下启用最新GA系列,需要通过命令进行相应的禁用和启动
    yum-config-manager --disable mysql80-community
    yum-config-manager --enable mysql56-community
    
    
    [root@jiangfeng1 yum.repos.d]# yum repolist all | grep mysql
    mysql-cluster-7.5-community        MySQL Cluster 7.5 Community       禁用
    mysql-cluster-7.5-community-source MySQL Cluster 7.5 Community - Sou 禁用
    mysql-cluster-7.6-community        MySQL Cluster 7.6 Community       禁用
    mysql-cluster-7.6-community-source MySQL Cluster 7.6 Community - Sou 禁用
    mysql-cluster-8.0-community        MySQL Cluster 8.0 Community       禁用
    mysql-cluster-8.0-community-source MySQL Cluster 8.0 Community - Sou 禁用
    mysql-connectors-community         MySQL Connectors Community        启用:    94
    mysql-connectors-community-source  MySQL Connectors Community - Sour 禁用
    mysql-tools-community              MySQL Tools Community             启用:    78
    mysql-tools-community-source       MySQL Tools Community - Source    禁用
    mysql-tools-preview                MySQL Tools Preview               禁用
    mysql-tools-preview-source         MySQL Tools Preview - Source      禁用
    mysql55-community                  MySQL 5.5 Community Server        禁用
    mysql55-community-source           MySQL 5.5 Community Server - Sour 禁用
    mysql56-community                  MySQL 5.6 Community Server        启用:   512
    mysql56-community-source           MySQL 5.6 Community Server - Sour 禁用
    mysql57-community                  MySQL 5.7 Community Server        禁用
    mysql57-community-source           MySQL 5.7 Community Server - Sour 禁用
    mysql80-community                  MySQL 8.0 Community Server        禁用
    mysql80-community-source           MySQL 8.0 Community Server - Sour 禁用

    更改完成后,重新生成yum缓存

    [root@jiangfeng1 ~]# yum makecache
    已加载插件:fastestmirror, security
    Loading mirror speeds from cached hostfile
    c6-media                                                                                       | 4.0 kB     00:00 ... 
    mysql-connectors-community                                                                     | 2.5 kB     00:00     
    mysql-tools-community                                                                          | 2.5 kB     00:00     
    mysql56-community                                                                              | 2.5 kB     00:00     
    nginx-stable                                                                                   | 2.9 kB     00:00     
    qinghua                                                                                        | 3.7 kB     00:00     
    元数据缓存已建立

    测试:指定安装mysql5.6.43版本

    [root@jiangfeng1 ~]# yum install mysql-community-server-5.6.43 mysql-libs-5.6.43

    [root@jiangfeng1 ~]# rpm -qa | grep mysql
    mysql-community-libs-5.6.44-2.el6.x86_64
    mysql-community-client-5.6.44-2.el6.x86_64
    mysql80-community-release-el6-3.noarch
    mysql-community-common-5.6.43-2.el6.x86_64
    mysql-community-libs-compat-5.6.44-2.el6.x86_64
    mysql-community-server-5.6.43-2.el6.x86_64


    补充:yum的相关命令

    1.列出所有可更新的软件清单命令:yum check-update
    2.更新所有软件命令:yum update
    3.仅安装指定的软件命令:yum install <package_name>
    4.仅更新指定的软件命令:yum update <package_name>
    5.列出所有可安裝的软件清单命令:yum list
    6.删除软件包命令:yum remove <package_name>
    7.查找软件包 命令:yum search <keyword>
    8.清除缓存命令:
        yum clean packages: 清除缓存目录下的软件包
        yum clean headers: 清除缓存目录下的 headers
        yum clean oldheaders: 清除缓存目录下旧的 headers
        yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers


    开启yum缓存

      1.yum缓存的作用:

        再次安装时,如果你的设备处于内网状态可以从本地进行安装。

    2.更改配置开启yum缓存

    [root@jiangfeng1 ~]# vim /etc/yum.conf 
    
    [main]
    cachedir=/var/cache/yum/$basearch/$releasever
    keepcache=1    //开启缓存
    debuglevel=2

    至此,在/var/cache/yum/x86_64/6/下就有yum缓存了

    [root@jiangfeng1 6]# ls /var/cache/yum/x86_64/6/
    c6-media  mysql56-community  mysql-connectors-community  nginx-stable  timedhosts.txt
    epel      mysql80-community  mysql-tools-community       qinghua


    自建yum仓库

    如果你想要安装指定版本的软件,并且使用本地安装时,你就需要自建yum仓库来进行安装。

    1)创建一个目录来存放软件包

        [root@jiangfeng1 6]# mkdir /soft

    2)把你准备的软件放到/soft文件中

    [root@jiangfeng1 soft]# ls
    mysql-community-client-5.6.43-2.el6.x86_64.rpm
    mysql-community-common-5.6.43-2.el6.x86_64.rpm
    mysql-community-libs-5.6.43-2.el6.x86_64.rpm
    mysql-community-libs-compat-5.6.43-2.el6.x86_64.rpm
    mysql-community-server-5.6.43-2.el6.x86_64.rpm

    3)使用createrepo命令进行扫描并生成repodata,如果没有此软件请使用yum安装。

    [root@jiangfeng1 soft]# yum install createrepo
    [root@jiangfeng1 soft]# createrepo /soft
    Spawning worker 0 with 5 pkgs
    Workers Finished
    Gathering worker results
    
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete
    [root@jiangfeng1 soft]# ls
    mysql-community-client-5.6.43-2.el6.x86_64.rpm
    mysql-community-common-5.6.43-2.el6.x86_64.rpm
    mysql-community-libs-5.6.43-2.el6.x86_64.rpm
    mysql-community-libs-compat-5.6.43-2.el6.x86_64.rpm
    mysql-community-server-5.6.43-2.el6.x86_64.rpm
    repodata

    4)配置自己的yum仓库,然后重新生成缓存

    [root@jiangfeng1 yum.repos.d]# vim mysql-local.repo 
    
    [mysql-local]
    name=mysql-local yum
    enabled=1
    baseurl=file:///soft
    gpgcheck=0

    5)关闭其他源后,可以通过yum list查看mysql的所有安装包

    [root@jiangfeng1 yum.repos.d]# yum list | grep mysql
    mysql-community-client.x86_64              5.6.43-2.el6                @mysql-local
    mysql-community-common.x86_64              5.6.43-2.el6                @mysql-local
    mysql-community-libs.x86_64                5.6.43-2.el6                @mysql-local
    mysql-community-server.x86_64              5.6.43-2.el6                @mysql-local

    6)安装5.6.43版本的mysql

    [root@jiangfeng1 yum.repos.d]# yum install mysql-client mysql-server
    
    …………略
    
    
    依赖关系解决
    
    =============================================================================================================================
     软件包                                架构                  版本                           仓库                        大小
    =============================================================================================================================
    正在安装:
     mysql-community-server                x86_64                5.6.43-2.el6                   mysql-local                 55 M
    为依赖而安装:
     mysql-community-client                x86_64                5.6.43-2.el6                   mysql-local                 18 M
     mysql-community-common                x86_64                5.6.43-2.el6                   mysql-local                308 k
     mysql-community-libs                  x86_64                5.6.43-2.el6                   mysql-local                1.9 M
    
    
    已安装:
      mysql-community-server.x86_64 0:5.6.43-2.el6                                                                               
    
    作为依赖被安装:
      mysql-community-client.x86_64 0:5.6.43-2.el6                  mysql-community-common.x86_64 0:5.6.43-2.el6                 
      mysql-community-libs.x86_64 0:5.6.43-2.el6                   
    
    完毕!

    6)通过rpm工具查看软件是否安装

    [root@jiangfeng1 yum.repos.d]# rpm -qa | grep mysql
    mysql-community-libs-5.6.43-2.el6.x86_64
    mysql-community-common-5.6.43-2.el6.x86_64
    mysql-community-client-5.6.43-2.el6.x86_64
    mysql-community-server-5.6.43-2.el6.x86_64


    三、使用源码包进行安装

    源代码编译安装软件有以下优点,获取软件的最新版及时修复bug,软件功能可按需选择或定制,有更多软件可供选择,源码包适用于各种平台。

    1.可能需要的软件gcc,gcc-c++,make

        [root@jiangfeng ~]# yum install gcc gcc-c++ make –y

    2.举例:APR的安装

    tar -zxvf apr-1.5.2.tar.gz
    cd apr-1.5.2
    ./configure
    make && make install

    注:./configure后可以根据需要指定相应的编译参数,拿Apache作为参考

    # 选择安装目录
    --prefix=/usr/local/apache
    
    # 选择安装配置目录
    --sysconfdir=/etc/httpd
    
    # 定义apr目录
    --with-apr=/usr/local/apr
    
    # 定义apr-util目录
    --with-apr-util=/usr/local/apr-util

    详细的./configure的配置和用法可以查看这位博主的博客https://blog.csdn.net/sunjing_/article/details/79146827

  • 相关阅读:
    DataSet中的数据全部插入数据库
    SQL养成一个好习惯是一笔财富
    C#不管什么四舍五入,只要是小数取整就得加1
    XMLNode与XmlNodeList
    ASP.NET2.0中配置文件的加密与解密
    编写一个文件目录常用操作的类
    上传文件的方法
    使用javascript 实现.net 验证控件功能
    SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
    Android之开启内置闹钟与已安装的应用程序设置
  • 原文地址:https://www.cnblogs.com/feng0919/p/11186573.html
Copyright © 2011-2022 走看看