Linux软件包安装

Linux系统和Windows系统在软件包安装上区别很大:

    软件运行环境:

        API: Application Programming Interface
    POSIX: Portable OS
    程序源代码 –> 预处理 –> 编译 –> 汇编 –> 链接
    静态编译:
    共享编译: .so
              ABI: Application Binary Interface
        Windows与Linux不兼容
        ELF(Executable and Linkable Format)
        PE( Portable Executable)
    库级别的虚拟化:
        Linux系统下windows环境的虚拟: WINE
        Windows系统的unix环境虚拟: Cygwin

常见的系统应用开发语言

        C C++ java delphi Python go php perl ruby

    软件的安装方式

    windows软件包的后缀一般是.exe .msi等  一般都是直接双击打开按照提示安装,一般都是编译好的软件包

    linux软件包安装方式分为,源代码编译安装,软件包管理器安装,

            linux程序包管理器:

                debian:deb文件, dpkg包管理器

                嵌入式openwrt: .ipk文件    opkg包管理器
                redhat: rpm文件, rpm包管理器
                rpm: Redhat Package Manager
                RPM Package Manager

    软件包来源

        1. 官方网站下载

        2.系统发行商制作

            CentOS镜像:
            https://www.centos.org/download/
            http://mirrors.aliyun.com
            http://mirrors.sohu.com
            http://mirrors.163.com

        3.第三方软件源

            Fedora-EPEL:
                Extra Packages for Enterprise Linux

        4,自己制作

        rpm软件包搜索:常用来解决一些依赖问题

            http://pkgs.org
            http://rpmfind.net
            http://rpm.pbone.net
            https://sourceforge.net/

    软件包安装

            

        在Centos系统上软件包管理器安装为: yum 它安装的包为.rpm后缀的编译过后的包

            单个软件包安装使用rpm命令

        CentOS系统上使用rpm命令管理程序包:
        安装、卸载、升级、查询、校验、数据库维护
        安装:
            rpm {-i|–install} [install-options] PACKAGE_FILE…
                -v: verbose
                -vv:
                -h: 以#显示程序包管理执行进度
                rpm -ivh PACKAGE_FILE …

             [install-options]
                –test: 测试安装,但不真正执行安装; dry run模式
                –nodeps:忽略依赖关系
                –replacepkgs | replacefiles
                –nosignature: 不检查来源合法性
                –nodigest:不检查包完整性
                –noscipts:不执行程序包脚本片断
                %pre: 安装前脚本; –nopre
                %post: 安装后脚本; –nopost
                %preun: 卸载前脚本; –nopreun
                %postun: 卸载后脚本; –nopostun    

        升级:
             rpm {-U|–upgrade} [install-options] PACKAGE_FILE…
             rpm {-F|–freshen} [install-options] PACKAGE_FILE…
                upgrade:安装有旧版程序包,则“升级”
                如果不存在旧版程序包,则“安装”
                freshen:安装有旧版程序包,则“升级”
                如果不存在旧版程序包,则不执行升级操作
                rpm -Uvh PACKAGE_FILE …
                rpm -Fvh PACKAGE_FILE …
                –oldpackage:降级
                –force: 强行升级

        卸载

                rpm -e 

        查询

                rpm {-q|–query} [select-options] [query-options]
                    [select-options]
            -a: 所有包
            -f: 查看指定的文件由哪个程序包安装生成
            -p rpmfile:针对尚未安装的程序包文件做查询操作;
            –whatprovides CAPABILITY:查询指定的CAPABILITY
                由哪个包所提供
            –whatrequires CAPABILITY:查询指定的CAPABILITY被
            哪个包所依赖
            rpm2cpio 包文件|cpio –itv 预览包内文件
             rpm2cpio 包文件|cpio –id “ *.conf” 释放包内文件

    yum包管理器安装

            CentOS: yum, dnf
    YUM: Yellowdog Update Modifier, rpm的前端程序,用来
    解决软件包相关依赖性,可以在多个库之间定位软件包,
    up2date的替代工具
    yum repository: yum repo,存储了众多rpm包,以及
    包的相关的元数据文件(放置于特定目录repodata下)
    文件服务器:
    ftp://
    http://
    file:///

yum客户端配置文件:
    /etc/yum.conf:为所有仓库提供公共配置
    /etc/yum.repos.d/*.repo:为仓库的指向提供配置
    仓库指向的定义:
    [repositoryID]
        name=Some name for this repository
        baseurl=url://path/to/repository/
        enabled={1|0}
        gpgcheck={1|0}
        =URL
        enablegroups={1|0}
        failovermethod={roundrobin|priority}
        默认为: roundrobin,意为随机挑选;
            cost= 默认为1000

    显示仓库列表:

            repolist [all|enabled|disabled]
    显示程序包:
        list
            # yum list [all | glob_exp1] [glob_exp2] […]
            # yum list {available|installed|updates} [glob_exp1]
    […]
    安装程序包:
        install package1 [package2] […]
        reinstall package1 [package2] […] (重新安装)
    升级程序包:
        update [package1] [package2] […]
        downgrade package1 [package2] […] (降级)
    检查可用升级:
        check-update
    卸载程序包:
        remove | erase package1 [package2] […]
   查看程序包information:
        info […]
    查看指定的特性(可以是某文件)是由哪个程序包所提供:
        provides | whatprovides feature1 [feature2] […]
    清理本地缓存:
        clean [ packages | metadata | expire-cache |
        rpmdb | plugins | all ]
    构建缓存:
        makecache
    搜索: search string1 [string2] […]
        以指定的关键字搜索程序包名及summary信息
    查看指定包所依赖的capabilities:
        deplist package1 [package2] […]
    查看yum事务历史:
        history [info|list|packages-list|packages-info|
        summary|addon-info|redo|undo|
        rollback|new|sync|stats]
        yum history
        yum history info 6
        yum history undo 6
     日志 : /var/log/yum.log
        安装及升级本地程序包:
    * localinstall rpmfile1 [rpmfile2] […]
        (用install替代)
    * localupdate rpmfile1 [rpmfile2] […]
        (用update替代)
    包组管理的相关命令:
        groupinstall group1 [group2] […]
        groupupdate group1 [group2] […]
        grouplist [hidden] [groupwildcard] […]
        groupremove group1 [group2] […]
        groupinfo group1 […]
    如何使用光盘当作本地yum仓库:
    (1) 挂载光盘至某目录,例如/media/cdrom
        # mount /dev/cdrom /media/cdrom
    (2) 创建配置文件
        [CentOS7]
            name=
            baseurl=
            gpgcheck=
            enabled=
      yum的命令行选项:
        –nogpgcheck:禁止进行gpg check
        -y: 自动回答为“ yes”
        -q:静默模式
        –disablerepo=repoidglob:临时禁用此处指定的repo

        –enablerepo=repoidglob:临时启用此处指定的repo
        –noplugins:禁用所有插件

    yum的repo配置文件中可用的变量:
        $releasever: 当前OS的发行版的主版本号
        $arch: 平台, i386,i486,i586,x86_64等
        $basearch:基础平台; i386
        $YUM0-$YUM9:自定义变量
    实例:
        http://server/centos/$releasever/$basearch/
        http://server/centos/7/x86_64
        http://server/centos/6/i384
    创建yum仓库:
        createrepo [options] <directory>

                        

        

                

    

原创文章,作者:317376161,如若转载,请注明出处:http://www.178linux.com/38619

(0)
317376161317376161
上一篇 2016-08-21 20:06
下一篇 2016-08-21 20:45

相关推荐

  • 马哥教育网络班20期 第9周课程练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash #the purpose of program : # #08/11/2016  PATH=/bin:/sbin:…

    Linux干货 2016-08-15
  • Python入门之闭包,匿名函数,过滤器,映射器,折叠

    在学习python函数的过程中,函数的高阶应用包括闭包lambda函数,过滤器等都让我头痛不已.接下来我把课堂中听到的笔记进行整理,再写一遍,希望在提醒自己的同时也能帮助到别人. 首先,我们来看一下什么是闭包,闭包(closure)是函数式编程的重要的语法结构。函数式编程是一种编程范式 (而面向过程编程和面向对象编程也都是编程范式)。在面向过程编程中,我们见…

    Linux干货 2015-12-19
  • TIME_WAIT引起Cannot assign requested address报错

    1.  问题描述      有时候用redis客户端(php或者java客户端)连接Redis服务器,报错:“Cannot assign requested address。”      原因是客户端频繁的连接服务器,由于每次连接都在很短时间内结束,导致很多的TIME_WAIT。所以新的连…

    Linux干货 2016-03-09
  • 1. linux basic cmd

    一。 国有股加点廉价航空j 1. 2. 二。

    2017-11-13
  • 教你使用rpm、yum、编译等方式安装软件

    一、什么是包管理器?     很多人都不知道包管理器的概念,首先我们要了解软件是如何运行的,我们这里介绍C程序如何实现从代码到执行程序的过程。         程序源代码–> 预处理–> 编译&#8211…

    Linux干货 2016-03-09
  • 第二周作业

    由于图片粘贴复杂,请看链接。 http://note.youdao.com/noteshare?id=a78c3236bbf77232fcc3e2624a38ae12

    Linux干货 2016-09-19

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-25 14:07

    内容整体很完整,如果加上实验性验证和历史背景介绍会让文章整体更有说服力,突显用心