作业-第07周--课堂-Day29-diff、apm、yum。c
Day29 课堂作业
1. diff/vimdiff:比较两个文件区别
diff/vimdiff命令的功能说明
diff
命令用于比较两个文件内容的不同点,vimdiff
是图形化显示,这两个命令类似于vi
和vim
一样。
diff/vimdiff命令的语法格式
diff/vimdiff
[OPTION]... FILES...
diff/vimdiff
[参数选项] [两个文件]
diff/vimdiff命令的选项说明
diff/vimdiff
选项不常用,就不细说了:
diff/vimdiff命令的实践操作
范例1: 备份
/etc/passwd
,然后修改源文件,然后通过diff/vimdiff
命令进行比较
--------------------------------------------------------------
==>备份/etc/passwd<==
--------------------------------------------------------------
[root@oldboyedu ~]# cp /etc/passwd{,.ori}
--------------------------------------------------------------
==>源文件/etc/passwd添加内容<==
---------------------------------------------------------------
[root@oldboyedu ~]# echo 'test' >> /etc/passwd
--------------------------------------------------------------
==>查看/etc/passwd添加的内容<==
--------------------------------------------------------------
[root@oldboyedu ~]# tail -1 /etc/passwd
test
--------------------------------------------------------------
==>比较不同(也可以将两个文件分开写,要有空格)<==
--------------------------------------------------------------
[root@oldboyedu ~]# diff /etc/passwd{,.ori}
25d24
< test
--------------------------------------------------------------
==>25行有新加的test<==
--------------------------------------------------------------
[root@oldboyedu ~]# grep -n -B3 'test' /etc/passwd
22-tcpdump:x:72:72::/:/sbin/nologin
23-nginx:x:1001:1001::/home/nginx:/sbin/nologin
24-ntp:x:38:38::/etc/ntp:/sbin/nologin
25:test
--------------------------------------------------------------
==>24行后,无内容,(过滤的内容实际而定)<==
--------------------------------------------------------------
[root@oldboyedu ~]# grep -n -A10 'tcpdump' /etc/passwd.ori
22:tcpdump:x:72:72::/:/sbin/nologin
23-nginx:x:1001:1001::/home/nginx:/sbin/nologin
24-ntp:x:38:38::/etc/ntp:/sbin/nologin
使用
vimdiff
效果如下图所示:(vimdiff /etc/passwd /etc/passwd.ori
)
备份好处:
1、误操作可以快速恢复。
2、可以比较增加的内容、进行检查。
2. rpm:安装rpm包工具
rpm命令的功能说明
rpm
命令全称是Red Hat Package Manager
(Red Hat
包管理器),几乎所有的Linux
发行版本都使用这种形式的命令管理、安装、更新和卸载软件。概括地说,rpm命令有五种基本功能(不包括创建rpm包):安装、卸载、升级、查询和验证。
rpm命令的语法格式
rpm
{--setperms|--setugids} PACKAGE_NAME ...
rpm
[参数选项] [包名]
rpm命令的选项说明
rpm
选项很多,表1为rpm
命令的参数及说明:
表1:
rpm
命令的参数及说明
参数选项 | 解释说明(带※的为重点) |
---|---|
-a | 查询所有套件。※ |
-b<完成阶段><套件档>+或-t <完成阶段><套件档>+ | 设置包装套件的完成阶段,并指定套件档的文件名称。 |
-c | 只列出组态配置文件,本参数需配合"-l"参数使用。 |
-d | 只列出文本文件,本参数需配合"-l"参数使用。 |
-e<套件档>或--erase<套件档> | 删除指定的套件。※ |
-f<文件>+ | 查询拥有指定文件的套件。※ |
-h或--hash | 套件安装时列出标记。※ |
-i | 显示套件的相关信息。※ |
-i<套件档>或--install<套件档> | 安装指定的套件档。 |
-l | 显示套件的文件列表。※ |
-p<套件档>+ | 查询指定的RPM套件档。※ |
-q | 使用询问模式,当遇到任何问题时,rpm指令会先询问用户。※ |
-R | 显示套件的关联性信息。※ |
-s | 显示文件状态,本参数需配合"-l"参数使用。 |
-U<套件档>或--upgrade<套件档> | 升级指定的套件档。 |
-v | 显示指令执行过程。※ |
-vv | 详细显示指令执行过程,便于排错。 |
-addsign<套件档>+ | 在指定的套件里加上新的签名认证。 |
--allfiles | 安装所有文件。 |
--allmatches | 删除符合指定的套件所包含的文件。 |
--badreloc | 发生错误时,重新配置文件。 |
--buildroot<根目录> | 设置产生套件时,欲当作根目录的目录。 |
--changelog | 显示套件的更改记录。 |
--checksig<套件档>+ | 检验该套件的签名认证。 |
--clean | 完成套件的包装后,删除包装过程中所建立的目录。 |
--dbpath<数据库目录> | 设置欲存放RPM数据库的目录。 |
--dump | 显示每个文件的验证信息。本参数需配合"-l"参数使用。 |
--excludedocs | 安装套件时,不要安装文件。 |
--excludepath<排除目录> | 忽略在指定目录里的所有文件。 |
--force | 强行置换套件或文件。 |
--ftpproxy<主机名称或IP地址> | 指定FTP代理服务器。 |
--ftpport<通信端口> | 设置FTP服务器或代理服务器使用的通信端口。 |
--help | 在线帮助。 |
--httpproxy<主机名称或IP地址> | 指定HTTP代理服务器。 |
--httpport<通信端口> | 设置HTTP服务器或代理服务器使用的通信端口。 |
--ignorearch | 不验证套件档的结构正确性。 |
--ignoreos | 不验证套件档的结构正确性。 |
--ignoresize | 安装前不检查磁盘空间是否足够。 |
--includedocs | 安装套件时,一并安装文件。 |
--initdb | 确认有正确的数据库可以使用。 |
--justdb | 更新数据库,当不变动任何文件。 |
--nobulid | 不执行任何完成阶段。 |
--nodeps | 不验证套件档的相互关联性。 |
--nofiles | 不验证文件的属性。 |
--nogpg | 略过所有GPG的签名认证。 |
--nomd5 | 不使用MD5编码演算确认文件的大小与正确性。 |
--nopgp | 略过所有PGP的签名认证。 |
--noorder | 不重新编排套件的安装顺序,以便满足其彼此间的关联性。 |
--noscripts | 不执行任何安装Script文件。 |
--notriggers | 不执行该套件包装内的任何Script文件。 |
--oldpackage | 升级成旧版本的套件。 |
--percent | 安装套件时显示完成度百分比。 |
--pipe<执行指令> | 建立管道,把输出结果转为该执行指令的输入数据。 |
--prefix<目的目录> | 若重新配置文件,就把文件放到指定的目录下。 |
--provides | 查询该套件所提供的兼容度。 |
--queryformat<档头格式> | 设置档头的表示方式。 |
--querytags | 列出可用于档头格式的标签。 |
--rcfile<配置文件> | 使用指定的配置文件。 |
--rebulid<套件档> | 安装原始代码套件,重新产生二进制文件的套件。 |
--rebuliddb | 以现有的数据库为主,重建一份数据库。 |
--recompile<套件档> | 此参数的效果和指定"--rebulid"参数类似,当不产生套件档。 |
--relocate<原目录>=<新目录> | 把本来会放到原目录下的文件改放到新目录。 |
--replacefiles | 强行置换文件。 |
--replacepkgs | 强行置换套件。 |
--requires | 查询该套件所需要的兼容度。 |
--resing<套件档>+ | 删除现有认证,重新产生签名认证。 |
--rmsource | 完成套件的包装后,删除原始代码。 |
--rmsource<文件> | 删除原始代码和指定的文件。 |
--root<根目录> | 设置欲当作根目录的目录。 |
--scripts | 列出安装套件的Script的变量。 |
--setperms | 设置文件的权限。 |
--setugids | 设置文件的拥有者和所属群组。 |
--short-circuit | 直接略过指定完成阶段的步骤。 |
--sign | 产生PGP或GPG的签名认证。 |
--target=<安装平台>+ | 设置产生的套件的安装平台。 |
--test | 仅作测试,并不真的安装套件。 |
--timecheck<检查秒数> | 设置检查时间的计时秒数。 |
--triggeredby<套件档> | 查询该套件的包装者。 |
--triggers | 展示套件档内的包装Script。 |
--verify | 此参数的效果和指定"-q"参数相同。 |
--version | 显示版本信息。 |
--whatprovides<功能特性> | 查询该套件对指定的功能特性所提供的兼容度。 |
--whatrequires<功能特性> | 查询该套件对指定的功能特性所需要的兼容度。 |
rpm命令的实践操作
范例1: 安装软件
[root@oldboyedu /mnt/Packages] rpm -hvi dejagnu-1.4.2-10.noarch.rpm
警告:dejagnu-1.4.2-10.noarch.rpm: V3 DSA 签名:NOKEY, key ID db42a60e
准备...
########################################### [100%]显示软件安装信息
范例2: 其它演示
[root@oldboyedu /mnt/Packages]# rpm -ivh dos2unix-6.0.3-7.el7.x86_64.rpm
Preparing... ################################# [100%]
package dos2unix-6.0.3-7.el7.x86_64 is already installed
[root@oldboyedu /mnt/Packages]# rpm -qa|grep tree
tree-1.6.0-10.el7.x86_64
[root@oldboyedu /mnt/Packages]# rpm -qa tree
tree-1.6.0-10.el7.x86_64
[root@oldboyedu ~]# rpm -ql tree
/usr/bin/tree
/usr/share/doc/tree-1.6.0
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz
[root@oldboyedu ~]# rpm -qf /sbin/ifconfig
net-tools-2.0-0.24.20131004git.el7.x86_64
3. yum:安装工具
yum命令的功能说明
yum
(Yellow dog Updater,Modified
)是一个在Fedora
和RedHat
以及SUSE
中的Shell
前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM
包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载,安装。百胜提供了查找,安装,删除某一个,一组甚至全部软件包的命令,而且命令简洁而又好记。
yum命令的语法格式
yum
[options] [command] [package ...]
yum
[参数选项] [包名]
- 选项: 可选,选项包括-h(帮助; -y(当安装过程提示选择全部为“是”); -q(不显示安装的过程)等等。
- 命令: 要进行的操作。
- 封装: 操作的对象。
yum命令的选项说明
yum
选项上面已经简单介绍了,下面介绍一下百胜常用命令:
- 1.列出所有可更新的软件清单命令:
yum check-update
- 2.更新所有软件命令:
yum update
- 3.仅安装指定的软件命令:
yum install <package_name>
- 4.仅更新指定的软件命令:
yum update <package_name>
- 5.列出所有可安装的软件清单命令:
yum list
- 6.删除软件包命令:
yum remove <package_name>
- 7.查找软件包命令:
yum search <keyword>
- 8.清除缓存命令:
yum clean package
:清除缓存目录下的软件包
yum clean headers
:清除缓存目录下的标题
yum clean oldheaders
:清除缓存目录下旧的标题
yum clean
,yum clean all(= yum clean package; yum clean oldheaders)
:清除缓存目录下的软件包及旧的header
yum命令的实践操作
范例1: 列出包组名,并安装
[root@oldboyedu ~]# yum grouplist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
base | 3.6 kB 00:00:00
Available Environment Groups:
Minimal Install
Compute Node
Infrastructure Server
File and Print Server
[root@oldboyedu ~]# yum groupinstall "File and Print Server"
范例2: 显示
tree
命令包信息,和安装(前提:知道包名)
[root@oldboyedu ~]# yum list tree
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Installed Packages
tree.x86_64 1.6.0-10.el7 @base
[root@oldboyedu ~]# yum install tree -y
范例3: 根据命令或者配置等的路径查属于哪个包
[root@oldboyedu ~]# yum provides /etc/my.cnf
[root@oldboyedu ~]# yum provides /sbin/ifconfig
范例4: 安装
pam-devel
[root@oldboyedu ~]# yum install pam-devel
设置安装过程
解析包安装参数
解决依赖性<==先检查软件的属性相依问题
- >运行事务检查
--->包pam-devel.i386 0:0.99.6.2-4.el5设置为更新
- > Processing Dependency:pam = 0.99.6.2-4.el5 for package:pam-devel
- >运行事务检查
--->包pam.i386 0:0.99.6.2-4.el5设置为更新
filelists.xml.gz 100%| ========================= | 1.6 MB 00:05
filelists.xml.gz 100%| ========================= | 138 kB 00:00-
>完成的依赖性解决方案......(省略)
搭建yum源
1、国内yum源
网易(163)
yum
源是国内最好的yum
源之一,无论是速度还是软件版本,都非常的不错。
将yum
源设置为163 yum
,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到。安装步骤
a、首先备份
/etc/yum.repos.d/CentOS-Base.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
b、下载对应版本
repo
文件,放入/etc/yum.repos.d/
(操作前请做好相应备份)
CentOS5
:http://mirrors.163.com/.help/CentOS5-Base-163.repo
CentOS6
:http://mirrors.163.com/.help/CentOS6-Base-163.repo
CentOS7
:http://mirrors.163.com/.help/CentOS7-Base-163.repo
[root@oldboyedu ~]# cd /etc/yum.repos.d/
[root@oldboyedu /etc/yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
c、运行以下命令生成缓存
[root@oldboyedu ~]# yum clean all
[root@oldboyedu ~]# yum makecache
除了网易之外,国内还有其他不错的
yum
源,比如中科大和搜狐。中科大的yum
源,安装方法查看:https://lug.ustc.edu.cn/wiki/mirrors/help/centossohu
的yum
源安装方法查看:http://mirrors.sohu.com/help/centos.html
2、配置本地百胜仓库
演示如下:
--------------------------------------------------------------
==>挂载CentOS ISO镜像,然后挂载到/mnt目录下<==
--------------------------------------------------------------
[root@oldboyedu ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
--------------------------------------------------------------
==>进入下面目录,查看一下<==
--------------------------------------------------------------
[root@oldboyedu ~]# cd /etc/yum.repos.d/
[root@oldboyedu /etc/yum.repos.d]# ls
CentOS7-Base-163.repo CentOS-Debuginfo.repo CentOS-Sources.repo
CentOS-Base.repo.backup CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo epel.repo
--------------------------------------------------------------
==>创建一个目录repo(名称随意)<==
--------------------------------------------------------------
[root@oldboyedu /etc/yum.repos.d]# mkdir repo
--------------------------------------------------------------
==>将所有文件移动到repo下<==
--------------------------------------------------------------
[root@oldboyedu /etc/yum.repos.d]# mv *.rep* repo/
[root@oldboyedu /etc/yum.repos.d]# ls
repo
--------------------------------------------------------------
==>然后将CentOS-Media.repo 再移动回来<==
--------------------------------------------------------------
[root@oldboyedu /etc/yum.repos.d]# mv repo/*M* .
[root@oldboyedu /etc/yum.repos.d]# ls
CentOS-Media.repo repo
--------------------------------------------------------------
==>编辑此文件<==
--------------------------------------------------------------
[root@oldboyedu /etc/yum.repos.d]# vim CentOS-Media.repo
--------------------------------------------------------------
==>改变的内容如下<==
--------------------------------------------------------------
name=CentOS-$releasever - Media
baseurl=file:///1
gpgcheck=0
enable=1
--------------------------------------------------------------
==>执行以下命令,完事<==
--------------------------------------------------------------
[root@oldboyedu ~]# yum clean all
[root@oldboyedu ~]# yum makecache
小结:
Linux
系统如何安装软件?1、
rpm
安装
简单 快。依赖多,解决依赖困难繁琐。2、
yum
安装
简单快,自动解决依赖。不能选择软件版本或软件存放路径。3、编译安装(源码编译)
慢 复杂 需要GCC
编译器,可以自定义安装(版本、软件路径)4、将源码制作成
rpm
,然后放到yum
仓库,实现yum
自动安装。
一次性慢 复杂,安装快,可以自定义安装(版本、软件路径)
4. chattr:改变文件属性
chattr命令的功能说明
chattr
命令用于改变文件属性。这项指令可改变存放在ext2
文件系统上的文件或目录属性,这些属性共有以下8种模式:
- a:让文件或目录仅供附加用途。
- b:不更新文件或目录的最后存取时间。
- c:将文件或目录压缩后存放。
- d:将文件或目录排除在倾倒操作之外。
- i:不得任意更动文件或目录。
- s:保密性删除文件或目录。
- S:即时更新文件或目录。
- u:预防意外删除。
chattr命令的语法格式
chattr
[ -RVf ] [ -v version ] [ mode ] files...
chattr
[-RV] [-v<版本编号>] [+/-/=<属性>] [文件或目录...]
chattr命令的选项说明
chattr
参数有几个,表1为chattr
命令的参数及说明:
表1:
chattr
命令的参数及说明
参数选项 | 解释说明 |
---|---|
-R | 递归处理,将指定目录下的所有文件及子目录一并处理。 |
-v<版本编号> | 设置文件或目录版本。 |
-V | 显示指令执行过程。 |
+<属性> | 开启文件或目录的该项属性。 |
-<属性> | 关闭文件或目录的该项属性。 |
=<属性> | 指定文件或目录的该项属性。 |
chattr命令的实践操作
范例1: 用
chattr
命令防止系统中某个关键文件被修改:
[root@oldboyedu ~]# chattr +i /etc/resolv.conf
[root@oldboyedu ~]# lsattr /etc/resolv.conf <-->lsattr显示文件属性(后面会讲)
----i-------- /etc/resolv.conf
[root@oldboyedu ~]# chattr +i /etc/passwd #<==锁定文件不能删除,不能修改
[root@oldboyedu ~]# lsattr /etc/passwd
----i----------- /etc/passwd
[root@oldboyedu ~]# lsattr /etc/hosts
---------------- /etc/hosts
[root@oldboyedu ~]# cp /etc/passwd{,.ori}
[root@oldboyedu ~]# rm -f /etc/passwd
rm: cannot remove ‘/etc/passwd’: Operation not permitted
[root@oldboyedu ~]# echo ddd > /etc/passwd
-bash: /etc/passwd: Permission denied
[root@oldboyedu ~]# useradd littleboy
useradd: cannot open /etc/passwd
[root@oldboyedu ~]chattr -i /etc/passwd #<==解锁文件。
范例2: 让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:
[root@oldboyedu ~]# chattr +a oldboy.txt
[root@oldboyedu ~]# rm -f oldboy.txt
rm: cannot remove ‘oldboy.txt’: Operation not permitted
[root@oldboyedu ~]# echo dddd >>oldboy.txt
[root@oldboyedu ~]# echo dddd >>oldboy.txt
5. lsattr:显示文件属性
lsattr命令的功能说明
lsattr
命令用于显示文件属性。用chattr
执行改变文件或目录的属性,可执行lsattr
指令查询其属性。
lsattr命令的语法格式
lsattr
[ -RVadv ] [ files... ]
lsattr
[-adlRvV] [文件或目录...]
lsttr命令的选项说明
lsattr
参数有几个,表1为lsattr
命令的参数及说明:
表1:
lsattr
命令的参数及说明
参数选项 | 解释说明 |
---|---|
-a | 显示所有文件和目录,包括以"."为名称开头字符的额外内建,现行目录"."与上层目录".."。 |
-d | 显示,目录名称,而非其内容。 |
-l | 此参数目前没有任何作用。 |
-R | 递归处理,将指定目录下的所有文件及子目录一并处理。 |
-v | 显示文件或目录版本。 |
-V | 显示版本信息。 |
lsattr命令的实践操作
范例1: 用
chattr
命令防止系统中某个关键文件被修改,然后用lsattr
查看
[root@oldboyedu ~]# chattr +i /etc/passwd #<==锁定文件不能删除,不能修改
[root@oldboyedu ~]# lsattr /etc/passwd
----i----------- /etc/passwd
[root@oldboyedu ~]# lsattr /etc/hosts
---------------- /etc/hosts