zoukankan      html  css  js  c++  java
  • Linux学习37 Linux程序包管理介绍及应用

    一、Linux程序包管理概述

      1、API:Application Program Interface

      2、ABI:Application Binary Interface :linux与unix的ABI是相同的但是与windows是不一样的

        Unix-like

          ELF

        Windows:

          exe,msi

        库级别的虚拟化:

          Linux:WinE模拟windows的运行环境

          Windows:Cywin模拟linux的运行环境

      3、系统级开发:

        C/C++:httpd,vsftpd,nginx

        go:

      4、应用级开发

        java/Python/perl/ruby/php

          java:hadoop,hbase,elasticsearch (依赖于jvm,即java虚拟机,java虚拟机是C和C++研发的)

          Python: openstack(依赖于pvm,即python虚拟机,也是C和C++研发的)

          perl:(依赖perl解释器)

          ruby:(依赖ruby解释器)

      5、C/C++ 程序格式

        源代码:文本格式的程序代码

          编译开发环境:编译器、头文件、开发库

        二进制格式:文本格式的程序代码  --> 编译器 --> 二进制格式(二进制程序、库文件、配置文件、帮助文件)

      6、java/python程序格式

        源代码:编译成能够在其虚拟机(jvm/pvm)上运行的格式;

          开发环境:编译器、开发库

        二进制

      7、项目构建工具

        C/C++:make

        java:maven

    二、程序包管理器

      1、源代码  -->  目标二进制格式  -->  组织成为一个或有限几个“包文件”;

        安装、升级、卸载、查询、校验

      2、程序包管理器

        debian: dpt,dpkg,其程序包都以 ".deb"结尾

        redhat:  rpm(redhat package manager),程序包都以".rpm"结尾,早期rpm包是红帽模仿debian的dpkg用perl研发的,后期就直接是通过C语言研发。后来红帽将其推动为了程序包工业标准,也就是 rpm is package manager。

        S.u.S.E: 他用的也是用的rpm包,不过他的rpm包和红帽的是不兼容的。其为rpm包开发了一个非常经典的rpm库管理工具

        Gentoo:其程序包管理采用的是freeBSD的

        ArchLinux:

      3、源代码:name-VERSION.tar.gz

        VERSION:major.minor.release (主版本号.次版本号.发行号)

      4、rpm包

        a、rpm包命名格式:name-VERSION-release.arc.rpm

          VERSION:major.minor.release (主版本号.次版本号.发行号)

          release.arc: rpm包的发行号

            release.os:2.el7.i386.rpm  #第二次制作的适用于redhat7的32位的

            archetecture:i386,x64(amd64),ppc,noarch

          例如redis-3.0.2-1.centos7.x64.rpm 其意思为redis版本为3.0.2的第一次制作的适用于centos7的用于x64位cpu上的程序包

        b、拆包:主包和支包

          主包:name-VERSION-release.arch.rpm

          支包:name-function-VERSION-release.arch.rpm

            function:devel,utils,libs...

        c、依赖关系

          X,Y,Z

          前端工具:自动解决依赖关系;

            yum:rhel系列系统上rpm包管理器的前端工具

            apt-get(apt-cache):deb包管理器的前端工具

            zypper:suse的rpm管理器前端工具

            dnf:fedora 22+系统上rpm包管理器的前端工具。

      5、程序包管理器

        功能:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装,升级,卸载和查询等管理操作。

        a、程序包的组成清单(每个程序包都单独实现)

          文件清单

          安装或卸载时运行的脚本

        b、数据库(公共):路径为/var/lib/rpm

          程序包的名称和版本

          依赖关系

          功能说明

          安装生成的各文件的文件路径及校验码信息

          等等等

    [root@localhost Packages]# ls /var/lib/rpm
    Basenames  Conflictname  Dirnames  Group(程序包组)  Installtid  Name(包名称)  Obsoletename  Packages  Providename  Requirename  Sha1header  Sigmd5  Triggername

        c、获取程序包的途径

          1)、系统发行版的光盘或官方的文件服务器

            http://mirrors.aliyun.com

            http://mirrors.sohu.com

            http://mirrors.163.com

          2)、项目的官方站点

          3)、第三方组织

            (a)、EPEL:

            (b)、搜索引擎

              http://pkgs.org

              rpmfind.net

              rpm.pbone.net

          4)、自己动手,丰衣足食

          建议:检查其合法性

            来源合法性

            程序包的完整性

    三、CentOS系统上rpm命令管理程序包

      1、安装、升级、卸载、查询和校验、数据库维护

      2、rpm 命令: rpm [OPTIONS] [PACKAGE_FILE] 

        a、安装: -i,--install

          rpm {-i|--install} [install-options] PACKAGE_FILE ...

            rpm  -ivh  PACKAGE_FILE...

            GENERAL OPTIONS:

              -v:verbose,详细信息

              -vv:更详细的输出

            [install-options]:

              -h:hash marks输出进度条,每个#表示2%的进度

            现在我们安装一个zsh包

    [root@localhost Packages]# rpm -ivh /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm 
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:zsh-5.0.2-28.el7                 ################################# [100%]
    You have new mail in /var/spool/mail/root

              --test:测试安装,检查并报告依赖关系及冲突消息等

    [root@localhost Packages]# rpm -ivh --test /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm 
    Preparing...                          ################################# [100%]

              --nodeps:忽略依赖关系

    [root@localhost Packages]# rpm -ivh php-common-5.4.16-45.el7.x86_64.rpm 
    error: Failed dependencies:
        libzip.so.2()(64bit) is needed by php-common-5.4.16-45.el7.x86_64
    You have new mail in /var/spool/mail/root
    [root@localhost Packages]# rpm -ivh --nodeps php-common-5.4.16-45.el7.x86_64.rpm 
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:php-common-5.4.16-45.el7         ################################# [100%]

              --replacepkgs:重新安装

    [root@localhost Packages]# rpm -ivh --replacepkgs zsh-5.0.2-28.el7.x86_64.rpm 
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:zsh-5.0.2-28.el7                 ################################# [100%]

              --nosignature:不检查包签名信息,即不检查来源合法性

              --nodigest:不检查包完整性信息,即md5信息

          注意:rpm可以自带脚本,一共有四类。如果都不想执行就用 --noscripts

            (1)、preinstall:安装过程开始之前运行的脚本,%pre,不执行就用--nopre

            (2)、postinstall:安装过程完成之后运行的脚本,%post,不执行就用--nopost

            (3)、preuninstall:卸载过程真正开始执行之前运行的脚本,%preun,不执行就用--nopreun

            (4)、postuninstall:卸载过程完成之后运行的脚本,%postun,不执行就用--nopostun

        b、升级:-U,--update,-F,--freshen

        c、卸载:-e,--erase

        d、查询:-q,--query

        e、校验:-V,--verify

        f、数据库维护:--builddb,--initdb

  • 相关阅读:
    python 执行sql得到字典格式数据
    python爬虫 url链接编码成gbk2312格式
    windows环境下elasticsearch安装教程(单节点)
    python SQLServer 存储图片
    爬虫的本质是和分布式爬虫的关系
    requests form data 请求 爬虫
    mysql 删除 binlog 日志文件
    查看mysql数据表的大小
    xshell 连接报错 Disconnected from remote host
    centos 7.3 安装 mysqldb 报错 EnvironmentError: mysql_config not found ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
  • 原文地址:https://www.cnblogs.com/Presley-lpc/p/12344805.html
Copyright © 2011-2022 走看看