Centos7软件包的管理与安装
本节所讲的内容:
使用rpm命令-安装-查看-卸载-rpm软件包
yum管理软件包
实战tar源码包管理-srpm源码包安装方法
软件包的管理
软件包的类型
rpm二进制包--------已经使用GCC编译后的
tar源码包--------需要编译
RPM概述:RPM是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、SUSE以及Turbo Linux 等 Linux的分发版本都有采用,可以算是公认的行业标准了
rpm软件包的管理
rpm包的获取方式:
1.Centos系统镜像光盘
2.网站rpmfind.net
3.比如安装mysql、nginx软件,我们可以去它的官方网站下载:http://www.mysql.com
rpm包格式的说明
例1:
ls /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
zsh | -5 | 0. | 2- | 28. | el7. | x86_64.rpm |
---|---|---|---|---|---|---|
软件名 | 主版本号 | 次版本号 | 修订 | release(第几次发布版本) | 操作系统版本 | 软件包是64位包 |
注:修订指的是第几次修改bug,发布指的是:第几次发布,发布时,可能只是对软件安装的默认参数做了修改,而没有其他改动
安装rpm软件
RPM工具使用分为安装、查询、验证、更新、删除等操作
命令格式:rpm[参数]软件包
参数:
-i 是install的意思,安装软件包
-v 显示附加信息,提供更多详细信息
-V 效验,对已安装的软件包进行效验
-h --hash,安装时输出####标记
全名:在安装和更新升级时候使用
包名:对已经安装过的软件包进行操作时,比如查找已经安装的某个包,卸载包等,使用包名.它默认是去目录/var/lib/rpm下面进行搜搜,当一个rpm包安装到系统上之后,安装信息通常会保存在本地的/var/lib/rpm/目录下
从本地安装
rpm -ivh /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
然后在shells就能查看到zsh
cat /etc/shells
从网上下载直接安装centos epel扩展源
例:
rpm -vih http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
注:安装centos epel扩展yum源,注:epel源是对centos7系统自带的base源的扩展,针对有依赖关系的包安装,建议直接用yum方式安装
rpm查询功能
用法:rpm -q(query)常与下面参数组合使用
-a(all)查询所有已安装的软件包
-f(file)系统文件名(查询系统文件所属哪个软件包),反向查询
-i显示已经安装的rpm软件包信息,后面直接跟包名
-l(list)查询软件包中文件安装的位置
-p查询未安装软件包的相关信息,后面要跟软件的命名
-R查询软件包的依赖性
例:
查询指定的包是否安装
rpm -q python
查询所有已安装包
rpm -qa
查询所有已安装包中带vim关键字的包
rpm -qa | grep vim
查看find命令的路径
which find
查询文件或命令属于哪个安装包
rpm -qf /usr/bin/find
查询包的详细信息或作用
rpm -pqi /mnt/Packages/php-mysql-5.4.16-46.el7.x86_64.rpm
查看软件包是否被修改
rpm -V 包名
rpm -Vf 文件路径
例:
rpm -V findutils
rpm -Vf /usr/bin/find
注:如果出现的全是点,表示测试通过
出现下面的字符表示测试的失败:
5 | MD5 |
---|---|
S | 文件长度,大小是否改变 |
L | 符号链接,文件路径是否改变 |
T | 文件修改日期是否改变 |
D | 设备 |
U | 用户,文件的属主 |
G | 用户组 |
M | 模式(包含许可和文件类型) |
? | 不可读文件 |
再后面的c文件名,它表示的是文件的类型 | |
c | 配置文件 |
d | 普通文件 |
g | 不该出现的文件,意思就是这个文件不该被这个包所包含 |
l | 授权文件(license file) |
r | 描述文件 |
查看系统中所有的rpm包及安装的文件有没有被修改
rpm -Va >rpm check.txt
rpm包卸载和升级
用法:rpm -e(erase)包名
例:
rpm -e Python-3.7.3
参数:--nodeps忽略依赖,建议在卸载时不要用rpm去卸载有依赖关系的包,应该用yum
rpm -e --nodeps Python-3.7.3
升级:
rpm -Uvh /mnt/Packages/php-mysql-5.4.16-46.el7.x86_64.rpm
注:因为升级时会有一些依赖包要解决,所以一般我们使用yum update包来升级
YUM的使用
yum(全程Yellow dog Updater,Modified)是一个前端软件包管理器,基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依耐性关系,并且一次安装所有的软件包,无需繁琐的一次又一次的下载、安装,yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记
YUM:解决依赖关系问题,自动下载软件包,它是基于C/S架构
C=client S=ftp\http\file
配置yum源:
配置本地yum源:
1.挂载镜像
先确定虚拟机光驱中有加载系统镜像
2.配置yum源文件
注:这些我在Centos7.8笔记第一章有,链接如下:
http://iamyqhp.com/index.php/archives/6/
网络yum源
Centos7配置网络yum源,以阿里云镜像源为例:
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
注:wget 下载文件,-O把下载的文件存到另一个文件中
查看:
vim /etc/yum.repos.d/CentOS-Base.repo
找到这一条:
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
注:$releasever系统的版本值等于,像我就是Centos7.8
[root@master ~]# cat /etc/centos-release
CentOS Linux release 7.8.2003 (Core)
$basearch等于:是x86_64的
[root@master ~]# uname -r
3.10.0-1127.19.1.el7.x86_64
如果下载的Centos-7.repo,不能用,解决方法:
要在阿里云里面找到最新的版本号,网址如下:
https://mirrors.aliyun.com/centos/
然后执行:sed进行全文替换,如:
sed -i 's/$releasever/7.8.2003/g' /etc/yum.repos.d/CentOS-Base.repo
清空下yum缓存
yum clean all
查看列表
yum list
yum使用
yum常用操作
安装软件包,-y直接安装
yum install -y httpd
升级软件包,改变软件设置和系统设置,系统版本内核都升级
yum -y update
升级软件包,不改变软件设置和系统设置,系统版本升级,内核不改变
yum -y upgrade
不加任何包,表示整个系统进行升级
yum -y update
查询rpm包作用
yum info httpd
查看命令是哪个软件包安装的
yum provides /usr/bin/find
包名,卸载包
yum -y remove
按关键字搜索软件包
yum search keyword
yum报错,注意的几个小问题
1.确定光盘是否连接,光盘是否挂载
2.配置文件中格式是否正确,字母,符号有没有少写,挂载点和配置文件中设置的是否一致
3.网络源需要联网,操作和RPM类似,只是会自动安装依赖项
yum安装开发工具软件包组
查看有哪些软件包租
yum grouplist
安装包组+组名
yum groupinstall ''
如果yum grouplist显示中文,想变为英文,则执行以下命令
echo $LANG
LANGE=en_US.UTF-8
测试:安装gcc
yum groupinstall 'Development tools'
实战tar源码包管理-srpm源码包安装方法
源码安装nginx
1.编译环境如gcc和gcc-c++编译器,make
2.准备软件: nginx-1.19.4
部署Nginx
安装依赖包:
yum -y install gcc gcc-c++ make zlib-devel pcre pcre-devel openssl-devel
zlib:压缩库 pcre:支持正则表达式,地址重写rewrite openssl提供https支持
Nginx依赖包下载地址:
1.gzip模块需要zlib库(在http://www.zlib.net/下载http://zlib.net/zlib-1.2.8.tar.gz)
2.rewrite模块需要pcre库(在http://www.pcre.org/下载ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/)
3.ssl功能需要openssl库(在http://www.openssl.org/下载http://www.openssl.org/source/openssl-fips-2.0.9.tar.gz)
或者下载全包openssl-1.0.2o.tar
Nginx安装
安装前确认linux下这些库已经安装
yum install perl
yum install gcc
yum install gcc-c++
yum -y install net-tools
开始安装
步骤1:./configure
上传你下载的nginx压缩包,然后进行解压
tar xvf nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure
想查看是否有错
echo $?
步骤2:make安装
以cpu4进程进行安装,速度更快
make -j 4
make install
echo $?
注:
详解源码安装
./configure后面跟的参数
指定安装路径 | 例如:--prefix=/usr/local/nginx |
---|---|
启用或禁用某项功能 | 例如:--enable-ssl,--disable-filter--with-http_ssl_module |
和其它软件关联 | 例如:--with-pcre |
检查安装环境 | 例如:是否有编译器gcc,是否满足软件的依赖需求 |
最终生成:Makefile |
make -j 4 | 按Makefile文件编译,可以使用-j 4指定4核心CPU编译,提升速度 |
---|---|
make install | 按Makefile定义的文件路径安装 |
make clean | 清除上次的make命令所产生的object和Makefile文件,使用场景:当需要重新执行configure时,需要执行make clean |
删除源码包
安装完,删除
make uninstall
有时删除不干净,所以建议安装时,在configure步骤添加一个:--prefix参数,这样删除或备份时,直接删除--prefix指定的安装目录操作就可以了
解决源码编译报错的方法
例:执行./configure出现这种报错
Can't find ext2fs library
解决方法:
方法1:按两下tab键,一般情况,ext2fs就是要安装的软件包的名字开头,如果存在则自动补全
rpm -ivh ext2fs
方法2:查找完整关键字
ls *ext2fs*
方法3:查找部分关键字
ls *2fs*
方法4:上RPMSEEK.COM网站找http://www.rpmseek.com/index.html
方法5:使用yum去搜索
yum search ext2fs
但是有可能你这显示库已经安装,但是configure时却又说找不到文件
解决:需要安装库的开发文件,要是devel的文件,缺少头文件
rpm -ivh /mnt/Packages/e2fsprogs-devel-1.41.12-11.el6.x86_64.rpm
总结:软件安装方法特点
rpm+yum:方便,软件版本低,稳定性好、管理方便.
源码编译安装:麻烦,软件版本新,可以定制,稳定性稍差、管理稍好,性能好
源码编译安装:主要是安装LAMP或LNMP架构时,需要用到
安装.src.rpm源码包的方法(了解)
srpm:Source RPM的意思,也就是这个RPM档案里面含有原始码(Source Code)
例:
上传lrzsz-0.12.20-27.1.el6.src.rpm
到linux的/root
目录
先卸载软件包
rpm -e lrzsz
将src.rpm中源文件编译成可执行的二进制文件
rpmbuild --rebuild lrzsz-0.12.20-27.1.el6.src.rpm
若顺利执行成功则会在rot
用户家目录下生成一个:/root/rebuild
目录
在/root/rpmbuild/RPMS/x86_64/
目录下生成lrzsz-0.12.20-27.1.el7.centos.x86_64.rpm
这个rpm文件
cd到这个目录下进行安装
rpm -ivh rpmbuild/RPMS/x86_64/lrzsz-0.12.20-27.1.el7.centos.x86_64.rpm
总结:
使用rpm命令-安装-查看-卸载-rpm软件包
yum管理软件包
实战tar源码包管理-srpm源码包安装方法
文档的归档和压缩
本节所讲内容:
1.tar命令进行文件的归档和压缩
2.zip管理压缩文件
3.了解gzip-bzip2-xz管理压缩文件-file-sort查看文件
tar命令进行文件的归档和压缩
归档和压缩文件的好处:节约硬盘的资源,加快文件的传输速率
tar命令的作用:打包、压缩文件;tar文件是把几个文件和(或)目录集合在一个文件里,该存档文件可以通过gzip、bzip2或xz等压缩工具进行压缩后传输
参数:
-c | creat创建文件 |
---|---|
-x | extract提取解压文件 |
-v | verbose显示执行详细过程 |
-f | file指定备份文件 |
-t | list列出压缩包中包含哪些文件,不解压,查看包中的内容 |
-C(大写) | directory指定解压位置 |
例:给/boot/grub目录打包,注:tar的参数前可以不使用-
[root@master ~]# tar -cvf grub.tar /boot/grub
tar: Removing leading `/' from member names
/boot/grub/
/boot/grub/splash.xpm.gz
或
[tar cvf grub.tar /boot/grub
使用ls
查看
[root@master ~]# ls
anaconda-ks.cfg a.out grub.tar hadoop Python-3.7.3 Python-3.7.3.tgz rpm
对grub.tar
进行解压
[root@master ~]# tar xvf grub.tar
boot/grub/
boot/grub/splash.xpm.gz
[root@master ~]# ls
anaconda-ks.cfg boot hadoop Python-3.7.3.tgz
a.out grub.tar Python-3.7.3 rpm
[root@master ~]# ls boot/grub/
splash.xpm.gz
注:在使用绝对路径归档文件时,将默认从文件名中删除该路径中前面的/
符号,这样解压时,会直接解压到当前目录,如果不移除/
,压缩时,直接按照绝对路径来释放,会覆盖原系统中此路径的文件
指定解压位置:-C
例:将文件解压到/opt/下
tar -xvf grub.tar -C /opt/
例:把两个目录或目录+文件打包成一个软件包:
创建个back
目录
mkdir back
把back
、/boot/grub
和/etc/passwd
打包到back.tar
tar -cvf back.tar /boot/grub back/ etc/passwd
例:不解包,查看tar中的内容
tar -tvf grub.tar
tar
归档+解压
语法:tar zcvf newfile.tar.gz SOURCE
常用参数:
-z | 以gzip方式压缩 | 扩展名:tar.gz |
---|---|---|
-j | 以bz2方式压缩 | 扩展名:tar.bz2 |
-J | 以xz方式压缩 | 扩展名:tar.xz |
例1:创建.tar.gz
包,对/etc/
打包:
tar -zcvf etc.tar.gz /etc
解压:
tar -zxvf etc.tar.gz
例2:创建.tar.bz2
包,对/etc/
打包:
tar -jcvf etc.tar.bz2 /etc
解压:
tar -jxvf etc.tar.bz2
例3:创建.tar.xz
包,对/etc/
打包:
tar -Jcvf etc.tar.xz /etc
解压:
tar -xvf etc.tar.xz
或
tar -Jxvf etc.tar.xz
注:这三种压缩方式,xz
是压缩比例最高的,但压缩时间也是最长的,bz2
与gz
是最常用的
zip管理压缩文件(了解一下)
zip软件包解压缩命令:
zip | 压缩程序 |
---|---|
unzip | 解压程序 |
例1:压缩/etc/passwd
文件为a.zip
zip a.zip /etc/passwd
例2:将所有的.jpg
文件压缩成为一个aa.zip
包
zip all.zip *.jpg
例3:将grub.zip
压缩包解压到/opt/
目录下:
unzip grub.zip -d /opt/
了解gzip-bzip2-xz管理压缩文件-file-sort查看文件
我们创建压缩的tar 存档,tar命令支持三种不同的压缩方式
gzip压缩速度最快
bzip2压缩生成的文件比gzip小,但使用不如gzip广
xz压缩工具相对较新,会提供最佳的压缩率
压缩工具:gzip
bzip2
zip
xz
语法格式:
gzip文件 | gzip a.txt | 生成:a.txt.gz |
---|---|---|
bzip2文件 | bzip2 b.txt | 生成:b.txt.bz2 |
xz文件 | xz c.txt | 生成:c.txt.xz |
例1:
mkdir tset
touch test/1.txt
gzip test/1.txt
ls test/
注:只能对文件进行压缩,且压缩后源文件会消失,一般不用,(bzip2,xz这两个工具可以通过添加参数-k
来保留源文件)
例:
cp /etc/passwd /test/1.txt
bzip2 -k /test/1.txt
ls 1.txt.bz2
例:
xz -k 1.txt
ls 1.txt.xz
解压:
gzip -d
+文件
bzip2 -d
+文件 -k
保留源文件
xz -d
文件或unxz
文件-k
保留源文件
例:
gzip -d 1.txt.gz
bzip2 -d 1.txt.bz2
xz -d 1.txt.xz
file查看文件
file
命令:
作用:file - determine file type
确定文件类型
注:Linux系统不根据后缀名识别文件类型
用file
命令查看文件类型,例:
file /etc/passwd
按一定规则顺序查看文件
查看文件:
按时间顺序排序,t
表示时间,r
从小到大,不加r参数由大到小
ls -ltr
按大小排序,-r
有小到大
ls -lSr
从大到小,-r
从小到大,加-h
参数看的更舒服
ls -lSrh
查看目录:
例:查看/etc
du -sh /etc
查看分区大小:
可以快速查看磁盘大小的存储空间
df -h
排序:处理大量数据时会用到的命令sort
例1:按默认字母规则进行排序
cat /etc/passwd | sort | more
例2:按数据排序
每行随意写一些数字
vim file1
cat file1 | sort
加上参数-r
就是以倒叙的顺序来排列的
cat file1 | sort -r
例:组合使用
-t
指定一个用来区分键位置符
-k
后面跟数字,指定按第几列进行排序
-r
反着排序,由原本的由小到变成由大到小
例:以:
作为分隔符,以第3列,也就是用户UID,来从大到小排序
sort -t ":" -k3 -r /etc/passwd | more
例:把etc
目录下所有的文件,按从大到小排序
du -h /etc | sort -rh | more
总结:
tar
命令进行文件的归档和压缩zip
管理压缩文件- 了解
gzip-bzip2-xz
管理压缩文件-file-sort
查看文件