Linux学习笔记(九)软件包管理

在Linux系统中有多种包管理器,这里我们学习一下软件是如何安装的?包管理器是如何使用的。本节我们将学习到的内容有:


图片.png

一、软件包管理器

包管理器是方便软件安装、卸载,解决软件依赖关系的重要工具
(1)CentOS、Redhat、Fedora使用yum包管理器,软件安装包格式为rpm
(2)Debian、Ubuntu使用apt包管理器,软件安装包格式为deb

二、rpm包与rpm命令

1. 读懂rpm包的名称
图片.png
  • 所有rpm包都是以.rpm后缀结尾的;
  • 软件版本需要标记,因为在安装这个软件包的时候呢,软件包之间会有一个互相的依赖关系的问题的,软件版本主要是用来解决依赖关系的;
  • 系统版本:这里的el7表示软件发行商,el7表示此包是由 Red Hat 公司发布,适合在 RHEL 7.x (Red Hat Enterprise Linux) 和 CentOS 7.x 上使用。但是如果系统版本是el6的话,是可以强制安装到centos7的系统上,但是其软件的稳定性或者版本的兼容性可能会有问题。所以当我们去选择rpm包的时候,我们第一个要看它的软件版本,是否符合我们的要求。另外我们还需要查看的系统版本是否与我们系统的发行版本对应;
  • 平台:目前服务器大部分都是x86_64的平台


    图片.png
2. 了解rpm常用命令

rpm命令常用参数:
(1)-q查询软件包
查询当前系统中安装了哪些软件包;

rpm -qa  # 查看系统安装的所有软件包

显示当前系统所有已经安装的软件包,条目太多如果想要分屏显示,可以在上面命令的基础上添加一个管道符|more参数

rpm -qa | more  # 分屏查看系统所有已经安装的软件包

空格键换浏览下一页;按回车键浏览下一行,按q退出;
我们如果想查看某一个单独的软件包是否安装,可以使用命令:rmp -q <软件包名称>

rpm -q vim-common  # 查询是否安装vim-common

(2)-i安装软件包
安装指定软件包,使用命令rpm -i <软件包名称>

rpm -i vim-enhanced-7.4.629-6.el7.armv7hl.rpm

如果安装的时候出现以下报错:


图片.png

失败原因:依赖错误,它有一个依赖关系需要我们手动去解决,安装vim-enhanced时需要先安装vim-common,再去安装vim-enhanced,这样呢我们才不会被依赖关系所困扰。

如果依赖关系非常多,手动解决太麻烦,我们可以使用解决依赖关系有效的工具:yum仓库,它可以自动帮我们解决依赖关系;

在安装软件包的时候,如果软件包的版本不符合我们的要求,我们还可以通过源代码来编译安装软件包。
(3)-e卸载软件包
卸载指定软件包,使用命令rpm -e <软件包名称>

rpm -e vim-common

如果想卸载多个软件包的话,多个软件包之间用空格隔开即可。
在查询和卸载软件包时,我们只需要写上软件包的名称即可,但是安装软件包的时,需要写上完整的软件包名称。

三、 yum仓库

yum仓库也叫yum包管理器,官方提供了yum源(http://mirror.centos.org/centos/7/),但是在国内访问速度较慢,我们可以使用国内一些公司或者机构提供的仓库源速度会快很多

1. 如果切换国内源呢?

方法01:我们可以修改配置文件/etc/yum.repos.d/CentOS-Base.repo来切换国内源;

图片.png

方法02:还有一种方法就是,直接把国内的源配置文件下载下来覆盖系统中的原配置文件,使用命令:

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

然后运行yum makecache生成新的缓存,让我们的软件包指向开源镜像站。

2. yum命令常用选项

(1) install 安装软件包
使用yum进行安装不用考虑软件包的依赖关系,系统会自动帮你找到你需要的依赖包,一并安装,通过yum install <软件包名>就可以安装指定的软件包;比如当我们想安装软件包:vim-enhanced就可以使用命令:

yum install vim-enhanced

这些软件包的安装都是一个一个的安装,但是我们使用Linux系统时通常需要一次性安装多个软件。比如我们Linux系统要做服务器的话,通常要安装httpdmysql、php之类的;如果我们要做c语言开发的话,通常就需要安装cmake、gcc之类的,但是一个一个的安装可能会由于版本问题或者依赖问题导致安装失败,这时候yum提供了一种很人性化的安装方式yum groupinstall <整组软件包>,可以帮我们一次性安装好一整套软件包,我们使用命令:

yum grouplist

可以查看系统中有哪些可以使用的软件包套件:


图片.png

可以看到软件套装有:最小安装、计算节点、基础设施服务、基础网络服务、虚拟化主机、桌面系统、网络控制台工具、图形管理工具、系统管理工具等等,都是可以整套安装的,比如我们想安装基础网络服务套装就可以直接使用命令:

yum groupinstall "Basic Web Server"

就可以安装一整套基础网页服务器所需要的软件包,然后输入y再回车就可以了,注意不要忘了加双引号哦!
(2)remove 卸载软件包
如果想把已经安装的软件包vim-enhanced卸载,可以通过yum remove <软件包名>来卸载指定的软件包。
(3) list 查看软件包
如何查看系统中已经安装过哪些安装包?我们可以使用命令:

yum list

来查看当前系统中已经安装的软件包;

(4) update 升级软件包
系统中的软件怎么更新升级呢,可以使用命令:

yum update

来更新升级软件包,系统会根据yum仓库里的最新版本,提示哪些软件包需要重新安装哪些需要升级,根据命令按y再回车就可以升级到yum仓库中最新版本了。

四、源代码编译安装

使用yum或者rpm安装很高效与便捷,这也是yum、rpm包管理工具被用户广泛使用的原因。但是很多时候最新版本的软件还没有被yum仓库收录,我们想使用最新版本的软件可以通过源代码编译安装
我们以安装opentesty为例,使用源码编译的方式进行安装:
第一步:下载应用程序源代码

wget https://openresty.org/download/openresty-1.15.8.1.tar.gz

第二步:解压缩gzip文件

tar zxf openresty-1.15.8.1.tar.gz

第三步:进入源码目录

cd openresty-1.15.8.1

第四步:配置源码环境
由于当前的系统环境以及预先设置在源码中了,但是没有真正的和我们系统环境进行匹配,所以我们使用./config去自动配置一下我们内核的版本、编译器匹配,再使用--prefix参数来指定应用程序安装位置,如果不指定安装位置的话,删除软件的时候就会很不方便;

./configure --prefix=/usr/local/openresty

如果执行命令时出现报错:/usr/bin/env: perl: No such file or directory


图片.png

原因:未安装gcc编译环境导致
解决办法:安装gcc、gcc-c++、perl

yum -y install gcc gcc-c++ perl make kernel-headers kernel-devel

安装完成后如果继续报错:

图片.png

原因:缺少PCRE库
解决办法:我们再安装一下PCRE库

yum install pcre-devel

安装完成后,我们继续在当前目录进行./config配置操作
这是发现又报错了:

图片.png

原因:缺少OpenSSL库
解决方法:安装OpenSSL库

yum install openssl-devel  

一般devel表示该模块的开发包
安装完成后,我们继续在当前目录进行./config配置操作
经过一番折腾,我们的./config终于配置通过了
第五步:编译源码
将源代码编译为可执行程序,使用-j2参数,意味着我们使用两个逻辑内核来编译源码,再一定程度上加快编译速度

make -j2

实际上我们上一步配置完成后,系统提示我们使用gmake来进行编译,gmake与make都可以达到同样的编译操作目的

图片.png

我们可以参照它的需求来使用命令,同样可以加上j2参数:

gmake -j2

第六步:安装
执行完编译操作后,我们查看一下源代码目录

图片.png

我们编译好的应用文件、配置文件、依赖的??榫突岢鱿衷赽uild目录中,这时候我们将编译好的程序安装到指定目录(指定目录我们在配置那一步已经申明好了)

make install

安装完成后,openresty就会安装到/usr/local/openresty目录下:

图片.png

以上,我们就完成了如何通过源代码编译来进行安装我们的软件。

五、内核升级

升级Linux内核有两种方式:

  • 使用包管理器进行安装;
  • 使用源代码编译方式进行安装;
1. 使用包管理器安装内核

第一步:查看内核版本
使用命令:

uname -r

第二步:升级内核版本
直接使用命令:

yum install kernel

系统会返回yum仓库中,适合当前架构的最新内核版本,


图片.png

如果我们不想安装最新版本,我们想安装指定版本则使用命令:

yum install kernel-3.10.0

安装指定版本3.10.0的内核。

第三步:升级已经安装的其它软件包和补丁

yum update

有时候yum仓库没有最新的软件,我们还可以切换epel仓库进行安装,通过yum install epel-release来安装使用epel仓库,可以通过epel仓库来扩展yum仓库里的文件,一些常用的软件都可以通过eple仓库来进行安装;

2.源代码编译安装内核

第一步:安装依赖包
安装的时候报错,就新增一个包,所需要的包全部列在这

yum install gcc gcc-c++ make ncurses-devel openssl-devel elfutils-libelf-devel

第二步:下载并解压缩内核
(https://www.kernel.org)下载最新稳定版本的内核,内核版本在2.6以前,版本编号划分主版本、次版本(偶数代表稳定版,奇数代表不稳定版)、末版本,之后就没有这种划分了。

图片.png

我们选择5.7.2版本下载,然后进行解压缩

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.7.2.tar.xz
tar xvf linux-5.7.2.tar.xz -C /usr/src/kernels

第三步:配置内核编译参数

cd /usr/src/kernels/linux-5.7.2/
make menuconfig | allyesconfig | allnoconfig

menuconfig表示:图形化菜单选择配置
allyesconfig表示:只有系统有的功能全部都配置上
allnoconfig表示:只要最小的内核,什么功能都不要带,连启动都启动不了
第四步:使用当前系统内核配置

cp /boot/config-kernelversion.platform /usr/src/kernels/linux-5.7.2/.config

将当前系统以及有的内核配置复制到待安装的内核目录中并重命名为.config,这样就会减少配置的复杂的
第五步:编译
我们可以使用lscpu命令查看当前CPU的信息,CPU的个数:

使用命令:

make -j4 all

对所有的选项进行编译

第六步:安装内核

make modules_install  
make install

先安装内核所支持的???,然后在把内核自己安装过去,然后再自动修改启动的配置文件,安装完成后使用命令reboot让系统进行重启,并进入引导grub界面,选中最新的内核版本进入系统。
以上,我们使用源码编译安装内核就完成了~

·

最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351