zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    codeforces 439C 模拟
    codeforces 435B
    【WebVR】AFrame中的A-sky无法利用src指定路径显示全景图
    【UE4】添加头文件之后VS中UCLASS()报错问题解决办法
    【UE4】蓝图之间的通讯
    git中报unable to auto-detect email address 错误的解决办法
    2017ACM省赛总结与生涯回顾
    hihocoder#1121 : 二分图一•二分图判定
    hihocoder#1039 : 字符消除
    2048low版
  • 原文地址:https://www.cnblogs.com/kjalbert/p/11676032.html
Copyright © 2011-2022 走看看