Linux学习之路--基础命令(4)

文章目录

  • 一、 环境准备
    • 1.光盘文件放入光驱设备
    • 2.挂载光驱设备
  • 二、 RPM软件包简介
  • 三、 查询软件信息
    • 查询的软件(参数为软件名)
  • 四、 安装RPM软件
  • 五、 构建Yum软件包仓库
  • 六、 Yum的使用
  • 七、 命令补充

一、 环境准备

1.光盘文件放入光驱设备

Linux学习之路--基础命令(4)_第1张图片

Linux学习之路--基础命令(4)_第2张图片

2.挂载光驱设备

[root@server1 ~]# mount   /dev/cdrom   /mnt/  #临时挂载
mount: /dev/sr0 写保护,将以只读方式挂载
[root@server1 ~]# ls   /mnt/
[root@server1 ~]# ls   /mntPackages

二、 RPM软件包简介

  • RPM Package Manager
    由红帽公司提出,RedHat、SUSE等系列采用
    建立集中数据库,记录软件包安装/卸载等变化信息,分析软件包依赖关系

  • RPM包文件名特征
    - 软件名-版本信息.操作系统.硬件架构.rpm
    - firefox-52.7.0-1.el7.centos.x86_64.rpm
    软件名:firefox
    软件包名:firefox-52.7.0-1.el7.centos.x86_64.rpm

  • RPM包的一般安装位置(分散)

文件类别 默认安装位置
普通执行程序 /usr/bin/ 、/bin/
服务器程序、管理工具 /usr/sbin/ 、/sbin/
配置文件 /etc/ 、/etc/软件名/
日志文件 /var/log/、/var/log/软件名/
程序文档、man帮助手册页 /usr/share/doc/ 、/usr/share/man/

三、 查询软件信息

查询的软件(参数为软件名)

  • 查询已安装的RPM软件包信息
    - 格式:rpm -q[子选项] [软件名称]

  • 常用的子选项

    -a: 列出当前主机已安装的所有RPM软件

    -i: 查看指定软件的详细信息

    -l: 查看指定软件的文件安装清单

[root@server1 ~]# rpm  -qa    #当前系统中所有已安装的软件包
[root@server1 ~]# rpm  -qa  |  wc  -l   #统计有多少个
[root@server1 ~]# rpm  -q   firefox    #查看firefox是否安装
firefox-52.7.0-1.el7.centos.x86_64
[root@server1 ~]# rpm  -q   httpd      #httpd为提供Web服务的软件
未安装软件包 httpd
[root@server1 ~]# rpm  -q   bash
bash-4.2.46-30.el7.x86_64
[root@server1 ~]# rpm  -qi   firefox       #查询软件信息
[root@server1 ~]# rpm  -ql   firefox       #查询软件安装了哪些内容(安装清单)
[root@server1 ~]# rpm  -ql    firefox   |   less
  • 查询某个目录/文件是哪个RPM包带来的

    - 格式:rpm -qf [文件路径]…

    - 即使目标文件被删除,也可以查询

[root@server1 ~]# which  vim   #查询命令对应的程序文件
/usr/bin/vim
[root@server1 ~]# rpm -qf  /usr/bin/vim
vim-enhanced-7.4.160-4.el7.x86_64
[root@server1 ~]# rpm -q vim-enhanced
vim-enhanced-7.4.160-4.el7.x86_64
[root@server1 ~]# which  ifconfig
/usr/sbin/ifconfig
[root@server1 ~]# rpm  -qf  /usr/sbin/ifconfig
net-tools-2.0-0.51.20160912git.el8.x86_64
  • 查询待软件包(参数为软件包名)

    - 格式:rpm -q[子选项] [软件名称]

    -pi: 查看指定软件的详细信息

    -pl: 查看指定软件的文件安装清单

[root@server1 ~]# rpm  -q   vsftpd     #查询vsftpd软件是否安装
未安装软件包 vsftpd 
[root@server1 ~]# ls /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
  • 查询软件包的安装清单:
[root@server1 ~]# rpm -qpl  /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
#查询软件包信息
[root@server1 ~]# rpm -qpi /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
  • 导入红帽签名信息(了解)
[root@server1 ~]# rpm  --import    /mnt/RPM-GPG-KEY-CentOS-7
#查询软件包信息
[root@server1 ~]# rpm -qpi  /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm

四、 安装RPM软件

​ - 格式:rpm -i RPM包文件…

  • 辅助选项
    -v:显示细节信息
    -h:以#号显示安装进度
    –force:强制安装、覆盖安装
    –test:测试安装,不做真实安装动作
[root@server1 ~]# rpm  -q   vsftpd        #查询当前的系统是否安装了该软件
未安装软件包 vsftpd 

[root@server1 ~]# rpm  -ivh  /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm 
[root@server1 ~]# rpm  -q  vsftpd    #查询当前的系统是否安装了该软件
vsftpd-3.0.2-22.el7.x86_64

[root@server1 ~]# rpm -e vsftpd            #卸载软件
[root@server1 ~]# rpm -q vsftpd            #查询当前的系统是否安装了该软件
未安装软件包 vsftpd
  • –force:强制安装、覆盖安装
[root@server1 ~]# which   hostname
/usr/bin/hostname
[root@server1 ~]# rm   -rf   /usr/bin/hostname
[root@server1 ~]# hostname
bash: hostname: 未找到命令...

[root@server1 ~]# rpm -qf   /usr/bin/hostname     #查看由哪个软件包产生
hostname-3.13-3.el7.x86_64

[root@server1 ~]# rpm  -ivh   --force   /mnt/Packages/hostname-3.13-3.el7.x86_64.rpm
  • 解决依赖关系

– 先安装/卸载要求的包

– 如果RPM包齐全但比较多,可以用通配符 *

  • 忽略依赖关系(不推荐

– 可能会导致软件运行异常

– 辅助选项 --nodeps

  • 常见依赖关系的报错:
[root@localhost ~]# rpm -ivh /mnt/Packages/bind-chroot-9.9.4-61.el7.x86_64.rpm 
错误:依赖检测失败:
	bind = 32:9.9.4-61.el7 被 bind-chroot-32:9.9.4-61.el7.x86_64 需要

五、 构建Yum软件包仓库

作用:自动解决依赖关系安装软件

服务端(本机): 1.众多的软件 2.仓库数据文件(repodata) 3.FTP协议或http协议

本地Yum仓库:服务端需要有光盘内容即可

客户端(本机):指定服务端位置

​ – 仓库配置:/etc/yum.repos.d/*.repo

​ – 错误的文件会影响正确的文件

Yum---->/etc/yum.repos.d/*.repo---->光盘内容

客户端文件配置内容:

​ – [源名称] :自定义名称,具有唯一性
​ – name:本软件源的描述字串
​ – baseurl:指定YUM服务端的URL地址
​ – enabled:是否启用此频道
​ – gpgcheck:是否验证待安装的RPM包
​ – gpgkey:用于RPM软件包验证的密钥文件

完整示例:

[root@server1 ~]# vim   /etc/yum.repos.d/mydvd.repo 
[RPM]	#仓库的名称
name=RPM	#仓库描述信息
baseurl=file:///mnt		#指定服务端位置file://表示本地为服务端
enabled=1	#本文件启用
gpgcheck=1   
gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7
#或
[RPM]
baseurl=file:///mnt
enabled=0	#不检测红帽签名信息
gpgcheck=1        
  • 总结:本地Yum仓库构建方法

1.服务端:显示光盘的内容,挂载光驱设备

2.客户端:书写客户端配置文件,指定服务端位置

3.执行流程: yum命令—>/etc/yum.repos.d/*.repo—>baseurl=file:///mnt

六、 Yum的使用

  • 安装软件
[root@server1 ~]# yum -y install httpd
[root@server1 ~]# rpm -q httpd

重新安装(覆盖安装)
[root@server1 ~]# yum -y reinstall httpd
  • 卸载软件
[root@server1 ~]# yum   remove   httpd
  • 查询
[root@server1 ~]# yum list  ftp    #查询仓库是否有ftp软件
可安装的软件包  		#表示当前系统没有安装该软件
ftp.x86_64        0.17-67.el7         nsd2010
[root@server1 ~]# yum  list  httpd
[root@server1 ~]# yum  search  ftp   #包含ftp就匹配
[root@server1 ~]# yum   provides   /usr/bin/hostname 
[root@server1 ~]# yum  provides  /etc/passwd  #仓库中那个软件包产生该文件
  • 简单的修复
[root@server1 ~]# rm -rf /usr/sbin/ifconfig 
[root@server1 ~]# ifconfig
bash: ifconfig: 未找到命令...
[root@server1 ~]# yum provides /usr/sbin/ifconfig
[root@server1 ~]# yum -y  reinstall  net-tools
[root@server1 ~]# ls /usr/sbin/ifconfig
/usr/sbin/ifconfig
[root@server1 ~]# ifconfig
  • 清空缓存
[root@server1 ~]# yum  clean   all
[root@server1 ~]# yum   repolist

七、 命令补充

  • Linux计算器bc
[root@server1 ~]# bc
  • 获取命令帮助

方式一:命令 --help

[root@server1 ~]# cat  --help

方式二:man 命令

[root@server1 ~]# man cat #按q退出

[root@server1 ~]# man passwd #显示passwd命令帮助

[root@server1 ~]# man 5 passwd

数字5表示帮助的类型,表示配置文件类型

  • 历史命令

管理/调用曾经执行过的命令

​ – history:查看历史命令列表

​ – history -c:清空历史命令

​ – !n:执行命令历史中的第n条命令

​ – !str:执行最近一次以str开头的历史命令

[root@server1 ~]# vim  /etc/profile
HISTSIZE=1000      #默认记录1000条
[root@server1 ~]# history          #显示历史命令列表
[root@server1 ~]# history   -c    #清空历史命令
[root@server1 ~]# history                 
[root@server1 ~]# cat   /etc/redhat-release 
[root@server1 ~]# ls   /root
[root@server1 ~]# history
[root@server1 ~]# !cat  #指定最近一条以cat开头的历史命令
[root@server1 ~]# !ls    #指定最近一条以ls开头的历史命令
  • du,统计目录的占用空间

    – du [选项]… [目录或文件]…

    – -s:只统计每个参数所占用的总空间大小

    – -h:提供易读容量单位(K、M等)

[root@server1 ~]# du  -sh   /root
94M     /root
[root@server1 ~]# du  -sh   /etc
28M     /etc
[root@server1 ~]# du  -sh   /boot
122M    /boot
  • date,查看/调整系统日期时间

– date +%F、date +%R

– date +"%Y-%m-%d %H:%M:%S"

– date -s “yyyy-mm-dd HH:MM:SS”

[root@server1 ~]# date
[root@server1 ~]# date  -s    "2022-2-9   11:11:11"     #修改系统时间
[root@server1 ~]# date
[root@server1 ~]# date   -s    "2021-12-06   16:37:11"   
[root@server1 ~]# date
[root@server1 ~]# date   +%Y     #显示年
[root@server1 ~]# date   +%m    #显示月
[root@server1 ~]# date   +%d    #显示日期
[root@server1 ~]# date   +%H   #显示时
[root@server1 ~]# date   +%M   #显示分
[root@server1 ~]# date   +%S    #显示秒
[root@server1 ~]# date   +%F   #显示年-月-日
[root@server1 ~]# date   +%R  #显示时:分
  • 制作链接文件(制作快捷方式)

格式:ln -s /路径/源数据 /路径/快捷方式的名称 #软链接

[root@server1 ~]# ln -s /etc/sysconfig/network-scripts/ifcfg-lo /mylo
[root@server1 ~]# ls /
mylo
...
[root@server1 ~]# ls -l /mylo
lrwxrwxrwx. 1 root root 39 Feb  9 00:34 /mylo -> /etc/sysconfig/network-scripts/ifcfg-lo

软链接优势:可以针对目录与文件制作快捷方式,支持跨分区

软链接缺点:源数据消失,快捷方式失效

格式:ln /路径/源数据 /路径/快捷方式的名称 #硬链接

硬链接优势:源数据消失,快捷方式仍然有效

硬链接缺点:只能针对文件制作快捷方式,不支持支持跨分区

[root@server1 ~]# rm  -rf   /opt/*
[root@server1 ~]# echo  123   >   /opt/A.txt
[root@server1 ~]# ln  -s   /opt/A.txt    /opt/B.txt   #软链接
[root@server1 ~]# ls /opt/
[root@server1 ~]# ln    /opt/A.txt   /opt/C.txt   #硬链接
[root@server1 ~]# ls    /opt/
[root@server1 ~]# cat    /opt/B.txt 
[root@server1 ~]# cat    /opt/C.txt 
[root@server1 ~]# rm  -rf   /opt/A.txt 
[root@server1 ~]# ls   /opt/
[root@server1 ~]# cat  /opt/B.txt      #软链接失效
cat: /opt/B.txt: 没有那个文件或目录
[root@server1 ~]# cat   /opt/C.txt     #硬链接仍然有效
  • zip归档工具,跨平台

    - 归档+压缩操作: zip [-r] 备份文件.zip 被归档的文档…
    -r: 被归档的数据有目录,必须加上此选项

[root@server1 ~]# zip   -r     /opt/abc.zip        /etc/passwd     /home
[root@server1 ~]# ls   /opt/
abc.zip
  • 释放归档+解压操作: unzip 备份文件.zip [-d 目标文件夹]
[root@server1 ~]# mkdir   /qaz
[root@server1 ~]# unzip       /opt/abc.zip       -d    /qaz
[root@server1 ~]# ls   /qaz
[root@server1 ~]# ls   /qaz/etc/
[root@server1 ~]# ls   /qaz/home/
[root@server1 ~]# unzip  -l  /root/zxzx.zip   #列出包里面的内容

你可能感兴趣的:(Linux学习之路,linux,centos)