[RHEL7基础篇-3] 包的安装与管理

[RHEL7基础篇-3] 包的安装与管理

  • 简介
  • rpm命令
  • yum命令
  • 源代码安装
    • 示例-1,ntfs-3g_ntfsprogs-2012.1.15的安装:
    • 示例-2,linux-5.4.11的安装:

简介

RHEL7拥有三种安装方式,分别为rpm、yum和源代码安装,这三种安装模式各有特点,其中yum命令安装最为好用,可以不用担心包之间的依赖关系,rpm命令安装需要手动的解决包之间的依赖关系,而源码安装则需要运行相应的脚本进行安装,下面将介绍这三种安装方法

rpm命令

RPM是Red-Hat Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了

> rpm -ivh package_name         #安装
> rpm -e package_name           #卸载
> rpm -qf                       #查询该文件属于哪个包
  a:which ls
  b:rpm -qf /usr/bin/ls
    coreutils-8.22-23.el7.x86_64
> rpm -Uvh package_name         #升级软件包
> rpm -qa package_name          #查询软件包
  rpm -qa | grep syslinux       #查询含有syslinux的软件包
> rpm -qi obexd-0.19-2.el6.i686 #查询该包头信息
> rpm -ql obexd-0.19-2.el6.i686 #查询该包包含哪些文件

以下为使用rpm安装内核的示例:
在RHEL7.6的镜像的Packages当中有RHEL内核的rpm包,我们只需要把镜像文件挂载到文件夹下就可以了,具体方法请参照[RHEL7基础篇-2]当中的挂载步骤,我已经把镜象挂载到/mnt/rhel7.6下了,下面将会安装名为kernel-debug-3.10.0-957.el7.x86_64的内核,下面为安装步骤

> rpm -ivh /mnt/rhel7.6/Packages/kernel-debug-3.10.0-957.el7.x86_64.rpm
#把新安装的内核调为默认内核
> cat /boot/grub2/grub.cfg | grep menuentry
> grub2-set-default "Red Hat Enterprise Linux Server (3.10.0-957.el7.x86_64.debug) 7.6 (Maipo)"
#查看当前设置的默认启动内核版本
> grub2-editenv list

yum命令

Yum全称为 Yellow dog Updater, Modified是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装

> yum list "*ackage_nam*"          #模糊查询
> yum grouplist package_name       #查询组套件
> yum -y install package_name      #安装包
> yum -y groupinstall package_name #安装组套件
> yum -y remove package_name       #卸载包

在使用yum前需要先建立yum库,下面为建库过程:

  1. yum客户端的配置
#后续必须为repo
> vim /etc/yum.repos.d/base.repo
####################
#baseurl值可以是:
#file:///mnt/iso                   #本地文件系统
#ftp://ip/rhel7.6/                 #ftp
#http://ip或域名                    #http
#示例-1
[base]
name=base-1
baseurl=file:///mnt/rhel7.6/
gpgcheck=0
#示例-2
[base]
name=base-2
baseurl=ftp://192.168.100.100/pub/rhel7.6/
gpgcheck=0
#示例-3
[base]
name=base-3
baseurl=http://vault.centos.org/7.6.1810/
gpgcheck=0
#建议使用示例-1
####################
#清空yum缓存并测试yum库
> yum clean all
> yum list
  1. yum服务器端的配置
#服务器端与客户端可为同一个
#RHEL6/7直接将镜像内容挂载到共享目录下,即可!
> mkdir /mnt/rhel7.6
> mount /dev/sr0 /mnt/rhel7.6
  • 注:版本要对应!客户端的操作系统要跟服务器端挂载的镜像版本一个对应!

以下为使用yum安装web组套件的示例:

#安装组套件或包时需要先查询yum库当中是否存在该组套件或包
> yum grouplist "*web*"
> yum -y groupinstall "Basic Web Server"

源代码安装

源代码安装通常为开发者把相关的程序代码压缩后发放出来,通常压缩包里面会包含安装手册与安装脚本,而源安装的最常用到的地方通常是最新的内核安装、一些没有收录进yum库当中的包和没有把代码打包成rpm包的程序等第三方软件所使用,例如ntfs-3g_ntfsprogs-2012.1.15这一个第三方软件,该软件并无收录入yum当中,也无打包成rpm,所以只能下载经过tar压缩过的源码包来进行源代码安装

#README文件为程序开发者的自述文件,绝对权威
#INSTALL文件为程序的安装手册,有一些程序没有
#例如linux的内核源码包,里面只有自述文件(README)、运维手册(MAINTAINERS)与一些版权相关的文件
> ./configure --prefix=/usr/local/      #检查与选择安装路径
> ./configure --help                    #脚本的帮助命令
> make                                  #开始安装的初始话工作(编译程序)
> make install                          #开始安装

示例-1,ntfs-3g_ntfsprogs-2012.1.15的安装:

#下载ntfs-3g_ntfsprogs-2012.1.15,在文章末尾有提供下载
#解压压缩包,参数的选择主要看的是压缩包的压缩模式,这里使用的-p参数类似与强制解压缩的功能,也可以使用-z参数解压缩
> tar -pxvf ntfs-3g_ntfsprogs-2017.3.23AR.4.tgz
> cd ntfs-3g_ntfsprogs-2017.3.23AR.4
> ./configure --prefix=/usr/local/ntfs-3g
> make
> make install
#测试是否安装成功,ntf然后按tab键补齐,可以补齐则为安装成功
#安装完成后的一些后续工作,如man的支持
#再安装完成后去到安装目录下,如果目录下有share目录则说明该第三方应用支持man,无则不支持
> cd /usr/local/ntfs-3g/share
#在share目录下应该存在manX(X代表数字)的目录
#进入该文件夹然后把里面的文件全都拷到/usr/share/man/下对应的manX目录下
> cd ./man8
> cp * /usr/share/man/man8/
#测试是否成功
> man ntfs-3g

示例-2,linux-5.4.11的安装:

  1. 首先需要在https://www.kernel.org/下载内核
    [RHEL7基础篇-3] 包的安装与管理_第1张图片
    下载完成后可以使用SecureCrt或者Xshell来远程链接服务器,使用rz(如果无效则需要安装lrzsz,运行yum -y install lrzsz.x86_64)来把下好的内核传输到系统当中
    [RHEL7基础篇-3] 包的安装与管理_第2张图片
  2. 准备配置文件、安装包组、配置内核选项
#解压内核压缩包
> tar -Jxvf linux-5.4.11.tar.xz -C /root
#准备文本配置文件.config
#/boot/config-3.10.0-957.el7.x86_64这个文件是在编译时定义内核的特性、功能的是否启用以及那些功能是一模块的形式安装还是直接安装到内核当中
#总的来说就是以该配置文件为模板,在此基础上来修改特性
#所以需要先把改模板拷贝到解压的/root/linux-5.4.11当中
> cp /boot/config-3.10.0-957.el7.x86_64 /root/linux-5.4.11/.config
#安装一些工具包/组
> yum list "*dev*"
> yum -y groupinstall "Development Tools"
> yum -y install ncurses-devel
#配置内核选项
> cd /root/linux-5.4.11
> make menuconfig
  • 注:当配置内核选项(make menuconfig)时有可能会出现错误,提示还有那个包没有安装,只需要用yum进行安装即可
    [RHEL7基础篇-3] 包的安装与管理_第3张图片
    下面开始定制内核的名字与NFS功能(默认不开启)
    [RHEL7基础篇-3] 包的安装与管理_第4张图片
    选中General setup回车进入,并修改内核版本名字
    [RHEL7基础篇-3] 包的安装与管理_第5张图片
    [RHEL7基础篇-3] 包的安装与管理_第6张图片
    [RHEL7基础篇-3] 包的安装与管理_第7张图片
    修改好自定义的内核名称后选中Ok回车,并返回主界面
    [RHEL7基础篇-3] 包的安装与管理_第8张图片
    选中File systems回车,开启NFS功能
    [RHEL7基础篇-3] 包的安装与管理_第9张图片
    进入目录后翻到最后,可以看到DOS/FAT/NT Filesystems(NFS文件系统)的选项,回车进入该选项的子目录
    [RHEL7基础篇-3] 包的安装与管理_第10张图片
    启用NFS功能,这里我们选择以模块方式启用NFS功能
    [RHEL7基础篇-3] 包的安装与管理_第11张图片
    [RHEL7基础篇-3] 包的安装与管理_第12张图片
    其他配置默认即可,选择Exit退出该界面
    [RHEL7基础篇-3] 包的安装与管理_第13张图片
    在上面的菜单界面当中修改的项,就相当于修改了.config
    在这里插入图片描述
  1. 开始编译
#在开始编译前要检查当前磁盘可用空间至少要有12G,不然会编译失败
#-j可限制同一时间的作业数,如make -j 8
> make

当初次编译时可能会出现某些包没有安装而导致的错误,只需要用yum来安装即可
在这里插入图片描述

#安装elfutils-libelf-devel.x86_64
> yum -y install elfutils-libelf-devel.x86_64
#安装完成后开始再次编译
> make

编译完成后文件的大小已经有足足12G了,所以磁盘可用空间一定要在12G以上
在这里插入图片描述

  1. 安装模块
#进行模块化安装
> make modules_install

安装完毕后在/lib/modules/下可以看到新的内核
在这里插入图片描述

  1. 安装内核相关文件
#在前面的编译当中编译出了bzImage
#接下来的安装将会把bzImage安装为/boot/vmlinuz-version-release
#以及生成initramfs-version-release.img文件
> make install

在这里插入图片描述
安装完成后,/boot/下会出现新内核的相关文件
[RHEL7基础篇-3] 包的安装与管理_第14张图片
修改新内核相关文件的DAC权限,以提高内核安全性

#修改新内核相关文件的DAC权限与原内核文件DAC权限相同
> ls -l /boot/
> chmod 0600 /boot/initramfs-5.4.11Kernel_For_Jove.img
> chmod 0600 /boot/System.map-5.4.11Kernel_For_Jove
> chmod +x /boot/vmlinuz-5.4.11Kernel_For_Jove

[RHEL7基础篇-3] 包的安装与管理_第15张图片
当安装生成完新内核的相关文件后,在/boot/grub2/grub.cfg当中,已经写入了新内核的相关配置
[RHEL7基础篇-3] 包的安装与管理_第16张图片
修改grub配置文件,使默认启动内核为新内核

#查看当前默认内核
> grub2-editenv list
#设置默认内核
> grub2-set-default "Red Hat Enterprise Linux Server (5.4.11Kernel_For_Jove) 7.6 (Maipo)"
#修改配置文件,并输出到/boot/grub2/grub.cfg当中
> grub2-mkconfig -o /boot/grub2/grub.cfg
#测试
> reboot

[RHEL7基础篇-3] 包的安装与管理_第17张图片
到此新内核已经编译成功,并且已经设置为默认内核了

  1. 卸载内核

当使用过程中遇到了各种问题,需要卸载旧内核或者当前内核时,应该做以下操作:

  • 删除/lib/modules/下不需要的内核库文件
  • 删除/usr/src/下不需要的内核源代码(若没有相关的文件则不需要删除)
  • 删除/boot/下不需要的内核的镜像、linuz与initramfs
  • 删除/boot/grub2/grub.cfg配置文件当中不需要的内核列表
    当完成以上4点后不需要的内核已经完全清除干净了,值得注意的是当前正在使用的内核请不要卸载,要前安装需要使用的内核后,再对需要卸载的内核进行卸载

相关文件下载链接:
https://pan.baidu.com/s/1Y9EnczHsDbWKl2tVeFUgEA

你可能感兴趣的:(#,Red,Hat,Enterprise,Linux,基础篇,redhat,linux,内核)