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-50.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

注:如果出现的全是点,表示测试通过

出现下面的字符表示测试的失败:

5MD5
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=ftphttpfile

配置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等压缩工具进行压缩后传输

参数:

-ccreat创建文件
-xextract提取解压文件
-vverbose显示执行详细过程
-ffile指定备份文件
-tlist列出压缩包中包含哪些文件,不解压,查看包中的内容
-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是压缩比例最高的,但压缩时间也是最长的,bz2gz是最常用的

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查看文件
Last modification:December 5, 2020
If you think my article is useful to you, please feel free to appreciate