第四周sed rpm yum dnf

第四周

处理文本的工具sed

  • Stream EDitor, 行编辑器
  • sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时 缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的 内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。 如果没有使诸如‘D’的特殊命令,那会在两个循环之间清空模式空间,但不会清 空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重 定向存储输出。
  • 功能:主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等
  • 参考: http://www.gnu.org/software/sed/manual/sed.html

    sed [option]... ‘script‘ inputfile...

    常用选项:

  • -n 不输出模式空间内容到屏幕,即不自动打印
  • -e 多点编辑
  • -f /PATH/SCRIPT_FILE 从指定文件中读取编辑脚本
  • -r 支持使用扩展正则表达式
  • -i.bak 备份文件并原处编辑

script: ‘地址命令‘
地址定界:

  • (1) 不给地址:对全文进行处理
  • (2) 单地址:
    ?? #:指定的行,$:最后一行
    ?? /pattern/:被此处模式所能够匹配到的每一行
  • (3) 地址范围:
    ????#,#
    ????#,+#
    ????/pat1/,/pat2/
    ????#,/pat1/
  • (4) ~:步进
    ?? 1~2 奇数行
    ?? 2~2 偶数行

编辑命令:

  • d 删除模式空间匹配的行,并立即启用下一轮循环
  • p 打印当前模式空间内容,追加到默认输出之后
  • a []text 在指定行后面追加文本,支持使用\n实现多行追加
  • i []text 在行前面插入文本
  • c []text 替换行为单行或多行文本
  • w /path/file 保存模式匹配的行至指定文件
  • r /path/file 读取指定文件的文本至模式空间中匹配到的行后
  • = 为模式空间中的行打印行号
  • ! 模式空间中匹配行取反处理
  • s/// 查找替换,支持使用其它分隔符,[email protected]@@,s###
  • 替换标记:
    ????g 行内全局替换
    ????p 显示替换成功的行
    ????w /PATH/FILE 将替换成功的行保存至文件中

    高级编辑命令:

  • P: 打印模式空间开端至\n内容,并追加到默认输出之前
  • h: 把模式空间中的内容覆盖至保持空间中
  • H:把模式空间中的内容追加至保持空间中
  • g: 从保持空间取出数据覆盖至模式空间
  • G:从保持空间取出内容追加至模式空间
  • x: 把模式空间中的内容与保持空间中的内容进行互换
  • n: 读取匹配到的行的下一行覆盖至模式空间
  • N:读取匹配到的行的下一行追加至模式空间
  • d: 删除模式空间中的行
  • D:如果模式空间包含换行符,则删除直到第一个换行符的模式空间中的文本, 并不会读取新的输入行,而使用合成的模式空间重新启动循环。如果模式空间 不包含换行符,则会像发出d命令那样启动正常的新循环

软件包管理

包和包管理器

  • 最初只提供了.tar.gz的打包的源码文件,用户必须自已编译每个想在 GNU/Linux上运行的软件。用户急需系统能提供一种更加便利的方法来 管理这些软件,当Debian诞生时,这样一个管理工具也就应运而生,它 被命名为dpkg。从而著名的“package”概念第一次出现在GNU/Linux 系统中,稍后Red Hat才开发自己的“rpm”包管理系统
  • 包的组成: 二进制文件、库文件、配置文件、帮助文件

    程序包管理器:

    • debian: deb文件, dpkg包管理器
    • redhat: rpm文件, rpm包管理器
    • rpm:Redhat Package Manager
      ???RPM Package Manager
      包命名
  • 源代码:name-VERSION.tar.gz|bz2|xz
    VERSION: major.minor.release
  • rpm包命名方式:
    name-VERSION-release.arch.rpm
    例:bash-4.2.46-19.el7.x86_64.rpm
    VERSION: major.minor.release release:release.OS
    常见的arch: x86: i386, i486, i586, i686 x86_64: x64, x86_64, amd64 powerpc: ppc
    跟平台无关:noarch

    包命名和工具

  • 包:分类和拆包
    Application-VERSION-ARCH.rpm: 主包
    Application-devel-VERSION-ARCH.rpm 开发子包
    Application-utils-VERSION-ARHC.rpm 其它子包
    Application-libs-VERSION-ARHC.rpm 其它子包
  • 包之间:可能存在依赖关系,甚至循环依赖
  • 解决依赖包管理工具
    yum:rpm包管理器的前端工具
    apt:deb包管理器前端工具
    zypper:suse上的rpm前端管理工具
    dnf:Fedora 18+ rpm包管理器前端管理工具

    库文件

  • 查看二进制程序所依赖的库文件
    ldd /PATH/TO/BINARY_FILE
  • 管理及查看本机装载的库文件
    ldconfig 加载配置文件中指定的库文件
    /sbin/ldconfig –p 显示本机已经缓存的所有可用库文件名及文件路径 映射关系
  • 配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
  • 缓存文件:/etc/ld.so.cache

    程序包的来源

  • 管理程序包的方式:
    ??????使用包管理器:rpm
    ??????使用前端工具:yum, dnf

    获取程序包的途径

    (1) 系统发版的光盘或官方的服务器

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

(2) 项目官方站点
(3) 第三方组织:

(4) 自己制作
注意:第三方包建议要检查其合法性 来源合法性,程序包的完整性

rpm包管理

CentOS系统上使用rpm命令管理程序包:
安装、卸载、升级、查询、校验、数据库维护

  • 安装: rpm {-i|--install} [install-options] PACKAGE_FILE…
    -v: verbose
    -vv:
    -h: 以#显示程序包管理执行进度
  • rpm -ivh PACKAGE_FILE ...

    rpm包安装

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

      rpm包升级

    • 升级:
    • 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: 强制安装
注意:

(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此直接安装新版本内核
(2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文 件不会直接覆盖老版本的配置文件,而把新版本文件重命名(FILENAME.rpmnew)后 保留

包查询

  • 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” 释放包内文件
  • [query-options]
    --changelog:查询rpm包的changelog
    -c:查询程序的配置文件
    -d:查询程序的文档
    -i:information
    -l:查看指定的程序包安装后生成的所有文件
    --scripts:程序包自带的脚本
    --provides:列出指定程序包所提供的CAPABILITY
    -R:查询指定的程序包所依赖的CAPABILITY
  • 常用查询用法
    -qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
    -qpi PACKAGE_FILE, -qpl PACKAGE_FILE, ...
    -qa
  • 包卸载
    rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
    当包卸载时,对应的配置文件不会删除, 以FILENAME.rpmsave形式保留

    包校验

  • rpm {-V|--verify} [select-options] [verify-options]
    S file Size differs
    M Mode differs (includes permissions and file type)
    5 digest (formerly MD5 sum) differs
    D Device major/minor number mismatch
    L readLink(2) path mismatch
    U User ownership differs
    G Group ownership differs
    T mTime differs
    P capabilities differ
  • 包来源的合法性验证及完整性验证
    完整性验证:SHA256
    来源合法性验证:RSA
  • 公钥加密
    对称加密:加密、解密使用同一密钥
    非对称加密:密钥是成对儿的
    public key: 公钥,公开所有人
    secret key: 私钥, 不能公开
  • 导入所需要公钥
    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*”

    rpm数据库

  • 数据库重建: /var/lib/rpm
  • rpm {--initdb|--rebuilddb}
    initdb: 初始化
    如果事先不存在数据库,则新建之
    否则,不执行任何操作
    rebuilddb:重建已安装的包头的数据库索引目录

    yum源

  • 阿里云repo文件 http://mirrors.aliyun.com/repo/
  • CentOS系统的yum源 ?阿里云:https://mirrors.aliyun.com/centos/$releasever/os/x86_64/
  • 清华大学:https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/x86_64/
  • EPEL的yum源
  • 阿里云:https://mirrors.aliyun.com/epel/$releasever/x86_64
  • 阿里巴巴开源软件 https://opsx.alibaba.com/

    yum-config-manager

  • 生成172.16.0.1_cobbler_ks_mirror_CentOS-X-x8664.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] [...]
  • 查看程序包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] [...]
    (用install替代)
    yum localupdate rpmfile1 [rpmfile2] [...]
    (用update替代)
    • 包组管理的相关命令
      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仓库:

  • (1) 挂载光盘至某目录,例如/mnt/cdrom

*<<开起autofs服务 systemctl start autofs
开机启动autofs服务 systemctl enable autofs
开启autofs服务后根目录下出现misc目录, cd /misc/cd cd目录会自动挂载光盘。从而可以将/misc/cd目录作为yum仓库>>
关闭linux防火墙 systemctl
mount /dev/cdrom /mnt/cdrom

  • (2) 创建配置文件
    [CentOS7]
    name=
    baseurl=
    gpgcheck=
    enabled=
  • 创建yum仓库:
    createrepo [options] <directory>

DNF

原文地址:https://blog.51cto.com/14450832/2427517

时间: 2024-10-12 00:07:20

第四周sed rpm yum dnf的相关文章

linux 从入门到跑路 - rpm ,yum , dnf (软件包管理三兄弟)

linux 从入门到跑路 - rpm ,yum , dnf (软件包管理三兄弟) 认识软件包管理 软件包管理是指系统中一种安装和维护软件的方法.今天,通过从 Linux 发行版中安装的软件包, 已能满足许多人所有需要的软件.这不同于早期的 Linux,人们需要下载和编辑源码来安装软件. 编辑源码没有任何问题,事实上,拥有对源码的访问权限是 Linux 的伟大奇迹.本篇,我们将查看一些用于包管理的命令行工具(rpm ,yum , dnf ).虽然所有主流 Linux 发行版都 提供了强大且精致的图

Linux 程序包管理 rpm yum dnf

Linux程序包管理: 包管理器功能:打包,包管理(安装,升级,卸载,查询,校验) 目前Linux中最常见有两种常用工具 deb:debian Linux使用 包括ubuntu rpm:Redhat Package Manager ,Centos等在使用 程序包的组成: 二进制程序:/bin,  /sbin,  /usr/bin, /usr/sbin 库文件: /lib64, /usr/64 配置文件:/etc 帮助文件:manual, info 包管理器: 打包:将源文件,一个一个单一的归档文

2015年9月10日课程作业【程序包管理:rpm, yum】_JY1506402-19+liuhui880818

<Linux系统管理> (1)磁盘和文件系统管理: (2)RAID, LVM; btrfs; (3)程序包管理:rpm, yum(dnf) (4)Linux的网络管理; (5)进程和作业管理:htop, glances, tsar: (6)sed和awk: (7)Linux系统的开机启动流程: (8)内核基础知识,内核定制编译: (9)系统安装:kickstart, pxe 一.作业(练习)内容: 1.总结rpm和yum实现程序包的管理功能. 要求:作业要图文并茂 二.完成时间: 2015年9

+++++++rpm/yum/编译

程序包管理总结 编译总结 程序包管理总结 rpm (Redhat Package Manager)早期由redhat用perl语言研发,后来用C重写 (RPM is Package Manager).前端管理工具是yum,centos 7后支持dnf(EPEL源) Fedora 22之后,支持dnf工具的使用 Debian系用.deb包,dpt-get前端管理工具 Slackware的二次发行版: 前端管理工具: Zypper,YasT 程序包命名 二进制格式: testapp-1.2.3-1.

第8天压缩 xarges sed命令 yum配置 rpm包文件修复

seq 10 seq 10 |xargs echo 1 2 3 4 5 默认跟 echo \n换成空格 [[email protected] ~]#seq 1 10 |xargs echo [[email protected] ~]#seq 1 10 |xargs 1 2 3 4 5 6 7 8 9 10 [[email protected] ~]#seq 1 10 |xargs echo 1 2 3 4 5 6 7 8 9 10 [[email protected] ~]# xargs 默认是

第四周学习心得 rpm yum 和 LVM管理 的相关概念及理解

包的组成:二进制文件.库文件.配置文件.帮助文件 程序包管理器:debian: deb文件, dpkg包管理器redhat: rpm文件, rpm包管理器 rpm包命名方式:name-VERSION-release.arch.rpm例:bash-4.2.46-19.el7.x86_64.rpmVERSION: major.minor.releaserelease:release.OS常见的arch:x86: i386, i486, i586, i686x86_64: x64, x86_64, a

linux程序包管理 rpm yum 编译

rpm命令:rpm  [OPTIONS]  [PACKAGE_FILE] 安装:-i, --install 升级:-U, --update, -F, --freshen 卸载:-e, --erase 查询:-q, --query 校验:-V, --verify 数据库维护:--builddb, --initdb 安装:rpm {-i|--install} [install-options] PACKAGE_FILE ... rpm  -ivh  PACKAGE_FILE ... GENERAL

linux程序包管理rpm,yum和编译安装以及冒泡排序练习

linux程序包管理: API:Application Programming Interface POSIX:Portable OS 程序源代码--> 预处理--> 编译--> 汇编--> 链接 静态编译: 共享编译:.so ABI:Application Binary Interface Windows与Linux不兼容 ELF(Executable and Linkable Format) PE(Portable Executable) 库级别的虚拟化: Linux: WIN

程序包管理:RPM YUM的总结

程序包管理:RPM YUM的总结 一.RPM的简介 RPM 是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux.S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,是公认的行业标准. 二.RPM程序包管理的用途 1.可以安装.删除.升级和管理软件:当然也支持在线安装和升级软件: 2.通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪