linux程序安装及包管理

作者:电脑系统
命令格式:
rpm {-q|--query} [select-options] [query-options]

[select-options] 选项:
PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本;
-a,--all:查询所有已安装过的包;
-f FILE:查询指定的文件由哪个程序包安装生成;
-p,--package PACKAGE_FILE:针对未安装的程序包进行查询操作;
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖

[query-options] 选项:
-l,--list:程序安装生成的所有文件列表;
-i,--info:程序包相关的信息(版本号,大小,所属的组等);
-c,--configfiles:查询指定的程序包提供的配置文件;
-d,--docfiles:查询指定的程序包提供的文档;
--provides:列出指定的程序包提供的所有的CAPABILITY;
-R,--requires:查询指定的程序包的依赖关系;
--scripts:查询程序包自带的脚步片段;

常见用法:
查询已安装的包—> -qi PACKAGE,-qf FILE,-qc PACKAGE,-ql PACKAGE,-qd PACKAGE,...
查询未安装的包—> -qpi PACKAGE,-qpl PACKAGE,-qpc PACKAGE,...

简述sed常用操作命令,并举例

sed是一种行编辑器,它可以使用正则表达式进行模式匹配。它在处理文本时,会逐行进行处理,先将当前处理的行存储在一个临时缓冲区“模式空间”(pattern space)中,接着用sed命令进行处理,处理完成后,默认将结果送至标准输出,然后在继续处理下一行,直至文本的末尾。默认操作下sed不会改变文件的内容,如果想保存sed处理后的结果,可以使用输出重定向。

图片 1

sed.png

  1. 命令格式
    sed [options] 'command' file(s)
    sed [options] -f scriptfile file(s)

  2. 参数

  • -e script1 -e script2 : -e选项可以指定多条命令执行
  • -f scriptfile : -f选项可以从文件中读取命令执行操作,同样可以指定多个文件处理
  • -n选项 : 仅显示sed命令处理后的结果
  • -r选项 : 支持扩展的正则表达式
  • -i选项 : 直接修改源文件
  1. sed命令
a 在当前行下面插入文本
i 在当前行上面插入文本
c 把选定的行改为新的文本
= 打印行号
d 删除,删除选择的行
D 删除模板块的第一行
! 表示其后面的命令对所有没有前面的条件匹配的行发生作用
s 替换指定字符
g 表示行内全面替换
h 拷贝模板块的内容到内存中的缓冲区
H 追加模板块的内容到内存中的缓冲区
g 获得内存缓冲区的内容,并替代当前模板块中的文本
G 获得内存缓冲区的内容,并追加到当前模板块文本的后面
x 互换当前模式空间和内存缓冲区的内容
n 读取下一个输入行进入模式空间
N 追加下一个输入行到模式空间现有数据的后面
p 打印模板块的行
P(大写) 打印模板块的第一行
w file 把处理过的结果写入文件
r file 读取文件内容并追加进入模式空间

关于n, N这两个命令的执行方式是容易搞错的地方,可以参考下面的图示

图片 2

sed_n1.png

图片 3

sed_n2.png

图片 4

sedN2.png

  1. sed处理文本示例
仅显示以"#"开头的行
~]$ sed -n '/^#/p' /etc/fstab
在所有"#"后添加"*"
~]$ sed 's/(#)/1*/g' /etc/fstab
删除第5行及其之后的所有行
~]$ sed '5,$d' /etc/fstab
删除每一行开头的"#"并删除文件中的空白行
~]$ sed -e 's/^#//g' -e '/^[[:space:]]*$/d' /etc/fstab
-r选项使用扩展正则表达式,"&"表示每一个匹配到的内容
~]$ echo "this is a test line" | sed -r 's/w /[&]/g'
[this] [is] [a] [test] [line]
将issue文件的内容添加到fstab文件每一个以"#"开头的行之后
~]$ sed '/^#/r /etc/issue' /etc/fstab
将this is a test添加到以"#"开头的行之后
~]$ sed '/^#/athis is a test' /etc/fstab
将this is a test添加到以"#"开头的行之前
~]$ sed '/^#/ithis is a test' /etc/fstab
打印以"#"开头的行的行号
~]$ sed '/^#/=' /etc/fstab
为文件每一行添加行号
~]$ sed = /etc/fstab | sed 'N;s/n/: /g'
1: 
2: #
3: # /etc/fstab

删除文件的偶数行
~]$ sed 'n;d' /etc/fstab
仅输出文件最后2行
~]$ sed 'N;$!D' /etc/fstab

关于难点N的处理逻辑的实例解析
~]$ cat ./123
1
2
3
4
5
~]$ sed 'N;P' ./123
1
1
2
3
3
4
5
~]$ sed -n 'N;P' ./123
1
3
  / 从上面的多次处理结果可以得出sed从首行开始每次有2行进入模式空间进行处理,
  P命令打印空间中的第1行,当读取到最后一行第5行时,由于没有下一行了所以无法
  执行N命令,于此同时分号后面的P命令也没有被执行

将文件的所有行逆序输出
~]$ sed '1!G;h;$!d' ./123
5
4
3
2
1

    2)./configure配置,设置安装的目标路径,选择安装的功能模块

2)本地源的yum仓库

yum命令

yum命令可以更智能的管理和安装rpm程序包,它可以自动处理程序包之前的依赖关系,使用起来更加方便。

  1. yum的配置文件
  • 全局配置文件/etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
  // yum 缓存的目录,yum 在此存储下载的rpm 包和数据库,定义配置
  文件中出现的$basearch表示系统的平台(如i386,x86_64这种),
  $releasever表示OS发行版的主版本号(例如CentOS7.4的主版本号
  就是7)
keepcache=0
  // 安装完成后是否保留软件包,0为不保留(默认为0),1为保留
debuglevel=2
  // Debug 信息输出等级,范围为0-10,默认为2
logfile=/var/log/yum.log
  // yum 生成的日志所在
pkgpolicy=newest
 // 包的策略。一共有两个选项,newest和last,这个作用是如果你
 设置了多个repository,而同一软件在不同的repository 中同时存
 在,yum 应该安装哪一个,如果是newest,则yum会安装最新版本。
 如果是last,则yum 会将服务器id 以默认方式排序,并选择最后的
 那个服务器上的软件安装。一般都是选newest
tolerant=0
 // 有1和0两个选项,表示yum 是否容忍命令行发生与软件包有关的
 错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你
 设为1,则yum 不会出现错误信息。默认是0
exactarch=1
  // 有1和0两个选项,设置为1,则yum 只会安装和系统平台匹配的软件
  包,例如,yum 不会将x64的软件包安装在适合i386的系统中。默认为1
retries=6
 // 网络连接发生错误后的重试次数,如果设为0,则会无限重试。默认
 值为6
obsoletes=1
  // 这是一个update 的参数,具体可参阅yum(8),简单的说就是相当
  于upgrade,允许更新旧的RPM包
gpgcheck=1
  // 是否检查gpgkey,1为检查,0为不检查
plugins=1
  // 是否启用插件,默认1为允许,0表示不允许
installonly_limit=5
  // 允许同时安装的程序包个数,这里设置为5个
exclude=selinux*
  // 排除某些软件在升级名单之外,不让它们升级,可以用通配符,列表
  中各个项目要用空格隔开
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
  • 各repository的配置文件
    文件为/etc/yum.d/*.repo
[base]
  // []中表示此repository的ID,必须唯一不能重复
name=
  // repository的名字
baseurl=
  // repository的路径,支持ftp:// http:// file://
gpgcheck=1
  // 是否进行gpgkey的检查,1为检查,0为不检查
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
  // gpgkey的路径
enabled=
  // 是否启用此repository,1为启用,0为不启用。可省略,省略时表示启用
cost=
  // 指明repository的开销,默认为1000,可省略
  1. yum命令的使用
  • yum install package1 [package2]... 从仓库源安装安装程序包
    根据配置文件的默认设置,如果某程序包存在多个版本,可能会默认安装最新的版本,如果需要安装指定版本需要指明package的版本
  • -y选项 安装卸载时可以使用该选项,例如yum install -y packagename 安装时就不需要在交互时手动回答yes了
  • --disablerepo= 安装时禁用某repository
  • --enablerepo= 安装时启用某repository
  • --nogpgcheck 安装时禁止gpgkey校验
  • yum reinstall package1 [package2]... 重新安装程序包(可以覆盖安装)
  • yum update package1 [package2]... 升级安装程序包
  • yum downgrade package1 [package2]... 降级安装程序包
  • yum check-update 检查有哪些升级程序包可用
  • yum {remove | erase} package1 [package2]... 卸载程序包,卸载时会将依赖于指定要卸载的程序包的相关程序包也卸载
  • yum localinstall /path/to/rpmfile ... 安装本地的程序包文件,安装时也会智能判断依赖关系
  • yum localupdate /path/to/rpmfile ... 升级安装本地的程序包文件
  • yum list [all|available|installed|updates|extras|obsoletes] [glob_exp1]... 查看yum仓库列表,按需求使用选项和glob表达式
  • yum grouplist [hidden] [groupwildcard] 显示包组列表,按需使用选项(如是否显示隐藏和使用组通配符等)
  • yum provides|whatprovides feature1 [feature2]... 查看指定的特性(可以是个文件)是由哪个程序包提供的
  • yum deplist package1 [package2]... 查看指定程序包依赖的capabilities
  • yum info package1 ... 显示包简要信息
  • yum groupinfo group1 ... 显示包组的简要信息
  • yum groupinstall group1 ... 安装包组
  • yum groupupdate group1 ... 升级安装包组
  • yum groupremove group1 ... 卸载包组
  • yum repolist [all|enabled|disabled] 显示yum仓库列表
  • yum clean [all|packages|metadata|expire-cache|rpmdb|plugins] 清楚yum缓存数据
  • yum makecache 手动创建yum缓存

  -qi  查看指定软件包的名称、版本、用途描述等详细信息

1)at——定时执行任务(没有重复性)

rpm命令

rpm命令用来手动安装rpm格式的程序包,使用格式为

  • rpm [option] path/to/rpmfile
  1. -i安装选项
  • 使用格式rpm -i[installopition] path/to/rpmfile
  • -h选项 : 使用#来显示安装进度
  • -v选项 : 显示安装过程
  • -vv选项 : 显示更详细的安装过程比-v更详细,按需求使用
  • --test选项 : 不进行实际安装操作,而是进行安装环境的测试,可以查看安装是否可以成功
  • --nodeps选项 : 忽略依赖关系,这样即使安装成功,也可能由于依赖关系造成运行问题
  • --replacepkgs选项 : 覆盖安装
  • --force选项 : 强制安装
  • 对于新安装程序包,常用的操作是rpm -ivh path/to/rpmfile
  1. 升级选项
  • -U : 升级安装或全新安装
  • -F : 升级安装
  • 同安装选项一样,常用组合有-Uvh -Fvh
  • 同安装选项一样,也可以使用--test --nodeps选项
  • --oldpackage选项 : 降级安装旧版本程序包 rpm -U --oldpackage path/to/rpmfile
  1. 卸载
  • -e : 卸载已安装的rpm程序,使用 rpm -e packagename
  • 使用-e进行卸载时也可以使用--test --nodeps选项
  • --allmatches选项 : 卸载所有匹配的安装,例如一个rpm程序的多个版本
  • 对于卸载,需要注意的是如果程序包的配置文件在安装后被修改过,则卸载时并不会删除这些文件,而是将它们重命名(加后缀 .rpmsave)
  1. 查询
  • 使用格式rpm -q[queryoption] [packagename] [file]
  • 直接使用rpm -q packagename... : 查询某程序包是否安装,包名可以是多个
  • -i选项 : info显示程序包简要信息 rpm -qi packagename
  • -a选项 : 显示已安装的程序包列表 rpm -qa
  • -f选项 : 后跟一个文件,查询此文件是由哪个程序包生成的 rpm -qf filename
  • -p选项 : 查询某个未安装的程序包,可与i选项连用 rpm -qpi packagename 查询rpm仓库中指定的未安装程序包的简要信息
  • -l选项 : 显示某个程序包生成的文件列表 rpm -ql packagename
  • -c选项 : 显示某程序包生成的配置文件 rpm -qc packagename
  • -d选项 : 显示某程序包生成的帮助文件 rpm -qd packagename
  • --provides选项 : 显示程序包提供的capabilities
  • --requires选项 : 显示程序包所依赖的capabilities
  • --scripts选项 : 查询程序包安装或卸载时执行的脚本,这些脚本可以分为以下4类:
    • preinstall : 程序包安装之前执行的脚本
    • postinstall : 程序包安装完成之后执行的脚本
    • preuninstall : 程序包卸载之前执行的脚本
    • postuninstall : 程序包卸载之后执行的脚本
  1. 校验
  • rpm -V packagename : 验证程序包安装之后生成的文件是否发生了改变
  • 程序包合法性验证
    • 先导入验证密匙文件 rpm --import path/to/key-file
    • 再使用命令验证程序包 rpm -K path/to/packagefile
  1. 创建rpm包管理数据库,创建的数据库文件保存路径为/var/lib/rpm下
  • --initdb : 初始化数据库,当rpm包管理数据库不存在时新建它
  • --rebuilddb : 重建数据库,无论之前数据库是否存在
  • --dbpath DIRECTORY : 可以指明建立的数据库文件保存路径,即改变默认的/var/lib/rpm,例如 rpm --rebuilddb --dbpath /var/rpmdb

程序包的封装类型:

3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00

简述at和crontab命令

  createrepo [options] <directory> 

cron任务,由 cronie 程序包提供,运行的前提需要确保 crond 进程处于运行状态。可通过如下方式确认状态:
    CentOS7:system status crond.service
    CentOS5,6,7:service crond status

系统cron任务:
  主要用于实现系统自身的维护,手动编辑文件即可。
    vim /etc/crontab

用户cron任务:
命令格式:
    crontab [-u user] [-l | -r | -e] [-i]
  (成功编辑任务后,会产生 /var/spool/cron/USERNAME 的文件,记录任务详情,USERNAME 表示当前用户)

选项:
    -e:编辑任务( 进入vi编辑器 );
    -l:列出所有任务;
    -r:移除所有任务,即删除/var/spool/cron/USERNAME文件;
    -i:在使用-r选项移除所有任务时提示用户确认;
    -u user:root用户可为指定用户管理cron任务

注意:
    1) 执行结果将以邮件通知给当前用户,如果不想接收邮件,可在定义任务时将结果输出到 /dev/null 中,如 COMMAND > /dev/null 或者 COMMAND &> /dev/null;
    2) 如因关机导致任务不能执行,下次开机也不会执行。如果期望某时间因故未能按时执行,下次开机后无论是否到了相应时间点都要执行一次,可使用 anacron 实现。

详解:
  # .---------------- minute (0 - 59)
  # |  .------------- hour (0 - 23)
  # |  |  .---------- day of month (1 - 31)
  # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
  # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
  # |  |  |  |  |
  # *  *  *  *  *   command to be executed

示例:
    [root@bogon data]# crontab -e (编辑定时任务)
    [root@bogon data]# crontab -l
    * * * * 3,7 /bin/tar -zcf /data/etc.bak.tar.gz /etc (每周三跟周日备份 /etc 目录)

crontab命令

crontab可以设置周期性任务计划。它是由crond服务来实现的。

  1. 系统cron任务
  • 它是通过编辑配置文件/etc/crontab来实现的
文件中添加任务的格式
# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
  • 时间表示的4个方式
    • 时间位上的*表示每个有效的取值
25 * * * *      # 这就表示每个整点过25分执行一次任务
    • 时间位上出现*/# 表示相应的位上每#个间隔一次
0 8 * */3 *     # 表示每间隔3天的8:00执行一次
    • 时间位上#-# 表示连续时间
30 1-3 * * *     # 表示每天1:30, 2:30, 3:30分别执行
    • 时间位上#,# 表示离散的时间点
15 9 * * 3,5     # 表示周3和周5的9:15执行
  • command执行的结果,默认会以邮件的形式发送给用户,如果不想接收邮件,可以使用输出重定向command &> /dev/null
  1. 用户cron任务
  • 用户的cron任务配置文件: /var/spool/cron/路径下与用户同名的文件
  • 使用crontab命令来编辑用户cron任务
    • crontab -e : 直接进入编辑文件
    • crontab -l : 列出已经定义的所有任务
    • crontab -r : 清空列表中的所有任务
制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
~]$ crontab -e
10 3,5 * * 3 /bin/date  "%F %H:%M:%S"
~]$ crontab -l
10 3,5 * * 3 /bin/date  "%F %H:%M:%S"

    
    
    
    

命令格式:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
    常用—>rpm -ivh PACKAGE_FILE... 进行软件的安装

详细选项:
-v:显示详细信息
-vv:显示更详细的信息
-h:安装时输出hash记号(#)显示进度
--test:测试安装(实际不安装),检查并报告依赖关系及冲突消息等
--nodeps:忽略依赖关系(不建议使用)
--replacepkgs:重新安装
--nosignature:不检查包签名信息,不检查来源合法性
--nodigest:不检查包完整性信息

at命令

at命令用于设置一次性的任务计划,其只执行一次就结束。

at命令是由atd服务提供的:

  • CentOS6可以使用 service atd start 来启动该服务
  • CentOS7可以使用 systemctl start atd.service 来启动该服务
  1. 命令使用格式 : at [option] TIME
例如添加一个at任务
~]$ at 15:00    # 15点执行该任务
at> ls /etc     # 输入需要执行的任务内容
at> <EOT>       # 使用'键盘ctrl D'退出任务编辑
job 4 at Sun Dec 31 15:00:00 2017
  • -l选项 : 也可以使用atq,效果等同,都是显示所有当前用户的at任务列表
  • -d选项 : 也可以使用atrm,效果等同,都是删除一个at任务列表中的at任务
  • -c选项 : 打印任务内容到标准输出
  1. TIME的格式
  • HH:MM [date] : 其中的date可以是具体年月日(例如2017-12-31),也可以是英文表示的日子(例如December 31),甚至时间上也可以简化表示(明天下午2点:2pm tomorrow)
  • HH:MM #(minutes|hours|days|weeks) : 某时刻加一个相对时间表示法(例如2pm 3days三天后的下午2点)
  1. 实例
~]$ atq    # 显示当前任务列表
4   Sun Dec 31 15:00:00 2017 a sky
5   Sun Dec 31 14:00:00 2017 a sky
6   Mon Jan  1 07:00:00 2018 a sky
~]$ at -d 6   # 删除6号任务
~]$ atq
4   Sun Dec 31 15:00:00 2017 a sky
5   Sun Dec 31 14:00:00 2017 a sky
~]$ at -c 4
#!/bin/sh
# atrun uid=1000 gid=1000
# mail sky 0
umask 2
# 此处省略冗长的环境变量内容
ls /etc  # 任务内容
~]$ at -f scripts/num_sum.sh 2pm   3 days   # 3天后的下午2点执行脚本文件中的内容
job 7 at Wed Jan  3 14:00:00 2018

  install  安装程序包

命令格式:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
  常用—>rpm -Uvh PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
  常用—>rpm -Fvh PACKAGE_FILE ...

详细选项:
-U:有旧版本程序则升级,不存在旧版本则安装;
-F:有旧版本程序则升级,不存在旧版本的话不安装
--oldpackage:降级
--force:强行升级

注意:
1)不要对内核进行升级操作:Linux支持多内核版本并存,因此直接安装新版本内核即可;
2)如果某原程序的配置文件安装后曾被修改过,升级时,新版本程序提供的同一个配置文件
不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供。

CentOS下自建yum仓库,分别为网络源和本地源

通过vim命令创建repo文件
网络yum源

~]# vim /etc/yum.repos.d/networks.repo
[networks]
name=networks
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=0

本地yum源

先将CentOS7光盘挂载至/media/cdrom路径下
~]# ls /media/cdrom/
CentOS_BuildTag  EFI  EULA  GPL  images  isolinux  LiveOS  Packages  repodata  RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Testing-7  TRANS.TBL
创建本地repo文件
~]# vim /etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///media/cdrom
gpgcheck=0

查看所有yum源验证效果,可以看到上面添加的2个yum源已经成功

~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                                                                        repo name                                                                             status
epel/7/x86_64                                                                                  Epel                                                                                  12,184
local                                                                                          local                                                                                  9,591
networks/7/x86_64                                                                              networks                                                                               9,591

  rpm的前端程序,用来解决软件包相关的依赖性,可在多个库中定位软件包

vim /etc/yum.repos.d/CentOS7-Aliyum.repo
    [C7-aliyum]
    name=CentOS7-aliyum
    baseurl=https://mirrors.aliyun.com/centos/7.4.1708/updates/x86_64/Packages/
    enalbed=1

简述rpm与yum命令的常见选项,并举例

    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}

命令格式:
rpm {-V|--verify} [select-options] [verify-options]

详细选项:
-p:校验包文件;
-f:校验所属的程序包;
-a:校验所有的程序包;
-g:校验所有属于组的程序包

  clean   清除缓存

1)网络源的yum仓库

 

4)卸载

  -i  安装一个新的rpm包

1、简述rpm与yum命令的常见选项,并举例。

  -h  以#显示程序包管理执行进度

命令格式:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...

详细选项:
--allmatches:卸载所有匹配指定名称的程序包;
--nodeps:忽略依赖关系;
--test:测试卸载

  deplist  列出包依赖

4、简述sed常用操作命令,并举例

repo配置文件中可用变量

5)校验已安装的软件包

已安装的包校验:

1)安装选项

  -e  静默执行

2)升级

rpm -ql software_name    查看软件安装目录

2)crontab——任务计划(定时,重复执行)

获取程序包的途径:

  sed,文本编辑器,一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space);接着sed 会处理缓冲区中的内容,
处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。
  需要注意两点:1) sed不会改变原文件内容;2) 不被模式匹配的内容默认都会输出到屏幕。

  命令格式:
  sed [OPTION] ...  'script'  [input-file] ...
  OPTION:
        -n:不输出模式空间中的内容至屏幕;
        -e script, --expression=script:多点编辑;
        -f /PATH/TO/SED_SCRIPT_FILE:读取script文件(每行一个编辑命令);
        -r, --regexp-extended:支持使用扩展正则表达式;
        -i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件
  script(地址定界编辑命令):
    1) 地址定界:
      (1) 空地址:对全文进行处理
      (2) 单地址(#表示具体数字,pattern表示正则表达式):
          #:指定行;
          /pattern/:被此模式所匹配到的每一行
      (3) 地址范围:
          #,#:第 #行到第#行
          #, #:第 #行开始,往后再加 #行
          #,/pattern/:第 #行到第一次被模式匹配之间的行
          /pattern1/,/patern2/:第一次被pattern1匹配到第一次被pattern2匹配之间的行
          $:最后一行
      (4) 步长:~
          示例,1~2:奇数行;2~2:偶数行。
    2) 编辑命令:
        d:删除;
          示例,sed '1,5d' /etc/fstab (删除/etc/fstab中第1行到第5行)
        p:显示模式空间中的内容;
        n:读取下一行
          示例,sed -n 'p;n' /etc/fstab (读取奇数行);sed -n 'n;p' /etc/fstab (读取偶数行)
        a text:在行下方追加文本“text”,支持使用n实现多行追加; 
        i text:在行上方插入文本“text”,支持使用n实现多行插入; 
          示例,sed '3i new linenanother new line' /etc/fstab (在第3行上方写入一行new line和一行another new line)
        c text:把匹配到的行替换为此处指定的文本“text”(替换一整行);
          示例,sed '/^UUID/c # add device' /etc/fstab (UUID开头的行替换成 # add device)
        w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中;
          示例,sed '/^[^#]/w /tmp/fstab.bak' /etc/fstab (非#开头的内容保存至文件/tmp/fstab.bak)
        r /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面,常用于实现文件合并;
          示例,sed '3r /etc/issue' /etc/fstab (在/etc/fstab文本第3行后插入/etc/issue内容)
        =:为模式匹配到的行打印行号;
          示例,sed '/^UUID/=' /etc/fstab (在UUID开头的行上方添加行号)
        !:条件取反;
          示例,sed '/^#/!d' /etc/fstab (保留#开头的行)
        s///:查找替换 (其分隔符/可自行指定,形如s@@@, s###)
          替换标记:
              g:全局替换;
              w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
              p:显示替换成功的行
              示例,sed -n 's/4/@/gp' /etc/fstab (把文件中所有的4都替换成@,此处如果不加g则替换每行中出现的第一个4)
                 sed -n '/^UUID/s#4#@#p' /etc/fstab (把文件中以UUID开头的行中第一个4替换成@)
                 sed 's@^[[:space:]] @@' /etc/grub2.cfg (删除/etc/grub2.cfg中已空白字符开头的所有空白字符)
                 echo "/var/log/message" | sed -r 's@[^/] /?$@@' (取出 /var/log/)

  -qa  显示当前系统中所以以rpm方式安装的软件列表

3)查询

  仓库指向的定义:

命令格式:
    at  [OPTION]... TIME (作业执行结果是以邮件发送给提交作业的用户)
    at> 执行的命令
    退出at命令 ctrl d

详解:
    TIME:
      HH:MM [YYYY-mm-dd]
      noon,midnight,teatime,tomorrow
      now  #UNIT(minutes, hours, days, OR weeks)
    OPTION:
      -l:查看作业队列,相当于atq
      -f /PATH/FROM/SOMEFILE:从指定文件中读取作业任务,而不用再交互式输入;
      -d:删除指定的作业,相当于atrm;
      -c:查看指定作业的具体内容;
      -q QUEUE:指明队列

注意:
  at命令使用的前提,需要开启atd进程,需要确保atd处于运行状态。
  可通过 ps -ef | grep atd 查看是否已开启 atd。

示例:
  [root@bogon data]# at 21:00
  at> cp /var/log/secure /data/secure.bak
  at> <EOT> (按 ctrl d 退出 at)
  job 6 at Tue Apr 10 21:00:00 2018

  [root@bogon data]# at -l (查看任务)
  6       Tue Apr 10 21:00:00 2018 a root

  [root@bogon data]# at 21:00 2018-05-04 -q b (-q b,指明队列,默认是a队列)
  at> tar -zcf /data/etc.backup.tat.gz /etc
  at> <EOT>
  job 8 at Fri May  4 21:00:00 2018
  [root@bogon data]# at -l -q b (查询时也可指明队列)
  8       Fri May  4 21:00:00 2018 b root

  makecache  构建缓存

2、自建yum仓库,分别为网络源和本地源

  -v  显示安装过程中的详细信息

挂载本地 ISO镜像
    mount -o loop /data/CentOS7.iso /media
编辑 /etc/fstab 文件,使得 ISO镜像文件开机自动挂载
  vim /etc/fstab
    /data/CentOS7.iso  /media  iso9660  defaults  0 0
编辑 本地yum仓库
    vim /etc/yum.repos.d/CentOS-Media.repo
        [C7-media]
        name=CentOS7-Media
        baseurl=file:///media
        gpgcheck=1
        enabled=1
        gpgkey=file:///etc/pki/rmp-gpg/RPM-GPG-KEY-CentOS-7

    4)make install安装,将编译好的二进制文件复制到系统中,并设置应用环境

  • yum——用于添加、删除、更新rpm包,自动解决包的依赖问题及系统更新升级

    命令格式: yum [options] [command] [package ...]

    [options] 选项: -h:显示帮助信息; -y:对所有的提问都回答“yes”; -c:指定配置文件; -q:安静模式; -v:详细参数; -d:设置调试等级(0-10); -e:设置错误等级(0-10); -R:设置yum处理一个命令的最大等待时间; --nogpgcheck:禁止进行gpg check; --disablerepo=repoidglob:临时禁用此处指定的repo; --enablerepo=repoidglob:临时启用此处指定的repo; --noplugins:禁用所有插件

    [command] 选项: install:安装程序包; reinstall:重新安装程序包; update:升级程序包; downgrade:给程序包降版本; check-update:检查可用升级; remove|erase:卸载程序包; list:显示程序包; info:查看程序包信息; clean:清理本地缓存; search STRING[STRING...]:以指定关键字“STRING...”搜索程序包名及summary信息; deplist:查看指定包所依赖的capabilities; command命令中的包管理—>groupinstall,groupupdate,grouplist,groupremove,groupinfo

    1)下载源代码安装包,解压到指定目录

  • rpm——软件包管理系统,它使得在Linux下安装、升级、删除软件包的工作变得容易,并且具有查询、验证软件包的功能。

  history    查看yum事物历史

  /etc/yum.repos.d/*.repo  为仓库的指向提供配置

校验软件包中的文件:

  -y  自动应答yes

wget

  -qf  查看指定文件或目录是由哪个软件所安装的

  remove  卸载程序包

rpm -ivh  --nodeps  software_name 强制安装,安装了之后不一定能用

  /var/log/yum.log    yum日志文件

 

 

rpm命令基本选项:

rpm -ivh epel-release-latest-7.noarch.rpm

rpm命令格式:

  rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7  导入所需的公钥

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

  源代码软件安装:程序员开发完成的原始代码,一般制作成“.tar.gz”,“.tar.bz2”等格式的压缩包文件,需要使用相应的工具编译安装。

  

rpm -Uvh software_name    软件升级

  --rebuilddb  重建rpm数据库

    编译过程:源代码->预处理->gcc编译->汇编->链接->执行

程序包编译安装:

  downgrade  降级

yum源:

  update  更新程序包

  info  查看包信息

  4)自己制作:注意检查包的完整性

  附带安装程序的软件包:软件包中会提供用于安装的可执行程序或脚本,如install.sh、setup等。

  search [关键字]  搜索包

rpm -e software_name      软件卸载

  check-update  检查可更新的包

rpm -e --nodeps software_name  强制卸载

  groupinstall  包组管理

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

  --initdb  初始化rpm数据库

第三方源:

查询选项: 

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

  RPM软件包:扩展名为“.rpm”,使用rpm命令安装。

yum客户端配置文件:

  基本过程:

  将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作。

  2)项目官方站点

创建yum仓库:

  /etc/yum.conf  为所有仓库提供公共配置

yum命令:

rpm包管理器:

  -U  升级系统中某个软件包

  -F  检查并更新系统中的某个软件包

  rpm -K|checksig rpmfile   检查包的完整性和签名

    [repositoryID]

  rpm -i ( or --install) options file1.rpm ... fileN.rpm

  DEB软件包:扩展名为“.deb”,使用DPKG包管理器。

  list  列出程序包

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

    3)make编译,通过makefile文件将源代码变成可执行的二进制文件

  reinstall  重新安装

rpm -qi sotware_name    查看软件安装的版本信息

  -ql  显示指定软件包在系统中安装的所有目录、文件列表

  -e  卸载指定名称的软件包

  3)第三方组织:fedora-EPEL

--test    只进行升级测试 
--excludedocs    不安装软件包中的文档文件 
--includedocs    安装文档 
--replacepkgs    强制重新安装已经安装的软件包 
--replacefiles    替换属于其它软件包的文件 
--force    忽略软件包及文件的冲突 
--noscripts    不运行预安装和后安装脚本 
--prefix    将软件包安装到由 指定的路径下 
--ignorearch    不校验软件包的结构 
--ignoreos    不检查软件包运行的操作系统 
--nodeps    不检查依赖性关系 

  CentOS镜像:

本文由分分快三计划发布,转载请注明来源

关键词: 分分快三计划 linux系统管理 日记本