精华内容
下载资源
问答
  • linux包管理器

    千次阅读 2018-10-28 22:41:34
    一、操作linux发型版本的包管理器 此小结摘抄:https://www.cnblogs.com/linuxprobe/p/5883783.html   在 linux 中,包管理器非常重要,了解如何使用多种包管理器可以让你像一个高手一样活得很舒适,从在仓库下载...

    一、操作linux发型版本的包管理器

    此小结摘抄:
    https://www.cnblogs.com/linuxprobe/p/5883783.html
     
      在 linux 中,包管理器非常重要,了解如何使用多种包管理器可以让你像一个高手一样活得很舒适,从在仓库下载软件、安装软件,到更新软件、处理依赖和删除软件是非常重要的,这也是Linux 系统管理的一个重要部分。

    • debian派系

      dpkg 是 Debian Linux 家族的基础包管理系统,它用于安装、删除、存储和提供deb包的信息。
    这是一个低层面的工具,并且有多个前端工具可以帮助用户从远程的仓库获取包,或处理复杂的包关系的工具,包括如下:

    (1) apt(高级打包工具)
      这个是一个 dpkg 包管理系统的前端工具,它是一个非常受欢迎的、自由而强大的,有用的命令行包管理器系统。debian 及其衍生版,例如 Ubuntu 和 Linux Mint 的用户应该非常熟悉这个包管理工具。
    (2) aptitude 包管理器
      这个也是 Debian Linux 家族一个非常出名的命令行前端包管理工具,它工作方式类似 APT ,它们之间有很多可以比较的地方,不过,你应该两个都试试才知道哪个工作的更好。它最初为 Debian 及其衍生版设计的,但是现在它的功能延伸到 RHEL 家族。
    (3) synaptic 包管理器
      synaptic是一个基于GTK+的APT的可视化包管理器,对于一些不想使用命令行的用户,它非常好用。

    • 红帽派系

    rpm 包管理器
      这个是红帽创建的 Linux 基本标准(LSB)打包格式和基础包管理系统。基于这个底层系统,有多个前端包管理工具可供你使用,但我们应该只看那些最好的,那就是:

    (1) yum
      这个是一个开源、流行的命令行包管理器,它是用户使用 RPM 的界面(之一)。你可以把它和 Debian Linux 系统中的 APT 进行对比,它和 APT 拥有相同的功能。

    (2) dnf
      这个也是一个用于基于 RPM 的发行版的包管理器,Fedora 18 引入了它,它是下一代 YUM。如果你用 Fedora 22 及更新版本,你肯定知道它是默认的包管理器。这里有一些链接,将为你提供更多关于 DNF 的信息和如何使用它。

    • 其他派系

    (1) Pacman包管理器(Arch Linux)
      这个是一个流行的、强大而易用的包管理器,它用于 Arch Linux 和其他的一些小众发行版。它提供了一些其他包管理器提供的基本功能,包括安装、自动解决依赖关系、升级、卸载和降级软件。但是最大的用处是,它为 Arch 用户创建了一个简单易用的包管理方式。

    (2) Zypper 包管理器(openSUSE)
      这个是一个使用 libzypp 库制作的用于 OpenSUSE 系统上的命令行包管理器,它的常用功能包括访问仓库、安装包、解决依赖问题和其他功能。更重要的是,它也可以支持存储库扩展功能,如模式、补丁和产品。

    (3) Portage 包管理器(Gentoo)
      这个是 Gentoo 的包管理器,当下不怎么流行的一个发行版,但是这并不阻止它成为 Linux 下最好的软件包管理器之一。Portage 项目的主要目标是创建一个简单、无故障的包管理系统,包含向后兼容、自动化等功能。

    二、rpm包管理器

    2.1、程序概述以及rpm概述

    API:Application Program Interface,应用程序接口;
    ABI:Application Binary Interface,应用二进制接口;
    
    至于二者的区别,之前也有讲过,这里拿一张别人画好的图:

    https://blog.csdn.net/FatalError1/article/details/78362829
    linux下包管理器

    • C/C++程序格式
      源代码:文本格式的程序代码;
      编译开发环境:编译器、头文件、开发库
      二进制格式:文本格式的程序代码 - -> 编译器 - -> 二进制格式(二进制程序、库文件、配置文件、帮助文件)
    • java/python程序格式
      源代码:编译成能够在其虚拟机(jvm/pvm)运行的格式;
      开发环境:编译器、开发库
      二进制
    • 项目构建工具

      c/c++: make
      java: maven
    • 源代码格式和二进制rpm包格式
    源代码命名:name-VERSION-release.tar.gz 
    .tar.gz只是一种,通常是使用tar打包归档,并使用gzip压缩;
    VERSION:major.minor.release(主版本号.次版本号.发型号);
    name:源代码所代表的应用程序的名字;
    例如:redis-5.0.0.tar.gz
    
    rpm包命名:
    name-VERSION-release.arch.rpm
    VERSION:major.minor.release(软件包主版本号.次版本号.发型号);
    release.arch:rpm包的发型号;
    其中的release由release.os组成,(release表示发型号的版本,os表示系统说明)
    arch可选值有:i386, x64(amd64), ppc, noarch等等
    
    例如:redis-5.0.0-1.centos7.x64.rpm
    
    • rpm概述
    rpm是一款能够用于编译,安装,查询,验证,更新以及移除软件包的包管理器。包由文件和元数据构成。
    元数据构成:
    二进制程序文件,库文件,配置文件,帮助文件等;
    
    包的两种形式,上面有提到过,一种是二进制包格式,另外一种是源码包格式。
    二进制包已经封装好了要安装的程序,源码包就是由程序源代码以及要生成二进制格式的一些附加配置构成;
    
    rpm包就是由二进制格式组成的,不过为了最小化功能模块设计,一个应用程序被打包成rpm包的时候,可能
    组成了不止一个rpm包,比如像mysql这种的应用程序,可能由devel,utils,libs等组成各个小包,我们称这些
    为分包或支包,如果要想完整的使用应用程序,我们应该先安装对应程序的主包,然后把这些辅助的支包也安装
    上。主包和支包(这种机制叫拆包)命名:
    主包:name-VERSION-release.arch.rpm 
    支包:name-function-VERSION-release.arch.rpm
    其中function表示一类辅助功能,常见的有:
    devel,utils,libs等
    
    rpm管理器有个弊端就是不能自动解决程序包依赖关系的问题,何为依赖关系:
    比如我要安装X,Y,Z程序包,安装X程序包要依赖于Y和Z程序包,而安装Y程序包要依赖于A,B,C程序包,
    然后安装A程序要依赖于Y程序包,依赖我的Y程序包还没安装,而后Y程序包要装的软件包又依赖
    于Y程序包本身,这种是很常见的,在rpm管理器中没能得到解决,我们只能找出依赖,先把依赖包安装好,
    然后运气好的话,没有这种互相关联,我们可以解决,如果是互相关联的,就没有办法了。而rpm包的前端
    工具,例如yum,就很好的解决了软件包依赖的关系。
    
    程序包管理器的功能(例如rpm):
    将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装、升级、
    卸载和查询等管理操作;
    1、程序包的组成清单(每个程序包都单独实现);
        文件清单
        安装或卸载时运行的脚本
    2、数据库(公共)
        程序包的名称和版本;
        依赖关系;
        功能说明;
        安装生成的各文件的文件路径及校验码信息;
        等等等
    
    获取程序包的途径:
    1、系统发行版的光盘或官方的文件服务器(或镜像站点):
    http://mirrors.aliyun.com 这是是国内阿里云提供的公共镜像站点;
    http://mirrors.sohu.com   这是国内搜狐提供的公共镜像站点;
    http://mirrors.163.com     这是163组织提供的公共镜像站点;  
    2、项目的官方站点
    3、第三方组织:
        (1) EPEL
        (2) 搜索引擎
            http://pkgs.org
            http://rpmfind.net 
            http://rpm.pbone.net 
    4、自己部署搭建镜像站点或者主机打包rpm包
    
    建议:检查其合法性
        来源合法性;
        程序包的完整性;
    

    2.2、rpm常见选项

    rpm简单组织语法格式:

    rpm [OPTION] [PACKAGE_FILE]
    其中OPTION根据rpm实现的每种功能,有分别的主选项,例如:
    查询:-q或-query
    校验:-V或--verify
    安装:-i或--install
    升级:U或--upgrade,-F或--freshen
    卸载:-e或--erase

    2.2.1、rpm的通用选项

    -?, --help:查看帮助信息;
    --version:查看版本;
    --quiet:安静模式;
    -v:详细信息;
    -vv:更详细的输出;

    2.2.2、rpm与安装相关的选项

    语法格式:
    rpm {-i|--install} [install-options] PACKAGE_FILE ...
    其中-i或--install表示安装功能主选项;
    install-options表示安装的子选项;
    
    -h, --hash:hash marks输出进度条;每个#表示2%的进度;
    --test:测试安装,检查并报告依赖关系及冲突消息等;
    --nodeps:忽略软件包的依赖关系(正常情况不应该忽略);
    --replacepkgs:重新安装;
    --replacefiles:如果其他程序安装过相应文件,会覆盖安装;
    --oldpackage:允许降级安装软件包;
    --force:--replacepkgs, --replacefiles, and --oldpackage的组合;
    
    PS:rpm包安装,可以附带四类安装脚本,分别为:
    preinstall:安装过程开始之前运行的脚本,%pre
    postinstall:安装过程完成之后运行的脚本,%post
    preuninstall:卸载过程真正开始执行之前运行的脚本,%preun
    postuninstall:卸载过程完成之后运行的脚本,%postun
    
    --nopre:不执行"安装过程开始之前要运行的脚本片段";
    --nopost:不执行"安装过程完成之后运行的脚本片段";
    --nopreun:不执行"卸载过程开始执行之前运行的脚本片段";
    --nopostun:不执行"卸载过程完成之后运行的脚本片段";
    --noscripts:相当于--nopre --nopost --nopreun --nopostun
    --nodigest:不检查包完整性信息;
    --nosignature:不检查包签名信息,不检查来源合法性;
    --justdb:只安装数据库,不包安装安装文件系统的文件;(通过查询选项还是可以列出安装的文件,不过
    实际并不存在,卸载的时候也要加上该选项);
    
    PS:安装的时候,rpm的数据库没有记录软件包的相关记录,应该指明完整的rpm包名;

    2.2.3、rpm与升级相关的选项

    语法格式:
    rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
    这个-U是升级或安装,如果已经安装了且存在新版本,会移除旧版本并升级成新版本,简称升级或安装软件包;
    
    rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
    这个-F只升级软件包,如果指定软件包没有安装,不会安装;
    
    至于升级的选项,很多与安装的选项相同
    --justdb:只安装数据库,不包安装安装文件系统的文件;(通过查询选项还是可以列出安装的文件,不过
    实际并不存在,卸载的时候也要加上该选项);
    --force:强制,相当于--replacepkgs, --replacefiles, and --oldpackage;
    --oldpackage:降级;
    等等,其他选项,请看上一小结。
    
    注意事项:
    (1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核;
    (2) 如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有
    版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;
    

    2.2.4、rpm与卸载相关的选项

    语法结构:
    rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
    --allmatches:指定软件包如果有多个版本,会卸载掉多有的版本(正常情况如果有多个版本存在,卸载检测
    出来,会报错);
    --nodeps:卸载软件包前不检查依赖关系;
    --test :测试卸载,不真正执行;
    --nopreun:不执行"卸载过程开始执行之前运行的脚本片段";
    --nopostun:不执行"卸载过程完成之后运行的脚本片段";
    --noscripts:等价于 --nopreun --nopostun;
    
    PS:卸载的时候,不能指明完整的包名,只需要指定要卸载的软件包的名字即可。

    2.2.5、rpm与查询相关的选项(最核心之一)

    语法格式:
    rpm {-q|--query} [select-options] [query-options]
    
    select-options:
    -a, --all:查询所有已经安装过的软件包;
    -f, --file FILE:查询指定文件由哪一个软件包提供;
    -g, --group GROUP:查询指定开发包组中对应程序包,系统已经安装的有哪些;
    -p, --package PACKAGE_FILE:用于实现对未安装的程序包进行查询操作;
    --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供
    --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;
    
    query-options:
    --changelog:查询软件包的改变信息;
    -l, --list:查询软件包安装生成的所有文件列表;
    -i, --info:查询程序包的相关信息,包括名字,版本号,大小,所属包组,描述信息等;
    -c, --configfiles:查询软件包提供的配置文件列表;(已经隐式含有-l,不用显式再指明-l选项)
    -d, --docfiles:查询软件包提供的文本文件列表;(已经隐式含有-l,不用显式再指明-l选项)
    --dump:导出(打印)软件包的以下部分的详细信息(隐式含有-l选项)
    path size mtime digest mode owner group isconfig isdoc rdev symlink
    路径 大小 修改事件 摘要码 权限 文件属主 文件属组 是否为配置文件 是否为文件文件, 设备相关,链接相关
    --filesbypkg:查询所有指定软件包的安装的文件列表(每个文件前边会有软件包名,再查找多个软件包的文件列表
    的时候可便于区分);
    -i, --info:查询程序包的相关信息,包括名字,版本号,大小,所属包组,描述信息等;
    -L, --licensefiles:查询软件包的许可证信息;
    --provides:查询软件包的CAPABILITY(能力);
    -R, --requires:查询指定软件包的依赖能力关系(这里的依赖关系不一定到一个软件包,因为能力是一种体现,
    一个软件包可以有多个能力);
    --scripts:查询软件包自带的脚本片段;
    

    2.2.6、rpm与校验相关的选项

    语法结构:
    rpm {-V|--verify} [select-options] [verify-options]
    select-options和查询的select-options相同;
    
    verify-options:
    --nodeps:校验的时候不检查软件包的依赖关系;
    --nodigest:校验的时候不检查包完整性;
    --nosignature:校验的时候不检查包签名信息和来源合法性;
    
    输出格式由9个字符组成的字符串,可能用来标识的属性有:
    c %config configuration file. 配置文件
    d %doc documentation file. 文档文件;
    g %ghost file (i.e. the file contents are not included in the package payload).
    l %license license file.: 许可证文件
    r %readme readme file. 说明文件
    
    字符构成:
    如果对应字符位置标记为符号"."表示校验通过,没有异常,如果为符号"?",表示检测异常,可能因为没有权限等
    原因造成,如果标记为以下字符表示对应属性检测失败(软件包本身属性不变,如果有修改,对应字段会作出
    相应的标记,不是所检测不同就表示有问题,只能说与元件包原始提供的检测不一样):
    S file Size differs    标记为S表示文件大小不同;
    M Mode differs (includes permissions and file type) 标记为M表示权限不同(包括权限和文件类型)
    5 digest (formerly MD5 sum) differs 标记为5 表示消息摘要码不一样;
    D Device major/minor number mismatch 标记为D表示主设备号或次设备号不匹配;
    L readLink(2) path mismatch 标记为L表示路径不匹配;
    U User ownership differs 标记为U表示文件的属主不同;
    G Group ownership differs 标记为G表示文件的属组不同;
    T mTime differs 标记为T表示文件的修改时间不同;
    P caPabilities differ 标记为P表示软件包提供的能力检测不同;
    
    包来源合法性验证和完整性验证:
        来源合法性验正:
        完整性验正:
    
    获取并导入信任的包制作者的密钥:
        对于CentOS发行版来说:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    验证:
        (1) 安装此组织签名的程序时,会自动执行验正;
        (2) 手动验证:rpm -K PACKAGE_FILE
    
    PS:校验rpm软件包也不能带上rpm的全路径,只需要指明rpm包的名字即可;

    2.2.7、rpm与数据库维护相关

    数据库重建:
        rpm管理器数据库路径:/var/lib/rpm/
        查询操作:通过的rpm的数据库进行;
    
    获取帮助:
        CentOS 6:man rpm
        CentOS 7:man rpmdb
    
    rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY]
        --initdb:初始化数据库,当前无任何数据库可实始化创建一个新的;当前有时不执行任何操作;
        --rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;

    2.3、实际案例

    本小结主要以光盘中的一个名叫zsh的软件包进行演示操作说明。
    1、查询
    linux下包管理器

    linux下包管理器

    linux下包管理器

    2、安装和升级安装,卸载

    linux下包管理器

    3、校验和数据库维护

    linux下包管理器

    linux下包管理器

    学完rpm,记得把这个链接的10多个常见问题看一下,非常有用:
    http://fedoranews.org/alex/tutorial/rpm/

    Problem 1: Install or Upgrade a package? Can I install an old one?
    Problem 2: Remove a package? Is it going to remove any dependencies?
    Problem 3: Query installed packages? What about a RPM file?
    Problem 4: List what packages are required by some RPM package?
    Problem 5: Find from which package the file /usr/bin/smbmount belongs?
    Problem 6: List what files will be installed by a RPM package?
    Problem 7: Install a package directly from Internet? Can I use a proxy?
    Problem 8: Simulate what will be done when executing "rpm -ivh new-kernel.rpm"?
    Problem 9: Upgrade all my installed packages with one Freshen command?
    Problem 10: Figure out the Kernel version(smp, bigmem) and base arch(i386, athlon)?
    Problem 11: Install a new Kernel version but keeping my old one installed?
    Problem 12: Make backups of my old packages when updating or removing them?
    Problem 13: Build a RPM package from a SRPM with rpmbuild?
    Problem 14: Check digests and signatures against a package?
    Problem 15: See what RPM macros are defined on my system?
    Problem 16: Get rpm back? The command "rpm -qa" returns nothing!
    Problem 17: Figure out the installation time of my packages? [User Contribution]
    Problem 18: Figure out the size of a installed package? [User Contribution]
    
    1、安装和升级软件包,我可以使用旧软件包吗?
    2、如何卸载软件包,会卸载掉依赖文件吗?
    3、查询已经安装的软件包,以及rpm的安装文件信息?
    4、列出依赖于rpm包的包以及文件?
    5、查找某个程序文件属于哪一个软件包?(比如查询/usr/bin/smbmount输出哪个软件包)
    6、列出rpm软件包将要安装的文件?
    7、如何直接从互联网安装一个软件包?我可以使用代理吗?(例如使用ftp协议或者http协议)
    8、如何模拟安装一个软件包?
    9、如何一次升级所有已经安装过的软件包?
    10、如何查询自己的内核版本以及系统体系架构?
    11、安装一个新的内容版本并且保留之前已经安装过的旧版本?
    12、在升级或卸载软件包的时候,如果备份软件包?
    13、使用rpmbuild工具从SRPM格式构建出对应的RPM包?(这个涉及到rpm包的制作知识点,有兴趣可以查阅)
    14、如何检验包的完整性和来源合法性?
    15、查看我的系统定义的和RPM包相关的宏有哪些?(这个涉及到rpm包的制作知识点,有兴趣可以查阅)
    16、有时候"rpm -qa"查询不出东西,怎么处理?
    17、如何计算包的安装时间?(这个是用户提交的,非官方)
    18、如何计算出已经安装包的大小?(这个是用户提交的,非官方)

    三、rpm包管理器的前端工具yum

    3.1、yum概述

    yum是一个交互式的基于rpm实现的包管理器。它可以自动执行系统的更新,包括依赖性分析以及基于"仓库(repository)"的元数据库过时的处理。它也能够实现安装(新)软件包,卸载(旧)软件包以及对已经安装的软件包的查询,或者向其他命令或程序提供可用的软件包。yum和其他高级的软件包管理工具是相似的,例如像apt-get或smart。

    yum可以解决rpm安装软件包依赖的问题,不过yum是基于rpm来实现的,所以如果rpm使用有异常或者环境有问题,yum可能会使用异常。
    yum - Yellowdog Updater Modified,通常都叫小黄狗。yum是rpm的前端工具实现,可以从指定服务器上自动下载程序包,并自动分析程序包的元数据、自动处理程序包之间的依赖关系,能一次性安装完所有依赖的包,而无须繁琐地一次次安装所有依赖包。yum访问访问文件服务器(俗称yum仓库,yum repository)的模式是基于C/S架构的,而文件服务器(repository)则需要以某种共享服务方式将其提供的程序包及包相关的元数据提供给其他主机使用,通常使用到的协议有http、https、ftp、nfs等。此外,还可以使用光盘作为本地仓库或者自己制作本地仓库,通常使用到的协议是file。

    上面有提到repository,yum的repository俗称yum仓库(yum repo),这个仓库里面存储了很多rpm包以及存放于特定
    repodata目录下的包的相关元数据文件。既然yum访问yum仓库的模式是C/S架构,所以就必然有个yum客户端和
    yum服务端的概念。

    • yum客户端
    配置文件:
        /etc/yum.conf:为所有仓库提供公共配置
        /etc/yum.repos.d/*.repo:为仓库的指向提供配置
    
    yum仓库指向的配置文件:
    [repositoryID]    这个表示仓库的id表示,不同的yum仓库配置不能相同;
    name=Some name for this repository    这个是仓库的名字;
    baseurl=url://path/to/repository/   这个是访问真正的yum服务端的url指向;
    enabled={1|0}   仓库是否启用,1表示启用(默认值),0表示未启用;
    gpgcheck={1|0}   是否要对程序包数据的来源合法性和数据完整性做校验;,1表示检查,0表示不检查;
    gpgkey=URL     指定GPG密钥文件的访问路径,可由仓库提供;;(如果gpgcheck启用,这里就要指向)
    enablegroups={1|0}  是否允许以组的方式管理仓库;
    failovermethod={roundrobin|priority}
        默认为:roundrobin,意为随机挑选;
        当baseurl同时指向多个仓库路径时,可指定以什么方式选择url去访问仓库,以及当某一路径访问
    失败时,可指定如何再选择路径;roundrobin是随机挑选路径访问,priority是自上而下选择路径访
    问;
    cost=
        开销;开销越小,该仓库url更优;默认值为1000.
    
    • yum服务端(yum仓库)
      至于服务端,没什么好说的,我们上面有讲过客户端了,我们来通过几张图来简要说明。
      摘抄:

    linux下包管理器

    linux下包管理器

      用户使用yum去请求安装某一个程序包时,yum工具会先去yum配置文件中查找yum仓库指向的路径,根据该路径去访问远程或本地的文件服务器,这个服务器作为yum仓库并且存储了众多的rpm包以及包相关的元数据文件。当yum根据仓库路径访问到仓库后,会首先尝试请求获取rpm包的元数据文件并缓存至本地(/var/cache/yum目录),而这个元数据文件包括了该仓库所有rpm包的程序包名、版本号、依赖性以及每个程序包所提供的capabilities等。而后,yum根据用户要安装的程序包名去元数据文件里查找,看看仓库里是否有用户请求下载的程序包文件,如果找到了则根据元数据文件分析该程序包的依赖关系并分析本地系统上有哪些包已安装、哪些包还没安装,再将所有用户需要安装且本地尚未安装的程序包名列出来,并以客户端的角色发送至文件服务器(仓库)请求下载之。如果请求成功,则yum将要安装的程序包文件也缓存至本地并执行安装操作。安装完成之后将缓存的程序包文件删除以节约空间,而缓存中只留下元数据文件。

      为什么只缓存元数据而不缓存程序包呢?因为程序包一般只安装一次即可,很少会再安装第二次,而且基于节约空间的考虑,因此yum在安装完程序包后会将缓存中的程序包删除。而缓存元数据好处则是当下一次用户使用yum请求安装程序包时可以节约带宽,无需再次重新请求获取全部的元数据文件,并且可以提高本地分析程序包的速度。

      当用户第二次使用yum请求安装程序包时,基于实时同步更新缓存以及节约带宽的考虑,yum会先请求下载yum仓库下rpm包元数据的校验码文件至本地,将其与本地缓存上的元数据校验码相比较,如果相同,说明无须更新;如果不同,则说明仓库中rpm包已经更新,因此yum会重新请求下载仓库上的元数据文件以更新元数据缓存。接着同样是分析程序包依赖性、请求要安装的全部程序包等。

    3.2、yum常见选项

    语法结构:
    yum [options] [command] [package ...]
    
    options表示选项,command表示使用的命令,package表示软件包的名字;
    
    command is one of:
     * install package1 [package2] [...]
     * update [package1] [package2] [...]
     * update-to [package1] [package2] [...]
     * update-minimal [package1] [package2] [...]
     * check-update
     * upgrade [package1] [package2] [...]
     * upgrade-to [package1] [package2] [...]
     * distribution-synchronization [package1] [package2] [...]
     * remove | erase package1 [package2] [...]
     * autoremove [package1] [...]
     * list [...]
     * info [...]
     * provides | whatprovides feature1 [feature2] [...]
     * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
     * makecache [fast]
     * groups [...]
     * search string1 [string2] [...]
     * shell [filename]
     * resolvedep dep1 [dep2] [...]
        (maintained for legacy reasons only - use repoquery or yum provides)
     * localinstall rpmfile1 [rpmfile2] [...]
        (maintained for legacy reasons only - use install)
     * localupdate rpmfile1 [rpmfile2] [...]
        (maintained for legacy reasons only - use update)
     * reinstall package1 [package2] [...]
     * downgrade package1 [package2] [...]
     * deplist package1 [package2] [...]
     * repolist [all|enabled|disabled]
     * repoinfo [all|enabled|disabled]
     * repository-packages <enabled-repoid> <install|remove|remove-or-reinstall|remove-or-distribution-synchronization>
    [package2] [...]
     * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
     * history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
     * load-transaction [txfile]
     * updateinfo [summary | list | info | remove-pkgs-ts | exclude-updates | exclude-all | check-running-kernel]
     * fssnapshot [summary | list | have-space | create | delete]
     * fs [filters | refilter | refilter-cleanup | du]
     * check
     * help [command]
    
    options:
    1、repolist:显示仓库列表;
    repolist [all|enabled|disabled]
    如果指定enabled:表示只显示启用的仓库列表;
    如果指定disabled:表示只显示关闭的仓库列表;
    如果指定all:表示显示启用和关闭的仓库列表;
    默认的repolist的参数是enabled。
    repolist [all|enabled|disabled] 后边还可以通过仓库的id或者名字来查找,并且支持bash通配符机制;
    repolist [all|enabled|disabled] "Repo-id"
    repolist [all|enabled|disabled] "Repo-name"
    
    有时候需要配置-v选项一起,查看详细信息;
    
    2、repoinfo:查看仓库详细信息
    repoinfo [all|enabled|disabled]
    repoinfo命令和repolist [all|enabled|disabled] -v等价;
    
    3、list:显示程序包
    yum list [all | glob_exp1] [glob_exp2] [...]
    列出所有可用和已经安装的软件包;
    yum list available [glob_exp1] [...]
    列出yum仓库所有可用的的安装包;
    yum list updates [glob_exp1] [...]
    列出yum仓库所有可用的更新包;
    yum list installed [glob_exp1] [...]
    列出所有已经安装的软件包;
    yum list extras [glob_exp1] [...]
    列出所有系统已经安装的软件包却不能被yum仓库的配置文件所列出(通过rpm安装的或者之前yum仓库安装
    后来yum仓库被移除了等)软件包列表;
    yum list distro-extras [glob_exp1] [...]
    列出所有已经安装的软件包却不能根据yum配置文件列出的yum仓库的名字所匹配(yum仓库已经被移除了)软件包
    列表;
    yum list obsoletes [glob_exp1] [...]
    列出系统已经安装却被rpm仓库的配置文件列表指向yum仓库人为软件包已经过时了的软件包列表;
    yum list recent
       List  packages recently added into the repositories. This is often not helpful, but what you may really want
       to use is "yum list-updateinfo new" from the security yum plugin.
    列出最近加入yum仓库的软件包列表。
    
    4、install:安装
    install package1 [package2] [...]
    
    5、reinstall:重新安装
    reinstall package1 [package2] [...]
    
    6、update:升级更新
    update [package1] [package2] [...]
    不指定软件包名或者指定参考没有匹配(可以使用bash通配机制)软件包,会更新所有软件包;
    
    7、downgrade:降级
    downgrade package1 [package2] [...]
    
    8、check-update:检查是否有可用的升级
    返回状态值为100表示有可用的软件包升级(正常会返回可用的软件包更新列表);
    返回状态值为0表示无可用的软件包升级;
    返回状态值为1表示运行报错;
    
    9、remove or erase:卸载软件包
    remove | erase package1 [package2] [...]
    yum默认有保护yum自身的机制,不能对yum本身进行卸载;
    
    10、info:查看程序包信息
    列出描述和摘要信息,可选的指定选项和list一样,下面只理出,不再次说明含义。
    yum info [all | glob_exp1] [glob_exp2] [...]
    yum info available [glob_exp1] [...]
    yum info updates [glob_exp1] [...]
    yum info installed [glob_exp1] [...]
    yum info extras [glob_exp1] [...]
    yum info distro-extras [glob_exp1] [...]
    yum info obsoletes [glob_exp1] [...]
    yum info recent
    用的最多的就是:
    yum info package_name类似于rpm -qi package_name或者rpm -qpi package_name.xxx.rpm
    
    11、search:搜索程序包
    search [all] string1 [string2] [...]
    以指定的关键字搜索程序包名及summary信息;
    默认是根据报名和摘要信息进行搜索,如果检索失败,会去详细描述信息和url中去检索;
    可以显式指明all来增大检索的范围,搜索的结果会有一定的排序;
    
    12、provides 或 whatprovides:查看指定的特性是由哪个程序包提供
    provides | whatprovides feature1 [feature2] [...]
    
    13、clean:清理本地缓存
    yum clean expire-cache  清理过期缓存;
    yum clean packages   清理包;
    yum clean headers  清理头文件;
    yum clean metadata 清理元数据;
    yum clean dbcache 清理sqlite数据库缓存;
    yum clean rpmdb 清理本地的rpmdb缓存;
    yum clean plugins 清理插件;
    yum clean all 清理所有的
    
    14、makecache:构建本地缓存
    makecache [fast]
    不加fast,会对所有启用的仓库构建本地缓存数据;
    加fast,速度更快,不过只会对过期的缓存进行重新缓存,已经缓存且没过期的不会;
    
    15、deplist:查看指定的软件包所依赖的能力(capabilities)
    deplist package1 [package2] [...]
    
    16、history:查看yum事务历史
    history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
    不常用,这里不进行讲解每个选项的含义。
    
    17、安装及升级本地程序包:
    * localinstall rpmfile1 [rpmfile2] [...]
       (maintained for legacy reasons only - use install)
    * localupdate rpmfile1 [rpmfile2] [...]
       (maintained for legacy reasons only - use update)
    这是一个早期的版本的选项,就是如果你本地有一个rpm文件,你可以直接通过yum 指定这个rpm文件(接的全名)
    来安装(会解决依赖管理,去启用的仓库中寻找依赖的软件包)。
    CentOS 6.x和CentOS 7.x直接使用:
    yum install package_name.xxx.rpm
    yum update package_name.xxx.rpm
    
    18、包组管理相关:
    * groupinstall group1 [group2] [...]   #安装开发包组
    * groupupdate group1 [group2] [...]  #更新开发包组
    * grouplist [hidden] [groupwildcard] [...] #列出开发包组的信息
    * groupremove group1 [group2] [...] #卸载开发包组
    * groupinfo group1 [...]  #查看开发包组的摘要信息(包含软件包列表)
    
    yum的命令行选项:
    --nogpgcheck:禁止进行gpg check;
    -y: 自动回答为“yes”;
    -q:静默模式;
    --disablerepo=repoidglob:临时禁用此处指定的repo;
    --enablerepo=repoidglob:临时启用此处指定的repo;
    --noplugins:禁用所有插件;
    

    3.3、自己配置yum仓库

    3.3.1、配置本地yum仓库

    我们本地有个iso的光盘,里面有很多软件包,简单来看看如何配置yum的客户端,然后通过挂载光盘
    到文件系统上,通过本地文件系统安装管理软件包。
    
    (1) 挂载光盘至某目录,例如/media/cdrom
    mkdir -p /media/cdrom  #创建光盘挂载点
    mount -r -t iso9660 /dev/cdrom /media/cdrom #只读挂载光盘文件到/dev/cdrom下(iso9660表示光盘的类型)
    
    (2) 创建配置文件
    最少可选模板,
    [repository-id]
    name=
    baseurl=
    gpgcheck=
    enabled=
    
    [root@node2 ~]# cd /etc/yum.repos.d/
    [root@node2 yum.repos.d]# mkdir -p /media/cdrom
    [root@node2 yum.repos.d]# mount -r -t iso9660 /dev/cdrom /media/cdrom/
    [root@node2 yum.repos.d]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3        98G  1.5G   97G   2% /
    devtmpfs        229M     0  229M   0% /dev
    tmpfs           238M     0  238M   0% /dev/shm
    tmpfs           238M  8.8M  230M   4% /run
    tmpfs           238M     0  238M   0% /sys/fs/cgroup
    /dev/sda1       397M   94M  303M  24% /boot
    tmpfs            48M     0   48M   0% /run/user/0
    tmpfs            48M     0   48M   0% /run/user/1000
    tmpfs            48M     0   48M   0% /run/user/1007
    /dev/sr0        4.1G  4.1G     0 100% /mnt
    [root@node2 yum.repos.d]# ls -l /media/cdrom/
    total 614
    -rw-r--r-- 1 root root     16 Apr  1  2015 CentOS_BuildTag
    drwxr-xr-x 3 root root   2048 Mar 28  2015 EFI
    -rw-r--r-- 1 root root    215 Mar 28  2015 EULA
    -rw-r--r-- 1 root root  18009 Mar 28  2015 GPL
    drwxr-xr-x 3 root root   2048 Mar 28  2015 images
    drwxr-xr-x 2 root root   2048 Mar 28  2015 isolinux
    drwxr-xr-x 2 root root   2048 Mar 28  2015 LiveOS
    drwxr-xr-x 2 root root 589824 Apr  1  2015 Packages
    drwxr-xr-x 2 root root   4096 Apr  1  2015 repodata
    -rw-r--r-- 1 root root   1690 Mar 28  2015 RPM-GPG-KEY-CentOS-7
    -rw-r--r-- 1 root root   1690 Mar 28  2015 RPM-GPG-KEY-CentOS-Testing-7
    -r--r--r-- 1 root root   2883 Apr  1  2015 TRANS.TBL
    
    这是我配置的yum仓库客户端的配置文件
    [root@node2 yum.repos.d]# cat local-base.repo
    [CentOS7-localbase]
    name=CentOS 7 local iso base
    baseurl=file:///media/cdrom
    gpgcheck=0
    enabled=1
    
    [root@node2 yum.repos.d]# yum repolist
    Loaded plugins: fastestmirror
    CentOS7-localbase                                                                                      | 3.6 kB  00:00:00     
    (1/2): CentOS7-localbase/group_gz                                                                      | 154 kB  00:00:00     
    (2/2): CentOS7-localbase/primary_db                                                                    | 2.7 MB  00:00:00     
    Loading mirror speeds from cached hostfile
     * base: mirrors.163.com
     * extras: mirrors.shu.edu.cn
     * updates: mirrors.163.com
    repo id                                                  repo name                                                      status
    CentOS7-localbase                                        CentOS 7 local iso base                                        3,576
    base/7/x86_64                                            CentOS-7 - Base                                                9,911
    extras/7/x86_64                                          CentOS-7 - Extras                                                432
    updates/7/x86_64                                         CentOS-7 - Updates                                             1,602
    repolist: 15,521
    上面可以看出,我们的配置的已经可以被查询出来了。
    
    yum的repo配置文件中可用的变量:
        $releasever: 当前OS的发行版的主版本号;
        $arch: 平台;
        $basearch:基础平台;
        $YUM0-$YUM9
    

    3.3.2、配置网络yum仓库

    自己准备一些软件包,然后构建一个yum的服务端仓库,然后通过http协议给本地机器走http协议访问。
    
    yum server:
    
    1、创建一个文件系统目录,上传一些软件包(模拟测试用的)
    [root@node2 ~]# mkdir -p /data/yum_server
    [root@node2 ~]# cd /data/yum_server
    [root@node2 yum_server]# ls /data/yum_server
    DenyHosts-2.6.tar.gz           nginx-1.10.3.tar.gz   redis-3.2.11.tar.gz  redis-4.0.3.tar.gz  redis-4.0.9.tar.gz
    extundelete-0.2.4.tar.bz2      nginx-1.12.2.tar.gz   redis-3.2.3.tar.gz   redis-4.0.4.tar.gz  ss5-3.8.9-8.tar.gz
    fping-2.4b2-10.el6.x86_64.rpm  nginx-1.14.0.tar.gz   redis-3.2.8.tar.gz   redis-4.0.5.tar.gz  tcl8.6.6-src.tar.gz
    keepalived-1.2.20.tar.gz       nginx-1.6.3.tar.gz    redis-4.0.0.tar.gz   redis-4.0.6.tar.gz
    kubernetes-1.11.2.zip          Python-2.7.13.tar.xz  redis-4.0.1.tar.gz   redis-4.0.7.tar.gz
    lynis-2.5.7.tar.gz             redis-3.2.10.tar.gz   redis-4.0.2.tar.gz   redis-4.0.8.tar.gz
    
    2、安装createrepo
    [root@node2 yum_server]# rpm -q createrepo
    package createrepo is not installed
    [root@node2 yum_server]# yum install createrepo
    ......
    
    3、 初始化repodata索引文件
    -d --database
           Generate sqlite databases for use with yum. This is now the default.
    -p --pretty
           Output xml files in pretty format.
    -o --outputdir <url>
           Optional output directory (useful for read only media).
    
    [root@node2 yum_server]# createrepo -pdo /data/yum_server/ /data/yum_server/
    Spawning worker 0 with 1 pkgs
    Workers Finished
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete
    [root@node2 yum_server]# ls /data/yum_server/
    DenyHosts-2.6.tar.gz           nginx-1.10.3.tar.gz   redis-3.2.11.tar.gz  redis-4.0.3.tar.gz  redis-4.0.9.tar.gz
    extundelete-0.2.4.tar.bz2      nginx-1.12.2.tar.gz   redis-3.2.3.tar.gz   redis-4.0.4.tar.gz  repodata
    fping-2.4b2-10.el6.x86_64.rpm  nginx-1.14.0.tar.gz   redis-3.2.8.tar.gz   redis-4.0.5.tar.gz  ss5-3.8.9-8.tar.gz
    keepalived-1.2.20.tar.gz       nginx-1.6.3.tar.gz    redis-4.0.0.tar.gz   redis-4.0.6.tar.gz  tcl8.6.6-src.tar.gz
    kubernetes-1.11.2.zip          Python-2.7.13.tar.xz  redis-4.0.1.tar.gz   redis-4.0.7.tar.gz
    lynis-2.5.7.tar.gz             redis-3.2.10.tar.gz   redis-4.0.2.tar.gz   redis-4.0.8.tar.gz
    [root@node2 yum_server]# ls /data/yum_server/repodata
    0dd81bd3480e1b700ef4d8501952ada4c17f0f7aa6e33b2ecdc1986327bcef70-primary.sqlite.bz2
    54b9a1903b8bd39bcfd5c1e35840a19891a1187d078a009b4882aedf24e21154-filelists.sqlite.bz2
    59026382882aae681f9af6f060b7d151f36be0e82583dcd07652cc7bb74d9f8c-other.sqlite.bz2
    71b15f14ece520f2722a1648481a433c30e4bff9e407b89ad4d22f0ec40b90bd-other.xml.gz
    cb1c34973cff8ddb6b6f40fc48ddaec468c057f9ff62c20fad26119d278b6c85-primary.xml.gz
    dc8a69e32b8fbfd2a3d54f6f92ed53561754e3bf68b4263be3e74323a1bb2549-filelists.xml.gz
    repomd.xml
    [root@node2 yum_server]# cat /data/yum_server/repodata/repomd.xml |wc -l
    55
    
    4、通过http协议实现yum的文件传输
    (1) 安装nginx
    yum install nginx
    此步骤要包装本地配置的yum客户端配置指向的启用的yum源,要有nginx安装包,常见的EPEL源和nginx官方自己的
    yum仓库就提供nginx的软件包;
    
    (2) 修改nginx主页指向
    
    vim /etc/nginx/conf.d/default.conf
    默认 root   /usr/share/nginx/html
    改为
    root /data/yum_server
    (3) 设置nginx主页权限和防火墙放行http服务(我没有启用Selinux机制)
    [root@node2 ~]# id nginx
    uid=998(nginx) gid=996(nginx) groups=996(nginx)
    [root@node2 ~]# setfacl -R -m u:nginx:r-- /data/yum_server
    [root@node2 ~]# getfacl /data/yum_server
    getfacl: Removing leading '/' from absolute path names
    # file: data/yum_server
    # owner: root
    # group: root
    user::rwx
    user:nginx:r--
    group::r-x
    mask::r-x
    other::r-x
    [root@node2 ~]# getfacl /data/yum_server/redis-4.0.1.tar.gz 
    getfacl: Removing leading '/' from absolute path names
    # file: data/yum_server/redis-4.0.1.tar.gz
    # owner: root
    # group: root
    user::rw-
    user:nginx:r--
    group::r--
    mask::r--
    other::r--
    [root@node2 yum.repos.d]#  getfacl -p /data/yum_server/redis-4.0.1.tar.gz 
    # file: /data/yum_server/redis-4.0.1.tar.gz
    # owner: root
    # group: root
    user::rw-
    user:nginx:r--
    group::r--
    mask::r--
    other::r--
    
    [root@node2 yum.repos.d]#  getfacl -p /data/yum_server/nginx-1.14.0.tar.gz 
    # file: /data/yum_server/nginx-1.14.0.tar.gz
    # owner: root
    # group: root
    user::rw-
    user:nginx:r--
    group::r--
    mask::r--
    other::r--
    
    Firewalld防火墙放行http:
    [root@node2 yum.repos.d]# firewall-cmd --help|grep add-service
      --add-service=<service>
    [root@node2 yum.repos.d]# firewall-cmd --add-service=http --permanent
    success
    [root@node2 yum.repos.d]# firewall-cmd --reload
    success
    [root@node2 yum.repos.d]# firewall-cmd --list-services
    dhcpv6-client http ssh
    
    (5) 启动nginx,尝试机房访问测试
    [root@node2 ~]# nginx -t 
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    
    [root@node2 ~]# systemctl enable nginx.service
    Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
    [root@node2 ~]# systemctl start nginx.service
    [root@node2 ~]# ss -nlt|grep :80
    LISTEN     0      128                       *:80                       *:* 
    
    如果是单纯的文件访问没问题,不过要想列出nginx的文件列表,首先nginx的工作进程用户要
    对主页的那个目录有执行权限,其次,对应的站点的配置要添加以下内容:
    autoindex on;  # 开启目录文件列表
    autoindex_exact_size on;  # 显示出文件的确切大小,单位是bytes
    autoindex_localtime on;  # 显示的文件时间为文件的服务器时间
    charset utf-8,gbk;  # 避免中文乱码
    
    给执行权限:
    [root@node2 ~]# setfacl -R -m u:nginx:r-x /data/yum_server
    [root@node2 ~]# getfacl -p /data/yum_server
    # file: /data/yum_server
    # owner: root
    # group: root
    user::rwx
    user:nginx:r-x
    group::r-x
    mask::r-x
    other::r-x
    nginx -t检测语法,成功后,
    systemctl reload nginx.service 重新加载
    
    站点浏览器访问测试![](http://i2.51cto.com/images/blog/201810/28/584f59f82b3f4df557b5f0fae32705a0.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
    
    (6)、准备另外一台主机,配置客户端yum源的baseurl指向上面配置的http站点
    
    客户端配置:
    [local-http]
    name=centos7 local http
    baseurl=http://172.168.110.21/
    enable=1
    gpgcheck=0
    
    这里有些凌乱了,我把源码包传到我的yum服务器的软件包目录了,我应该准备rpm包。
    拷贝一些光盘的软件包到我的yum服务端的对应目录。
    [root@node2 yum_server]# cp /media/cdrom/Packages/*.rpm .
    [root@node2 yum_server]# du -sh /data/yum_server/
    3.6G    /data/yum_server/
    重新授权:
    [root@node2 yum_server]# setfacl -R -m u:nginx:r-x /data/yum_server
    软件包加入或变更,要手动更新一下:(更新是非常吃cpu资源的,请不要在有业务的生成环境上测试)
    [root@node2 yum_server]# createrepo --update /data/yum_server
    Spawning worker 0 with 3576 pkgs
    Workers Finished
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete
    客户端重启构建一下缓存数据:
    [root@node1 yum.repos.d]# yum makecache
    Loaded plugins: fastestmirror
    local-http                                                                                             | 2.9 kB  00:00:00     
    (1/3): local-http/primary_db                                                                           | 2.7 MB  00:00:00     
    (2/3): local-http/filelists_db                                                                         | 2.7 MB  00:00:00     
    (3/3): local-http/other_db                                                                             | 1.1 MB  00:00:00     
    Loading mirror speeds from cached hostfile
    Metadata Cache Created
    
    我之前把系统默认自带的repo都备份了,现在哪台客户端主机只剩下这个配置的http的yum仓库。
    [root@node1 yum.repos.d]# yum repolist
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    repo id                                                 repo name                                                       status
    local-http                                              centos7 local http                                              3,577
    repolist: 3,577
    [root@node1 yum.repos.d]# yum info zsh
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Available Packages
    Name        : zsh
    Arch        : x86_64
    Version     : 5.0.2
    Release     : 7.el7
    Size        : 2.4 M
    Repo        : local-http
    Summary     : Powerful interactive shell
    URL         : http://zsh.sourceforge.net/
    License     : MIT
    Description : The zsh shell is a command interpreter usable as an interactive login
                : shell and as a shell script command processor.  Zsh resembles the ksh
                : shell (the Korn shell), but includes many enhancements.  Zsh supports
                : command line editing, built-in spelling correction, programmable
                : command completion, shell functions (with autoloading), a history
                : mechanism, and more.
    [root@node1 yum.repos.d]# yum install zsh
    ......
    [root@node1 yum.repos.d]# rpm -q zsh
    zsh-5.0.2-7.el7.x86_64
    经过简单测试后,发现没有问题。
    
    PS:一般构建自己的yum服务器,会去外网同步更新yum仓库的软件包(这台服务器必须要保证出口带宽)。如果
    走外网提供yum文件传输的话,可以这样做,同步外网的软件包,然后对内走内网使用yum仓库。
    比较有名的,CentOS的自己的源,163的源,EPEL的源,阿里云的源等等。

    四、rpm包管理器的前端工具dnf(精简说明)

    默认base仓库没有dnf软件包,需要特殊配置,就连EPEL源也没有,所以我这里只是简单的介绍一下。

    网上google的做法:

    yum -y install wget
    wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/dnf-conf-0.6.4-2.sdl7.noarch.rpm
    wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64//dnf-0.6.4-2.sdl7.noarch.rpm
    wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/python-dnf-0.6.4-2.sdl7.noarch.rpm  
    yum -y install python-dnf-0.6.4-2.sdl7.noarch.rpm  dnf-0.6.4-2.sdl7.noarch.rpm dnf-conf-0.6.4-2.sdl7.noarch.rpm 
    
    [root@node2 ~]# yum info dnf
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
     * base: mirrors.163.com
     * epel: mirrors.yun-idc.com
     * extras: mirrors.shu.edu.cn
     * updates: mirrors.163.com
    Installed Packages
    Name        : dnf
    Arch        : noarch
    Version     : 0.6.4
    Release     : 2.sdl7
    Size        : 652 k
    Repo        : installed
    From repo   : /dnf-0.6.4-2.sdl7.noarch
    Summary     : Package manager forked from Yum, using libsolv as a dependency resolver
    URL         : https://github.com/rpm-software-management/dnf
    License     : GPLv2+ and GPLv2 and GPL
    Description : Package manager forked from Yum, using libsolv as a dependency resolver.
    
    dnf是是下一个即将到来的主要版本的yum,它是基于rpm包管理器的linux发型版本的包管理器。(很谦虚)
    它大体上维护了与YUM兼容的CLI,并定义了扩展和插件的严格API。yum相较yum是有有点的,不过目前
    的CentOS 7.x没有采纳进来, Fedora 22 已经默认使用 DNF作为包前端管理器。
    
    dnf语法结构:
    dnf [options] <command> [<args>...]
    Available commands are:
    
    · autoremove
    · check-update
    · clean
    · distro-sync
    · downgrade
    · group
    · help
    · history
    · info
    · install
    · list
    · makecache
    · provides
    · reinstall
    · remove
    · repolist
    · repository-packages
    · search
    · updateinfo
    · upgrade
    · upgrade-to
    
    1、安装和重新安装
    dnf [options] install <spec>...
    dnf [options] reinstall <package-specs>...
    
    2、检测更新和更新
    dnf [options] check-update [<package-specs>...]
    dnf [options] upgrade
    
    3、卸载
    dnf [options] erase <spec>...
    dnf [options] remove <package-specs>...
    
    4、查看repo和软件包以及列表
    dnf [options] repolist [enabled|disabled|all]
    dnf [options] info [<package-spec>...]
    dnf [options] list [all] [<package-name-specs>...]
    dnf [options] list installed [<package-name-specs>...]
    dnf [options] list available [<package-name-specs>...]
    dnf [options] list extras [<package-name-specs>...]
    dnf [options] list obsoletes [<package-name-specs>...]
    dnf [options] list recent [<package-name-specs>...]
    dnf [options] list upgrades [<package-name-specs>...]
    
    5、检索软件包
    dnf [options] search [all] <keywords>...
    
    6、清理缓存和构建缓存
    dnf clean dbcache
    dnf clean expire-cache
    dnf clean metadata
    dnf clean packages
    dnf clean plugins
    dnf clean all
    dnf [options] makecache
    
    等(其他查看软件包的能力,以及包组管理相关,我就不列出来了,也是支持的,和yum几乎差别不大)
    
    展开全文
  • Linux篇(三):Linux包管理工具

    千次阅读 2018-12-22 21:12:23
    什么是包管理工具 软件包管理工具的作用是提供在操作系统中安装,升级,卸载需要的软件的方法,并提供对系统中所有软件状态信息的查询。在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和DPT为最常见的两类软件包...

    什么是包管理工具

    简单来说,Linux软件包管理工具是一组命令的集合,其作用是提供在操作系统中安装,升级,卸载需要的软件的方法,并提供对系统中所有软件状态信息的查询。在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和DPT为最常见的两类软件包管理工具,他们分别应用于基于 rpm 软件包的 Linux 发行版本和基于deb软件包的 Linux 发行版本。

    版本前端后端包格式
    Debian, Ubuntu等dpkg-deb/apt-getDPT管理器deb
    RedHat,SUSE等yumRPM管理器rpm

    #注意: deb前端工具和deb格式程序包在具体发行的Linux环境下的区别, rpm管理器和rpm格式程序包同理.

    RPM 软件包管理

    RPM 全称为 Redhat Package Manager,最早由 Red Hat 公司制定实施,随后被 GNU 开源操作系统接受并成为很多 Linux 系统 (RHEL) 的既定软件标准。
    yum(Yellodog Update Modifier),是RPM提供的更高级工具,能手动管理RPM的依赖关系 ;
    rpm与 yum的具体命令,此处不再赘述,网上有较多资料;(博客中与linux相关的知识主要以Ubuntu为主)
    在这里插入图片描述

    DEB 软件包管理工具

    1. 本地管理:dpkg命令
    基于 Debian 操作系统 (UBUNTU) 的 DEB 软件包管理工具- DPKG,全称为 Debian Package,是一个可以安装、构建、删除及管理 Debian 软件包的命令行工具,用来制作Debian包的工具,同时也可以查看、解压Debian包。
    dpkg -i 全称的安装命令,必须全称
    dpkg -L 列出安装的路径,可以查看怎么使用, package只需要前边的名字就可以
    dpkg -r 卸载, package只需要前边的名字就可以
    dpkg -P 卸载软件及配置文件
    dpkg -s 显示软件安装的状态,看是不是安装了
    2. 在线安装:apt类命令
    由于操作系统中软件包存在复杂的依赖关系,为了解决软件包的依赖性问题和获取问题,出现了APT(是Debian Linux开发的)
    APT是Ubuntu Linux中的命令行软件包管理工具,用于获取、安装、编译、卸载和查询Deb软件包,以及检查软件包的依赖关系。常用的APT实用程序是apt-get、apt- cache、apt-file、apt-cdrom等。
    Ubuntu采用集中式的软件仓库机制,将各式各样的软件包分门别类的存放在软件仓库中,进行有效的组织和管理。然后,将软件仓库至于许许多多的镜像服务器中,并保持基本一致。这样,所有的Ubuntu用户随时都能获得最新版本的安装软件包。因此,对于用户,这些镜像就是他们的软件源。
    需要知道的3个路径:
    /etc/apt/sources.list 这是安装包的镜像站点
    /var/lib/apt/lists 本地软件包索引(这样才能快速的定位用哪个网站)
    /var/cache/apt/archives/ 安装包的默认下载目录
    apt的命令如下:
    sudo apt-get update 更新本地索引,即更新/var/lib/apt/lists里边的内容
    sudo apt-get upgrade 所有软件包都更新。。。慎用
    sudo apt-get install xxxx (不是全称,软件包名即可)安装
    sudo apt-get --reinstall install xxxx 重新安装,可以在不卸载的情况下更新版本
    sudo apt-get remove --purge xxxx 彻底卸载(–purge是彻底)
    sudo apt-get clean 删除默认目录下的deb包
    sudo apt-get source xxx 下载 xxx的源码到当前目录
    sudo apt-cache policy xxx 查看已经安装的软件的信息
    sudo apt-cache show xxx 查看索引文件中已有软件包的详细信息
    sudo apt-cache showpkg xxx 跟show差不多
    sudo apt-cache depends xxx 列出xxx所依赖的文件
    sudo apt-cache rdepends xxx 列出xxx被依赖的文件

    PS: Linux中apt与apt-get命令的区别与解释

    Ubuntu 16.04 发布时,一个引人注目的新特性便是 apt 命令的引入。其实早在 2014 年,apt 命令就已经发布了第一个稳定版,只是直到 2016 年的 Ubuntu 16.04 系统发布时才开始引人关注。
    随着 apt install package 命令的使用频率和普遍性逐步超过 apt-get install package,越来越多的其它 Linux 发行版也开始遵循 Ubuntu 的脚步,开始鼓励用户使用 apt 而不是 apt-get。
    Debian 作为 Ubuntu、Linux Mint 和 elementary OS 等 Linux 操作系统的母板,其具有强健的「包管理」系统,它的每个组件和应用程序都内置在系统中安装的软件包中。Debian 使用一套名为 Advanced Packaging Tool(APT)的工具来管理这种包系统,不过请不要把它与 apt 命令混淆,它们之间是其实不是同一个东西。
    在基于 Debian 的 Linux 发行版中,有各种工具可以与 APT 进行交互,以方便用户安装、删除和管理的软件包。apt-get 便是其中一款广受欢迎的命令行工具,另外一款较为流行的是 Aptitude 这一命令行与 GUI 兼顾的小工具。
    apt 命令的引入是为了解决命令过于分散的问题,它包括了 apt-get 命令出现以来使用最广泛的功能选项,以及 apt-cache 和 apt-config 命令中很少用到的功能。
    在使用 apt 命令时,用户不必再由 apt-get 转到 apt-cache 或 apt-config,而且 apt 更加结构化,并为用户提供了管理软件包所需的必要选项。
    简单来说就是:apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。1


    1. https://blog.csdn.net/maizousidemao/article/details/79859669 ↩︎

    展开全文
  • Kali Linux 镜像源与包管理

    万次阅读 2015-11-16 14:51:00
    Kali Linux镜像源与包管理官方的软件源速度较慢,使用国内的镜像源可以显著提升软件安装于更新的速度。下面给出两个优质的kali linux软件镜像源。需要注意的是,不同版本的kali的软件源地址是不同的,地址中需要填写...

    Kali Linux镜像源与包管理

    官方的软件源速度较慢,使用国内的镜像源可以显著提升软件安装于更新的速度。下面给出两个优质的kali linux软件镜像源。需要注意的是,不同版本的kali的软件源地址是不同的,地址中需要填写正确的发行版本名称。例如,我自己安装的kali版本是2.0,官方的发行版本名称是sana,因此在以下链接中以sana为例给出源地址(1.0版本的kali的发行版本名称为 kali)。

    阿里云源

    特点:稳定,高速

    #阿里云kali源
    deb http://mirrors.aliyun.com/kali sana main non-free contrib
    deb-src http://mirrors.aliyun.com/kali sana main non-free contrib
    deb http://mirrors.aliyun.com/kali-security sana/updates main non-free contrib

    中科大源

    特点:时快时慢,最快时超过阿里云源

    #中科大kali源
    deb http://mirrors.ustc.edu.com/kali sana main non-free contrib
    deb-src http://mirrors.ustc.edu.com/kali sana main non-free contrib
    deb http://mirrors.ustc.edu.com/kali-security sana/updates main non-free contrib

    将以上地址添加到/etc/apt/sources.list,将你不想使用的源使用#注释掉,保存即可。

    软件管理

    Kali Linux 基于Debian发行版,使用apt-get命令进行包管理

    #更新软件列表
    apt-get update
    #升级软件包
    apt-get upgrade
    #发行版升级
    apt-get dist-upgrade
    #安装软件包
    apt-get install [package-name]
    #移除软件包
    apt-get remove [package-name]
    #彻底移出软件包(包括配置文件)
    apt-get purge [package-name]
    #清理多余的软件包(不再使用的依赖包)
    apt-get autoremove
    #移除所有的安装包(deb文件)
    apt-get clean
    #移除已卸载的软件包的安装包(deb文件)
    apt-get autoclean
    
    展开全文
  • Linux系统软件包管理介绍

    千次阅读 2018-12-30 18:57:24
    Linux系统软件包管理介绍 Linux发行版中附带有成千上万的可用包,其中包括了Internet...文章目录Linux系统软件包管理介绍一、软件包基础软件运行环境:包管理器:包命名:解决依赖包管理工具:程序包管理器:二、RPM...

    Linux系统软件包管理介绍

    Linux发行版中附带有成千上万的可用包,其中包括了Internet工具、开发工具、办公工具、游戏等,如果你没有选择完整安装,则只会安装这些包的“子集”,如何删除不想要的包,如何安装遗漏的包,学习LInux系统的软件包管理将解决你的这些问题
    在这里插入图片描述

    一、软件包基础

    软件运行环境:

    程序员代码–>预处理–>编译–>汇编–>链接

    静态编译:.a

    动态编译:.so

    包管理器:

    二进制应用程序的组成部分

    二进制文件、库文件、配置文件、帮助文件

    包命名:

    源代码:name-VERSION.tar.gz|bz2|xz

    包之间:可能存在依赖性关系,甚至循环依赖

    解决依赖包管理工具:

    yum:rpm包管理器的前端工具

    apt-get:deb包管理器前端工具

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

    dnf:Fedora 18+ rpm包管理器前端管理工具

    程序包管理器:

    debian:deb文件,dpkg包管理器

    redhat:rpm文件,rpm包管理器

    rpm:Redhat Package Manager

    RPM Package Manager

    二、RPM包管理

    RPM代表Redhat Packge Manager(Redhat包管理器)

    RPM现在已成为管理Redhat和UnitedLinux以及其他许多发行版本上的软件的标准。

    RPM本质上就是一个包,包含可以立即在特定机器体系结构上安装和运行的Linux软件。

    最初加载到发行版本中的所有软件都是通过一个RPM来安装的。

    RPM剖析:

    RPM是文件包,它包括关于包及其功能和依赖关系(即在该包能够运行之前必须安装

    其他哪些包)的信息。还包含包中的文件清单,指定这些文件必须加载到系统中的何处,

    以及它们的初始权限如何。RPM还包含安装前脚本,这是由包开发人员编写的。

    RPM其次还包含已编译的二进制文件。最后,RPM包含了安装后的脚本。

    RPM数据库:

    /var/lib/rpm

    包含了关于系统上已安装的每个RPM信息。这个数据库知道包之间的依赖关系,还知道每个包的

    文档和配置文件的位置。在加载和卸载包时,RPM使用这个数据库来检查依赖关系。用户还可以

    在这个数据库查询关于包的信息。

    rpm

    常用选项:

    -i 安装包
    
    -h 输出哈希(#)符号提供安装进度更新
    
    -v 显示详细过程
    
    -ihv是常用配合选项;
    
    -e 删除已安装的包
    
    -V 验证开关
    
    -U 升级
    
    -q 查询
    
    -qc 显示包的配置文件
    
    -qd 显示包的文档文件
    
    -qi 显示包描述
    
    -ql 显示包的文件列表
    
    -qR 显示包的依赖关系
    
    

    安装:

    rpm{-i|–install}[install-option]PACKAGE_FILE

    -h 输出哈希(#)符号提供安装进度更新
    
    -v 显示详细过程
    
    -ihv是常用配合选项
    

    [install-option]

    –test 测试安装,但不真正执行安装
    
    –nodeps 忽略依赖关系
    
    –replacepkgs|replacefiles 覆盖包安装(可用来修复已安装的安装包)|覆盖文件安装
    
    –nosignature 不检查来源的合法性(不安全)
    
    RPM-GPG-KEY-CentOS-6
    
    –nodigest 不检查包完整性 (不安全)
    
    –noscripts 只装包不执行程序包脚本
    
    –nopre 不执行安装前脚本
    
    –nopost 不执行安装后脚本
    
    –nopreun 不执行卸载前脚本
    
    –nopostun 不执行卸载后脚本
    

    升级:

    rpm{-U|–upgrade}[install-option]PACKAGE_FILE

    rpm{-F|–freshen}[install-option]PACKAGE_FILE

    upfrade 如果安装有旧版程序包,则升级, 如果不存在旧版程序包,则安装

    freshen 如果安装有旧版程序包,则升级, 如果不存在旧版程序包,则不执行升级操作

    rpm -Uvh PACKAGE_FILE…

    rpm -Fvh PACKAGE_FILE…

    注:内核升级不建议使用以上两种升级命令,建议使用-ivh重新安装另一个内核,Linux

    支持多内核版本共存。

    –oldpackage 降级

    –force 强制安装(可用来修复已安装的安装包)

    查询:

    rpm{-q|–query}[select-options][query-options]

    注:包的名称必须精确匹配,不允许使用通配符。然而,如果记不住包的完整名称,您可以

    使用 grep 工具来帮助找到它。可以使用 -qa 开关来查询所有已安装的包,并用 grep 来管道

    输出您能记住的信息。例如:rpm -qa | grep name

    [select-option]

    -a 查看所有已安装的包
    
    -f 查看指定的文件由哪个程序包安装产生
    
    -p rpmfile 针对尚未安装的程序包文件做查询操作(配合文件名而不是包名)
    
    –whatprovides CAPABILITY 查询指定的关键字由哪个包所提供
    
    –whatrequires CAPABILITY 查询指定的关键字被哪个包所依赖
    

    [query-options]

    –changelog 查询rpm包的changelog
    
    -c 查询程序的配置文件
    
    -d 查询程序的文档
    
    -i 查看包描述information
    
    -l 查看指定的程序包安装后生成的文件
    
    –scripts 查看程序包自带的脚本
    
    –provides 列出指定程序包所提供的关键字
    
    -R 查询指定程序包所依赖的关键字CAPABILITY
    
    rpm2cpio 包文件|cpio -itv 预览包内文件
    
    rpm2cpio 包文件|cpio -id “*.conf” 释放包内文件
    

    包校验:

    rpm{-V|–verify}[select-options][verify-options]PACKAGE_FILE

    校验
    注:只能查看已安装的包

    导入所需要公钥

    rpm -K|checksig rpmfile 检查包的完整性和签名
    
    rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    

    CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7

    rpm -qa “gpg-pubkey*”
    

    三、YUM使用介绍

    Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具。

    使用yum安装文件包出错一般都是下面2种情况:

    1. 配置文件的格式错误

    2. 缓存问题
      注:yum不支持多个终端同时执行

    yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下)

    文件服务器:

    http://
    
    https://
    
    ftp://
    
    file://
    

    仓库位置:

    /etc/yum.repos.d/*.repo

    仓库默认设置:

    /etc/yum.conf

    repo关键行

    [base]                                                 仓库名,不可以加空格
    
    name=centos cdrom                        描述信息
    
    baseurl= file:///mnt/cdrom
    
    注:仓库路径为repodata目录的父目录
    
    gpgcheck=0                                       默认为1,0表示不进行数字签名完整性检查
    
    gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7             自动导入秘钥
    
    enabled=0                                          默认为1,0表示仓库禁用
    

    yum日志:

    /var/log/yum.log 包含了使用yum安装与卸载的日志

    yum的repo配置文件中可用的变量:

    $releasever: 当前OS的发行版的主版本号

    $basearch:基础平台;i386, x86_64

    例如:

    http://server/centos/$releasever/$basearch/
    
    http://server/centos/7/x86_64
    
    http://server/centos/6/i384
    

    yum

    格式:yum[option][command][package…]PACKAGE_FILE

    显示仓库列表:

    yum repolist[all|enabled|disabled]
    

    显示程序包:

    yum list
    
    yum list[all|glob_exp1][glob_exp2][…]
    
    yum list{available|installed|updates}[glob_exp1][…]
    

    安装程序包:

    yum install package1 [package2] […]
    
    yum reinstall package1 [package2] […] (重新安装)
    

    升级程序包:

    yum update [package1] [package2] […](升级)
    
    yum downgrade package1 [package2] […] (降级)
    

    检查可用升级:

    yum check-update
    

    卸载程序包:

    yum remove | erase package1 [package2] […]
    

    查看程序包information:

    yum info […] 
    

    查看指定的特性(可以是某文件)是由哪个程序包所提供:

    yum provides | whatprovides feature1 [feature2] […] 
    

    清理本地缓存:

    清除/var/cache/yum/$basearch/$releasever缓存
    
    yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
    

    构建缓存:

    yum makecache
    

    搜索:

    以指定的关键字搜索程序包名及summary信息

    yum search string1 [string2] […]
    

    查看指定包所依赖的capabilities:

    yum deplist package1 [package2] […]
    

    查看yum执行历史:

    yum history
    
    yum history info 6yum history undo 6 
    

    日志:/var/log/yum.log

    安装及升级本地程序包:

    yum install rpmfile1 [rpmfile2] […]
    
    yum update rpmfile1 [rpmfile2] […]
    

    包组管理的相关命令:

    yum groupinstall group1 [group2] […]
    
    yum groupupdate group1 [group2] […]
    
    yum grouplist [hidden] [groupwildcard] […]
    
    yum groupremove group1 [group2] […]
    
    yum groupinfo group1 […]
    

    四、源代码安装

    C、C++:make项目管理器

    configure脚本–>Makefile.in–>Makefile

    C语言源代码编译安装三步骤:

    1、./configure

    --prefix=                              指定目录安装
    
    --sysconfidir=                      指定/etc目录独立安装
    

    (1)通过选项传递参数,指定启用特性,安装路径;执行会参考用户的指定已经Makefile.in
    文件生成Makefile

    (2)检查依赖到的外部环境,如依赖的软件包

    2、make

    编译过程,根据Makefile文件,构建应用程序

    3、make install

    复制文件到相应路径

    展开全文
  • alpine 提供了非常好用的apk软件包管理工具,通过apk –help命令查看完整的包管理命令。 更新索引 update:从远程镜像源中更新本地镜像源索引,update命令会从各个镜像源列表下载APKINDEX.tar.gz并存储到本地...
  • Linux

    千次阅读 多人点赞 2020-02-11 21:22:11
    Linux 介绍1.1 Linux 简介1.2 Linux 历史1.3 Linux 版本2. Linux 安装2.1 安装虚拟机2.2 安装 CentOS3. 远程操作 Linux3.1 SecureCRT 介绍3.2 SecureCRT 登录 Linux4. Linux 的目录结构5. Linux 常用命令5.1 列出...
  • Linux软件包管理及RPM包管理

    千次阅读 2018-05-25 11:37:25
    Linux系统软件包管理介绍 本节索引 软件包基础 RPM包管理 Linux发行版中附带有成千上万的可用包,其中包括了Internet工具、开发工具、办公工具、游戏等,如果 你没有选择完整安装,则只会安装这些包的“子集...
  • Swift 包管理器教程

    千次阅读 2017-05-05 09:00:09
    Swift 包管理器的正式发布是随着 Swift3.0 一起发布的,它是一个用于构建能够运行在 macOS 和 Linux 上的 Swift 库和 app 的新方法。它能够帮助你管理依赖,让你轻松构建、测试和运行你的 Swift 代码。
  • Linux RPM包管理-rpm命令管理

    千次阅读 多人点赞 2018-06-04 14:16:34
    RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括RedHat、CentOS、SUSE等Linux的分发版本都有采用,可以算是公认的...
  • Linux下python包管理总结

    千次阅读 2017-07-20 10:38:29
    Linux下python包管理总结version: 0.01Editor: 刘家兴 查看当前python支持的模块:pydoc modules 安装pipsudo apt-get install python3-pipsudo apt-get install python-pip 指定pip执行路径 vi /usr/bin/pip vi /usr...
  • 基本上有三层可以包含在Linux桌面中: X Windows – 这是允许在...窗口管理器 – 窗口管理器是控制窗口放置和外观的难题。窗口管理器包括:Enlightenment,Afterstep,FVWM,Fluxbox,IceWM等。需要X Windows而不...
  • Linux系统管理

    千人学习 2019-12-05 14:35:37
    Linux零基础学习,包含Linux用户管理,ACL权限设置,LVM磁盘管理,文件系统管理,进程和服务的管理及基于Linux系统各种编程环境的搭建。 本课程内容以基础性、操作性为主,属于云计算与大数据相关专业的专业基础课程...
  • Linux系统RPM包管理之查询,校验命令

    千次阅读 2019-03-16 10:16:44
    一、本篇博客讲解一下Linux系统RPM包管理的两种类型的命令 1、查询命令,2、校验命令 二、查询命令 1、rpm -q 【包名】,功能:查询软件包是否安装,-q代表query(查询),例如: 2、rpm -qa 【包名】 ,功能:查询...
  • linux 中文支持

    热门讨论 2012-09-25 09:18:21
    linux 中文支持,包含文件: fonts-chinese-3.02-12.el5.noarch.rpm m17n-db-chinese-1.3.3-48.el5.noarch.rpm m17n-db-common-cjk-1.3.3-48.el5.noarch.rpm 拷贝到linux系统中,按顺序双击运行或在命令窗口中输入Rpm...
  • Linux初学者面试问题 Linux基本面试问题 1.什么是Linux? 回答:Linux是基于Linux内核的操作系统。它是一个开源操作系统,可以在不同的硬件平台上运行。它为用户提供了免费的低成本操作系统。这是一个用户友好的...
  • 目录 Linux软件包分类 源码和二进制的优缺点 ...Linux系统下的软件包分为源码和二进制两种类型。 源码:源码里面包含了软件的源代码,在使用源码进行软件安装的时候,计算机...
  • 玩转Linux:常用命令实例指南

    万人学习 2019-09-28 11:40:56
    人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。 本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    这是因为Linux和许多版本的Unix一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台(系统的控制台是与系统直接相连的监视和键盘)进行多次登录。每个虚拟控制台可以看作是一个独立的工作站,工作台...
  • Linux总结

    千次阅读 多人点赞 2020-01-14 20:36:45
    二 、初探Linux 2.1 Linux简介 2.2 Linux诞生简介 2.3 Linux的分类 三 、Linux文件系统概览 3.1 Linux文件系统简介 3.2 文件类型与目录结构 四 、Linux基本命令 4.1 目录切换命令 4.2 目录的操作命令(增删改...
  • Linux用户管理

    千次阅读 2018-09-05 10:52:30
    一、用户管理的配置文件 1、配置文件 (1)、/etc/passwd的文件格式 (2)、用户类型 (3)、伪用户 一、与系统相关:比如有些伪用户是与系统的某些操作相关(比如关机,重启等等,会调用伪用户的身份)。...
  • Linux 远程管理工具(XManager)

    万次阅读 多人点赞 2018-05-30 11:53:54
    在工作中经常使用Xmanager来登录远端的Linux系统,在X窗口系统上作图形化的操作。Xmanager可以将PC变成X Windows工作站(非开源)。它是Windows 95/98/ME和Windows NT/2000/XP /2003平台下一个性能优秀的X11R6 PC X...
  • Linux运维工程师学习成长路线

    万次阅读 多人点赞 2019-12-14 20:52:46
    作为互联网的幕后英雄,Linux运维工程师长期隐匿在大众认知范围之外,关于运维的讨论仍旧是一片无人涉足的荒漠。在某知名行业研究调查结果中,非互联网从业者对于运维相关问题的回复有三个高频词汇是:不知道、没听...
  • 一、这篇博客主要是讲解RPM包管理的安装升级与卸载部分。 包全面与包名区别: 【1】、包全名:操作的包是没有安装的包软件时,使用包全名,并且需要注意路径。 【2】、包名:操作的包是已经安装的软件包时,使用包名...
  • LinuxLinux基础常用命令1(常用Linux命令的基本使用,Linux终端命令格式)1. 常用Linux命令的基本使用1.1 学习Linux终端命令的原因1.2 常用Linux命令的基本使用1.3 自动补全2. Linux终端命令格式2.1 终端命令...
  • Linux软件包管理-RPM命令管理

    千次阅读 2018-05-03 23:14:16
    1、软件包分类: ——源码 包括【脚本安装包】 ——二进制 包括【RPM、系统默认】 特点: 源码:用c语言或者时c++语言写的内核但是安装的时候会报错的可能性大,所以用二进制【经过编译之后的.rpm...
  • linux笔记:使用conda命令管理包管理环境详细讲解

    千次阅读 多人点赞 2018-11-29 12:58:52
    管理包 1.1、安装包 1.2、卸载-更新 1.3、搜索 二、管理环境 2.1、创建环境 2.2、进入环境 2.3、离开环境 三、环境保存和导入、列出环境、删除环境 3.1、保存和加载环境 3.2、列出环境 3.3、删除...
  • linux下安装ruby版本管理器RVM

    千次阅读 2015-08-18 10:34:31
    这里以ubuntu为例。直接以如下命令行安装可能会不成功,因为rvm.io站点有时会被墙:curl -sSL https://get.rvm.io | bash -s stable #或者 curl -L https://rvm.io | bash -s stable没...cd rvm然后依次执行如下命令:#
  • linux rpm 如何做到一键下载所有依赖

    千次阅读 2019-06-25 17:45:33
    一键下载所有依赖 yumdownloader --resolve --destdir=./ httpd resolve 下载其 rpm 及其依赖 destdir 指定文件夹,可以不指定 一键安装所有: rpm -Uvh *.rpm --force
  • Windows图形界面下的软件安装,都是...一、使用包管理器  几乎所有的Linux发行版本都使用某种形式的软件包管理安装、更新和卸载软件。与直接从源代码安装相比: 1软件包管理易于安装和卸载; 2易于更新已安装的软件包; 3
  • Linux tar打包命令详解

    万次阅读 2019-06-22 16:39:58
    Linux 系统中,最常用的归档(打包)命令就是 tar,该命令可以将许多文件一起保存到一个单独的磁带或磁盘中进行归档。不仅如此,该命令还可以从归档文件中还原所需文件,也就是打包的反过程,称为解打包。 使用 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 704,280
精华内容 281,712
关键字:

linux包管理器

linux 订阅