7、软件包管理

7、软件包管理

概述

日常工作中遇到最多的应该就是软件的安装卸载,升级等操作。常见的软件包安装分为两类:

源码安装:

源码包安装软件的好处在于可以更改源码,改为适合你的环境,另一个源码包安装的好处是,源码包相比于现有的编译的二进制更新包,功能更多。一般在生产环境,特别是功能类服务器用的多。但编译过程较为负责需要解决环境的问题,要求较高。

二进制包安装

软件的发布厂商都是将编译好的软件放到平台上,提供下载,这样的好处就是用户得到软件之后可以直接安装,不需要对软件源码进行编译。

本文涉及的是linux的二进制包的安装方法。

linux分为多个发行版本,不同的发行版对软件包的管理命令或者管理方式是不同的,但都是管理二进制的软件包。

linux所有发行版本中最流行的三个:

rhel,centos,redora:二进制包是以rpm结尾 yum(dnf)

opensuse,sels:二进制包是以rpm结尾 zypper

Debian,ubuntu:二进制包是以deb结尾 dpkg apt

rhel可以安装以deb结尾的二进制包吗?

本质上只要软件包的架构和cpu的架构匹配就可以安装,而且都是二进制包,唯一不一样的就是可能需要安装对应的软件包管理工具,本文的内容就是通过rpm命令管理软件包

学会看rpm包

当第一眼看见rpm包的时候就应该能了解一些基本信息

系统安装光盘就能看到rpm包

通过rpm包名字了解,版本号之前的是包名

xfsprogs-4.19.0-2.el8.i686.rpm

xfsprogs-4.19.0-2.el8.x86_64.rpm

xfsprogs-devel-4.19.0-2.el8.i686.rpm

xfsprogs-devel-4.19.0-2.el8.x86_64.rpm

一般来说xfsprogs是rpm的主包,xfsprogs-devel就是rpm的辅包(辅助包),一定要安装主包,像是xfsprogs-devel就是rpm的辅包,辅助包要不要安装取决于主包是否依赖于辅助包,如果主包依赖补助包的内容,那么像安装主包,就一定要安装辅助包,如果一个主包有n个辅助包,那么如果安装主包,对于主包没有依赖的辅助包,就可以选择安装

xfsprogs-4.19.0-2.el8.i686.rpm

版本号后边的数字表示该软件的发型次数

xfsprogs-4.19.0-2.el8.i686.rpm

发行次数后边的.el8表示该rpm包适用于哪个操作系统平台(但并不绝对)

xfsprogs-4.19.0-2.el8.i686.rpm

i686或者i386或者x86_64就表示该软件包的位数

i686或者i386表示是32位的软件

x86_64表示的是64位的软件

如果只有x86,没有带64,指的就是32位

64位的操作系统可以安装32位和64位的软件

32位的操作系统只能安装32位的软件

yum-4.0.9.2-5.el8.noarch.rpm

noarch适用于任何cpu的架构,基本上其他的linux发行版也可以装上

noarch就表示适用于任何架构

rpm包的安装

rpm包的安装

/dev/cdrom 是个链接地址

ls -l /dev/cdrom

创建一个/iso目录,用来挂载

mkdir /iso

挂载光盘到/iso文件

mount /dev/sr0 /iso

可以使用光盘自带的rpm包进行学习

/iso/BaseOS/Packages光盘自带rpm包所在路径

rpm -ivh xz-5.2.4-3.el8.x86_64.rpm

  • i 表示install
  • v 表示显示显示详细信息
  • h 表示显示进度

rpm包的卸载

rpm -evh xz

  • e 表示卸载
  • v 表示详细信息
  • h 表示进度

rpm包是有依赖性的

安装的依赖性:

树状依赖:

A依赖B,B依赖C

从最低层开始安装,先装c,再装b,再装a

环装依赖:

A依赖B,B依赖C,C依赖A

一起安装

模块依赖:

装A软件,需要B软件里的某个函数或者模块,或者函数库

卸载的依赖:

树状依赖:

安装时A依赖B,B依赖C,卸载时,直接卸载C不能卸载

依赖性问题是rpm包管理最恶心的问题,所以为了解决这个问题,我们又自动化解决包管理工具yum(centos 或者rhel)yellow dog updater manager

rpm包的信息查看(远远比安装和卸载重要)

rpm的包名和包全名

包全名:xz-5.2.4-3.el8.x86_64.rpm

包名:xz

当rpm包没被安装前,rpm命令操作的都是包全名

当rpm被安装后,rpm操作的都是包名

查看已安装的软件包的信息

rpm -qi 包名

查看未安装的软件包的信息

rpm -qpi 全包名

  • q 表示query
  • i 表示information
  • p 表示package
  • l 表示rpm安装后的安装路径
  • f 表示根据文件的名字反推出安装包
  • -force 强制安装

rpm -qa 列出所有安装在系统中的rpm包

rpm -qa | grep name 筛选系统中是否有你想查看的软件包

rpm -ql 包名

rpm -qpl 包全名

查看net-tools里面都有哪些命令

rpm -ql net-tools | grep bin

查看rm命令是哪个安装包安装的

rpm -qf /bin/rm

yum管理rpm包

yellow dog updater manager

yum是一个工具,可以理解为一个数据库客户端工具

yum的底层仍然是rpm,如果没有rpm功能,那么yum也是个废物,无法使用

yum诞生的目的就是能自动解决rpm的依赖性关系

库的概念(repository)

如何提高库的查找效率

所谓软件仓库,包含两部分,第一部分就是左右软件包(rpm),第二部分指的就是所有软件包的元数据,元数据相当于所有软件包的名字和依赖关系,元数据文件的大小远远小于整个仓库文件的大小

yum就是访问软件仓库的元数据,进而根据元数据里面的记录自动解决软件包的依赖关系

yum仓库的搭建

yum并没有从0创建一个仓库的能力,仓库的本质是rpm包+repodata元数据

必须 有rpm包和repodata元数据,yum才能所谓的“搭建”一个软件仓库

条件1:rpm包

条件2:repodata

光盘自带了rpm包和repodata,所以我们可以通过光盘搭建软件仓库,所谓搭建软件仓库,就是将rpm包和repodata放到一个位置,然后yum指定repodata的路径

yum的配置文件/etc/yum.conf

yum的仓库文件所在目录是/etc/yum.reops.d/

该目录是存放仓库文件的,仓库文件就是指向repodata所在路径的文件,仓库文件必须以.repo结尾

多个仓库可以放到同一个repo文件中,也可分别放置到不同的repo文件中

仓库文件的语法

创建本地仓库

cd /etc/yum.reps.d

rm -rf *

vi iso.repo

[ergou]

name = ergou’s repo

#默认是yes

enable = yes

#生产环境要打开

gpgcheck = 0

#baseurl is a repodata location

#baseurl is not a repodata path

baseurl= file:///iso/BaseOS/

[goudan]

name = goudan’s repo

#默认是yes

enable = yes

#生产环境要打开

gpgcheck = 0

#baseurl is a repodata location

#baseurl is not a repodata path

baseurl= file:///iso/AppStream/

vi iso.repo

[ergou]

name = ergou’s repo

enable = yes

gpgcheck = 0

baseurl = file:///iso/BaseOS

查看仓库

yum repolist 查看仓库信息

yum list 可以查看仓库中所有的软件,并创建cache(缓存)

有了cache之后,安装软件就可以补全

yum clean all 清空缓存

yum makecache 加载缓存

yum search core 搜索带有core关键字的rpm

yum 不指定仓库的情况下,默认搜索所有仓库

yum provides rm 查看rm命令所在的包,前提是你的仓库足够完善,你才能搜索到想要的东西

yum install pkg-name 安装包

yum delete pkg-name

yum remove pkg-name 卸载包

使用internet上的软件仓库

先安装yum工具包才能使用yum-config-manager

yum -y intstall yum-utils

创建一个repo文件

yum-config-manager --add-repo=[https://mirrors.tuna.tsinghua.edu.cn/centos/8/cloud](https://mirrors.tuna.tsinghua.edu.cn/centos/8/cloud)/x86_64/openstack-train/

yum-config-manager -h 帮助

rhel 系统虽然能连接internet上的软件仓库,但是安装会有问题

rhel正解还是使用订阅命令去连接到RHN,访问红帽的官方软件仓库

subscription-manager -h

自己玩可以用epel进行,比较全面

epel(extra pacakages for enterprise linux)fedora 的源

局域网软件仓库搭建的必要性

同步internet上的软件仓库

1、搭建一个internet上的软件仓库

[train]

name=train

baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8/cloud/x86_64/openstack-train/

enabled=1

gpgcheck=0

mkdir /openstack-train/

reposync 将互联网的仓库同步到本地

reposync --repo train -p /openstack-train/

  • -repo 表示repo的名字
  • p 表示同步的路径

找到所有以rpm结尾的文件,并移动到当前目录下

find ./ -name *.rpm -exec mv {} . \;

自己根据rpm创建repodata

yum -y install createrepo

该目录下要有rpm包才可以

createrepo -v /openstack-train/

通过一个网络服务将repo共享出去

通过httpd搭建web服务将其共享出去

#yum安装本地的rpm包(rpm包不在软件仓库中)

[root@ssh-client ~]# yum install teamviewer.x86_64.rpm

[root@ssh-client ~]# yum history

[root@ssh-client ~]# yum history info 11

[root@ssh-client yum.repos.d]# yum history undo historyid

[root@ssh-client ~]# yum -y reinstall coreutils

[root@ssh-client ~]# yum update

[root@ssh-client ~]# yum group list

yum只能单线程安装软件

如果当前yum在安装软件(处于未完成状态),你就不能在另⼀个终端继续使⽤yum

因为linux是⼀个多⽤户的操作系统,你在yum操作,别⼈也可能也在yum操作。

就有可能出现软件包安装冲突问题

A⽤户要安装AA软件-

B⽤户要安装BB软件-

在早期的rhel版本,我们使⽤的yum命令是真正的yum操作

在rhel8版本,我们使⽤的所谓的yum命令,实际上是dnf命令

[root@ssh-client ~]# ls -l /bin/yum

lrwxrwxrwx. 1 root root 5 Feb 14 2019 /bin/yum -> dnf-3

[root@ssh-client ~]# ls -l /bin/dnf

lrwxrwxrwx. 1 root root 5 Feb 14 2019 /bin/dnf -> dnf-3

yum -y install-> dnf-3 -y install

装⼀些软件

安装teamviewer

即使rpm包不在仓库里面,我们也可以通过yum安装,而且yum可以使用仓库中线与rpm包解决不在库中的rpm包的依赖性

vncserver

[root@ssh-client ~]# yum -y install tigervnc-server

[root@ssh-client ~]# rpm -ql tigervnc-server

[root@ssh-client ~]# systemctl stop firewalld

[root@ssh-client ~]# setenforce 0

[root@ssh-client ~]# vncserver :10

[root@ssh-client ~]# netstat -tunlp | grep 59

httpd->web 默认80端⼝ tcp

3P(python perl php)

lamp->linux + apache + mysql + php

Lnmp->linux + nginx + mysql + php

[root@ssh-client ~]# yum -y install httpd

修改配置⽂件

[root@ssh-client ~]# cd /var/www/html/

[root@ssh-client ~]# netstat -tunlp | grep 59

tcp 0 0 0.0.0.0:5910 0.0.0.0:*

LISTEN 43497/Xvnc

tcp6 0 0 :::5910 ::: *

LISTEN 43497/Xvnc

[root@ssh-client ~]# yum -y install httpd

修改配置⽂件

[root@ssh-client ~]# cd /var/www/html/

[root@ssh-client html]# echo test >> index.html

[root@ssh-client html]# systemctl restart httpd

[root@ssh-client html]# systemctl enable httpd

#为什么是index.html

httpd的主配置⽂件是/etc/httpd/conf/httpd.conf

DirectoryIndex index.html

将上⾯的部分改成下⾯的内容,就可以让默认⽹⻚⽂件变成goudan.html

DirectoryIndex goudan.html

[root@ssh-client html]# systemctl restart httpd

当我们访问web服务器的根的时候

http://192.168.199.109

会默认检索web服务器根下⾯的默认⽹⻚⽂件,由于我们将默认⽹⻚⽂件更改成了goudan.html,所以如果web服务器的根下没有goudan.html就不会显示默认⽹⻚内容.

配置⽂件中

DocumentRoot “/var/www/html”

上⾯参数指定的就是web服务器的根⽬录

如果你想让你的web服务器提供⼀个下载⽂件的功能

vsftpd->ftp 默认21端⼝,20端⼝ tcp

[root@ssh-client ~]# yum -y install vsftpd

[root@ssh-client ~]# systemctl restart vsftpd

配置⽂件所在位置

/etc/vsftpd/vsftpd.conf

开启匿名⽤户连接

anonymous_enable=YES

tftp 69 udp

⽣产环境中tftp是必备服务,tftp+dhcp+ftp/http/nfs

pxe+kickstart批量⾃动部署服务器操作系统

[root@ssh-client html]# yum -y install tftp-server

[root@ssh-client html]# rpm -ql tftp-server

[root@ssh-server ~]# systemctl start tftp

[root@ssh-server ~]# netstat -tunlp | grep 69

安装tftp客户端

[root@ssh-client ~]# yum -y install tftp

tftp不是⽤来传⼤⽂件的

[root@ssh-client ~]# tftp 192.168.199.144

tftp> get 123

tftp> quit

dhcpd->dhcp

[root@ssh-server ~]# yum -y install dhcp-server

配置⽂件

/etc/dhcp/dhcpd.conf

找到配置⽂件模板

[root@ssh-server ~]# rpm -ql dhcp-server | grep example

/usr/share/doc/dhcp-server/dhcpd.conf.example

/usr/share/doc/dhcp-server/dhcpd6.conf.example

[root@ssh-server ~]# ip a a 1.1.1.1/24 dev ens224

[root@ssh-server ~]# ip a show ens224

[root@ssh-server ~]# cat /etc/dhcp/dhcpd.conf

[root@ssh-server ~]# netstat -tunlp | grep 67

dhcp客户端的操作

yum update 将所有安装的软件更新到本仓库最新版本

yum upgrade 更新操作系统

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值