• 9-2 yum,dnf和apt


    yum,

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

    • yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下)
    • 文件服务器:
      • http://
      • https://
      • ftp://
      • file://

    yum配置文件

    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}
      • gpgkey=URL
      • enablegroups={1|0}
      • failovermethod={roundrobin|priority}
        • roundrobin:意为随机挑选,默认值
        • priority:按顺序访问
      • cost= 默认为1000

    yum仓库

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

    • $releasever: 当前OS的发行版的主版本号
    • $arch: 平台,i386,i486,i586,x86_64等
    • $basearch:基础平台;i386, x86_64
    • $YUM0-$YUM9:自定义变量

    示例:

    yum源

    阿里云repo文件:

    CentOS系统的yum源:

    EPEL的yum源:

    阿里巴巴开源软件:

    yum-config-manager

    • 生成172.16.0.1_cobbler_ks_mirror_CentOS-X-x86_64_.repo
      yum-config-manager --add-repo= http://172.16.0.1/cobbler/ks_mirror/7/
    • yum-config-manager --disable “仓库名" 禁用仓库
    • yum-config-manager --enable “仓库名” 启用仓库

    yum命令

    yum命令的用法:

    • yum [options] [command] [package ...]

    显示仓库列表:

    • 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] [...]

    升级程序包:

    • 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

    搜索:

    • yum search string1 [string2] [...]
    • 以指定的关键字搜索程序包名及summary信息

    查看指定包所依赖的capabilities:

    • yum deplist package1 [package2] [...]

    查看yum事务历史:

    • 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

    安装及升级本地程序包:

    • yum localinstall rpmfile1 [rpmfile2] ...
    • yum localupdate rpmfile1 [rpmfile2] ...

    包组管理的相关命令:

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

    yum的命令行选项:

    • --nogpgcheck:禁止进行gpg check
    • -y: 自动回答为“yes”
    • -q:静默模式
    • --disablerepo=repoidglob:临时禁用此处指定的repo
    • --enablerepo=repoidglob:临时启用此处指定的repo
    • --noplugins:禁用所有插件

    系统仓库yum库

    系统安装光盘作为本地yum仓库:

    1. 挂载光盘至某目录,例如/mnt/cdrom
      • mount /dev/cdrom /mnt/cdrom
    2. 创建配置文件
      • [CentOS7]
        name=
        baseurl=
        gpgcheck=
        enabled=

    创建yum仓库:

    • createrepo [options]

    DNF(DaNdiFied)

    DNF 介绍:新一代的RPM软件包管理器。DNF 发行日期是2015年5月11日,DNF 包管理器采用Python 编写,发行许可为GPL v2,首先出现在Fedora 18 发行版中。在 RHEL 8.0 版本正式取代了 YUM,DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等

    下载安装所需软件包,或者利用extras仓库安装:

    配置文件:

    • /etc/dnf/dnf.conf

    仓库文件:

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

    日志:

    • /var/log/dnf.rpm.log,/var/log/dnf.log

    DNF使用:

    • 帮助:
      • man dnf
    • dnf 用法:与yum一致
      • dnf [options] [...]
      • dnf --version
      • dnf repolist
      • dnf install httpd
      • dnf remove httpd
      • dnf clean all
      • dnf makecache
      • dnf list installed
      • dnf list available
      • dnf search nano
      • dnf history undo 1

    程序包编译

    程序包编译安装:

    • Application-VERSION-release.src.rpm --> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装
    • 源代码-->预处理-->编译-->汇编-->链接-->执行
    • 源代码组织格式:
      • 多文件:文件中的代码之间,很可能存在跨文件依赖关系
      • C、C++:make 项目管理器
        • configure脚本 --> Makefile.in --> Makefile
      • java: maven

    编译安装:

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

      1. ./configure
        • 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成Makefile
        • 检查依赖到的外部环境,如依赖的软件包
      2. make 根据Makefile文件,构建应用程序
      3. make install 复制文件到相应路径
    • 开发工具:

      • autoconf: 生成configure脚本
      • automake:生成Makefile.in
    • 注意:安装前查看README,INSTALL

    • 开源程序源代码的获取:

      • 官方自建站点:
        • apache.org (ASF:Apache Software Foundation)
        • mariadb.org
        • ...
      • 代码托管:
        • SourceForge.net
        • Github.com
        • code.google.com
    • c/c++编译器: gcc (GNU C Complier)

    • 编译C源代码:

      • 准备:提供开发工具及开发环境
        • 开发工具:make, gcc等
        • 开发环境:开发库,头文件
          • glibc:标准库
      • 实现:通过“包组”提供开发组件
        • Development Tools
        • Server Platform Development
      • 生产实践:基于最小化安装的系统建议安装下面相关包
        • yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree screen lsof tcpdump wget ntpdate net-tools iotop bc bzip2 zip unzip nfs-utils
    • 第一步:configure脚本

      • 选项:指定安装位置、指定启用的特性
      • --help: 获取其支持使用的选项
      • 选项分类:
        • 安装路径设定:
        • --prefix=/PATH:指定默认安装位置,默认为/usr/local/
        • --sysconfdir=/PATH:配置文件安装位置
        • System types:支持交叉编译
      • Optional Features: 可选特性
        • --disable-FEATURE
        • --enable-FEATURE[=ARG]
      • Optional Packages: 可选包
        • --with-PACKAGE[=ARG] 依赖包
        • --without-PACKAGE 禁用依赖关系
      • 注意:通常被编译操作依赖的程序包,需要安装此程序包的“开发”组件,其包名一般类似于name-devel-VERSION
    • 第二步:make

    • 第三步:make install

    安装后的配置:

    1. 二进制程序目录导入至PATH环境变量中
      • 编辑文件/etc/profile.d/NAME.sh
        • export PATH=/PATH/TO/BIN:$PATH
    2. 导入帮助手册
      • 编辑/etc/man.config|man_db.conf文件
        • 添加一个MANPATH

    ubuntu软件管理

    Debian软件包通常为预编译的二进制格式的扩展名“.deb”,类似rpm文件,因此安装快速,无需编译软件。包文件包括特定功能或软件所必需的文件、元数据和指令
    dpkg:package manager for Debian,类似于rpm, dpkg是基于Debian的系统的包管理器。可以安装,删除和构建软件包,但无法自动下载和安装软件包或其依赖项
    APT:Advanced Packaging Tool,功能强大的软件管理工具,甚至可升级整个Ubuntu的系统,基于客户/服务器架构

    APT工作原理:在服务器上先复制所有DEB包,然后用APT的分析工具genbasedir根据每个DEB 包的包头(Header)信息对所有的DEB包进行分析,并将该分析结果记录在文件夹base内的一个DEB 索引清单文件中,一旦APT 服务器内的DEB有所变动,要使用genbasedir产生新的DEB索引清单。客户端在进行安装或升级时先要查询DEB索引清单,从而获知所有具有依赖关系的软件包,并一同下载到客户端以便安装。当客户端需要安装、升级或删除某个软件包时,客户端计算机取得DEB索引清单压缩文件后,会将其解压置放于 /var/cache/apt/,而客户端使用apt-get install或apt-get upgrade命令的时候,就会将这个文件夹内的数据和客户端计算机内的DEB数据库比对,知道哪些DEB已安装、未安装或是可以升级的

    dpkg常见用法:

    • man dpkg
    • dpkg -i package.deb 安装包
    • dpkg -r package 删除包,不建议,不自动卸载依赖于它的包
    • dpkg -P package 删除包(包括配置文件)
    • dpkg -l 列出当前已安装的包,类似rpm -qa
    • dpkg -l package 显示该包的简要说明,类似rpm –qi
    • dpkg -L package 列出该包中所包含的文件,类似rpm –ql
    • dpkg -S 搜索包含pattern的包,类似rpm –qf
    • dpkg -s package 列出该包的状态,包括详细信息,类似rpm –qi
    • dpkg --configure package 配置包,-a 使用,配置所有没有配置的软件包
    • dpkg -c package.deb 列出 deb 包的内容,类似rpm –qpl
    • dpkg --unpack package.deb 解开 deb 包的内容

    dpkg示例:

    • 列出系统上安装的所有软件包
      • dpkg -l
    • 列出软件包安装的文件
      • dpkg -L bash
    • 查看/bin/bash来自于哪个软件包
      • dpkg -S /bin/bash
    • 安装本地的 .deb 文件
      • dpkg -i /mnt/cdrom/pool/main/z/zip/zip_3.0-11build1_amd64.deb
    • 卸载软件包
      • dpkg -r zip
    • 注意:一般建议不要使用dpkg卸载软件包。因为删除包时,其它依赖它的包不会卸载,并且可能无法再正常运行

    Debian 使用APT工具来管理包系统,它与 apt 命令不同。在基于 Debian 的 Linux 发行版中,有各种工具可以与 APT 进行交互,以方便用户安装、删除和管理的软件包。apt-get 是其中一个常用的命令行工具,另外一款较为流行的命令行与 GUI 兼顾的工具是 aptitude ,之前最常用的 Linux 包管理命令都被分散在了 apt-get、apt-cache 和 apt-config 这三条命令中

    在 2014 年apt 命令发布第一个稳定版,Ubuntu 16.04 引入新特性之一便是 apt 命令,apt 命令解决了命令过于分散的问题,它包括 apt-get 命令出现以来使用最广泛的功能选项,以及 apt-cache 和 apt-config 命令中很少用到的功能。在使用 apt 命令时,用户不必再由 apt-get 转到 apt-cache 或 apt-config,提供管理软件包所需的必要选项

    apt 相当于 apt-get、apt-cache 和 apt-config 中最常用命令选项的集合
    apt 具有更精减但足够的命令选项,而且参数选项的组织方式更为有效。此外,启用的几个特性也非常有帮助。例如:可以在使用 apt 命令安装或删除程序时看到进度条,apt 还会在更新存储库数据库时提示用户可升级的软件包个数
    apt 与 apt-get 有一些类似的命令选项,但它并不能完全向下兼容 apt-get 命令,也即可用 apt 替换部分 apt-get 系列命令,但不是全部

    查看帮助:apt help
    apt与apt-get命令对比:

    • apt 命令 被取代的命令 命令的功能
    • apt install apt-get install 安装软件包
    • apt remove apt-get remove 移除软件包
    • apt purge apt-get purge 移除软件包及配置文件
    • apt update apt-get update 刷新存储库索引
    • apt upgrade apt-get upgrade 升级所有可升级的软件包
    • apt autoremove apt-get autoremove 自动删除不需要的包
    • apt full-upgrade apt-get dist-upgrade 在升级软件包时自动处理依赖关系
    • apt search apt-cache search 搜索应用程序
    • apt show apt-cache show 显示安装细节

    apt 特有的命令

    • apt list 列出包含条件的包(已安装,可升级等)
    • apt edit-sources 编辑源列表

    APT包索引来自/etc/apt/sources.list文件和/etc/apt/sources.list.d目录中定义的存储库的可用包的数据库。要使用存储库中所做的最新更改来更新本地程序包索引
    apt命令操作(如安装和删除软件包)记录在/var/log/dpkg.log日志文件中

    apt示例:

    • 安装包:
      • apt install tree zip
    • 删除包:
      • apt remove tree zip
      • 说明:apt remove中添加--purge选项会删除包配置文件,谨慎使用
    • 更新包索引:
      • apt update
    • 升级包:要升级系统,请首先更新软件包索引,再升级
      • apt upgrade
  • 相关阅读:
    HTML5结构
    HTML5新增的非主体元素header元素、footer元素、hgroup元素、adress元素
    CF GYM 100703G Game of numbers
    CF GYM 100703I Endeavor for perfection
    CF GYM 100703K Word order
    CF GYM 100703L Many questions
    CF GYM 100703M It's complicate
    HDU 5313 Bipartite Graph
    CF 560e Gerald and Giant Chess
    POJ 2479 Maximum sum
  • 原文地址:https://www.cnblogs.com/kjalbert/p/11676032.html
Copyright © 2020-2023  润新知