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)
上一篇 2016-08-21 20:06
下一篇 2016-08-21 20:45

相关推荐

  • 操作系统文件管理

      在现代计算机系统中,要用到大量的程序和数据,因内存容量有限,且不能长期保存,故而平时总是把它们以文件的形式存放在外存中,需要时再随时将它们调入内存。如果由用户直接管理外存上的文件,不仅要求用户熟悉外存特性,了解各种文件的属性,以及它们在外存上的位置,而且在多用户环境下,还必须能保持数据的安全性和一致性。显然,这是用户所不能胜任、也不愿…

    Linux干货 2015-04-13
  • rpm包管理、yum仓库、ftp、http服务、编译安装

    一、软件包管理 1.1 软件包管理 API:Application Programming Interface  应用程序开发接口;程序员面对的编程接口 POSIX:portable operating system:可移植操作系统接口 v   程序源代码 –> 预处理 …

    Linux干货 2016-11-27
  • 第九周博客作业

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现 #!/bin/bash declare -i sum=0 declare -i sum_nologin=0 for i in $(cut -d: -f7 /etc/passwd);do if…

    Linux干货 2017-06-06
  • 逻辑卷管理器

    逻辑卷管理器(LVM)     允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小     允许在多个物理设备间重新组织文件系统         • 将设备指定为物理卷   …

    Linux干货 2016-09-06
  • 内核及模块管理

    内核及模块管理基础 查询程序的依赖库 ldd命令ldd [OPTION]…FILE…     [root@centos6 ~]# ldd /bin/ls         linux-vd…

    Linux干货 2016-09-19
  • redis主从复制(1)— 慢查询导致复制中断

    redis的异常行为是一件令人头疼的问题。redis提供的错误日志只提供了一些server的运行状态信息,而没有server在故障现场的操作日志,比如执行了什么命令,命令操作对象的数据结构信息。如果redis也有mysql的slow-log,那么很多性能和故障问题也很容易处理。1、redis rdb在redis2.8版本以前,redis主从数据复制在生产上存…

    Linux干货 2016-04-12

评论列表(1条)

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

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