Linux 软件包的管理

1.RPM的基本概述

1.1 RPM介绍

RPMRedHat Package Manager的缩写,由红帽开发用于软件包的安装、升级、卸载与查询的工具。
包格式:xxx.rpm
命令: rpm

rpm包名的组成:
在这里插入图片描述我们通常是通过本地镜像或者联网方式获取、搭建企业私有的管理仓库平台。

1.2 其他类型的安装包

分类安装版本
rpm包预先编译打包,安装简单软件版本较低
源码包手动编译打包,安装繁琐软件版本随意
二进制包解压即可使用,安装简单不能修改源码(小工具,解压即用)

2.RPM包的管理命令

RPM命令含义
-i安装软件包
-v显示安装过程
-h显示安装进度条
-U升级软件包
-e卸载软件包

要注意,rpm不能处理依赖关系,(我们可以使用yum来解决依赖问题,后面会讲)通常我们会将-ivh安装软件包,-Uvh升级软件包结合起来使用。

2.1 rpm查询软件包

选项含义
rpm -q查看指定的软件包是否安装
rpm -qa查看系统中已安装的所有RPM软件包列表
rpm -qi查看指定软件的详细信息
rpm -ql查询指定软件包所安装的目录、文件列表
rpm -qc查询指定软件包的配置文件
rpm -qf查询文件或目录属于那个RPM软件(绝对路径查询)

3.YUM的基本介绍

3.1什么是YUM

yum/dnfRedHatCentos系统中的软件包管理器,它能够通过互联网下载.rpm格式包进行安装,并且可以自动处理其依赖关系。
#dnf是Centos 8的软件管理工具,同yum的作用一样,不过Centos 8明年官方也不维护了,具体情况可自行百度

3.2 什么是[YUM源|yum仓库]

要使用yum命令安装工具更新软件,需要一个包含各种rpm软件包的仓库,这个软件仓库我们一般称为yum源,当然这个源也可以是本地仓库,也可以是网络仓库。比如:
clientftp/http/file --> yum地址–> yum仓库(rpm包的集合)
简单来说就是客户使用ftp、http、file等协议通过yum地址找到yum仓库来安装自己需要的rpm包

配置一个仓库:就是配置一个源(地址)-----> 仓库
repo文件(baseurl地址 ----->互联网上的一个仓库 ----->有很多的rpm软件)

3.3 YUM配置文件

centos 7 yum的简单的主要的配置文件

[zabbix]
#仓库的名称,可以自定义
name=Zabbix Official Repository - \$basearch
#仓库的描述信息,$basearch是系统的硬件架构如(x86_64)
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/\$basearch/
#仓库的url地址,可以是file:// ftp:// http:// 等协议
enabled=1
#是否使用改yum源(0表示禁用,1表示激活)
gpgcheck=1
#是否使用软件签名 (0表示禁用,1表示激活)
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14F

详细的(看看就行,平常我们一般不修改yum的配置文件)

[root@localhost ~]# vim /etc/yum.conf 

[main]
cachedir=/var/cache/yum/$basearch/$releasever
#缓存目录
keepcache=0
#缓存软件包(1开启,0关闭)
debuglevel=2
#调试级别
#缓存目录
keepcache=0
#缓存软件包(1开启,0关闭)
debuglevel=2
#调试级别
logfile=/var/log/yum.log
#日志记录位置
exactarch=1
#检查平台是否兼容
obsoletes=1
#检查包是否废弃(相当于upgrade,允许更新陈旧的RPM包)
gpgcheck=1
#检查包来源是否合法,需要有制作者的公钥信息
plugins=1
#是否使用插件
installonly_limit=5
#同时可以安装5个软件包,最小为2,设置0或1则不限制
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
#追踪bug路径
distroverpkg=centos-release
#千万别乱改,Distro是发行版的意思,Ver是版本Version这个单词的缩写,Pkg是Package的意思,合起来就是,distroverpkg这>
个参数是指定从哪里获取系统版本相关的信息,是从centos-release这个包里的文件获取的,centos-release这个包里面有很多release的文件

#这里有两个变量我们需要了解一下$basearch 这个的意思是我们系统的硬件架构(cpu指令集),使用命令arch得到

[root@localhost ~]# arch
x86_64

还有$releasever表示当前系统的发行版本

[root@localhost ~]# cat /proc/version 
Linux version 3.10.0-1160.31.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Thu Jun 10 13:32:12 UTC 2021

4 YUM日常操作

命令含义
yum list查询仓库中的所有软件包
yum list installed查询所有已安装至系统的软件包
yum provides查询系统命令属于那个软件包可以在当前系统,也可以不在
yum install -y通过仓库获取软件包安装 -y 非交互
yum localinstall安装本地的rpm包如果rpm包存在依赖,会通过已有的仓库获取解决依赖关系
yum reinstall重新安装软件
yum check-update对比已安装的软件和yum仓库的软件,有哪些需要升级
yum update -y更新软件包(直接使用会更新系统所有的软件包包括内核,一般刚装完系统使用
yum remove删除软件包
yum clean all清理yum缓存

yum管理组包

命令含义
yum groups list显示可用的包组
yum groups install安装一整个包组的软件
yum groups remove删除包租

yum管理仓库

命令含义
yum repolist显示yum源可用的软件仓库
yum repolist all显示yum源所有的软件仓库
yum-config-manager --enable启动仓库(一般在repo文件中修改enable参数0 1)
yum-config-manager --disable关闭仓库(一般在repo文件中修改enable参数0 1)

yum管理历史记录

命令含义
yum history查看操作记录
yum history info number查看操作的详细记录
yum history undo number撤销操作

5.构建yum仓库实践

5.0yum缓存软件包

1.方式一:通过修改yum全局配置文件
2.方式二:如果yum下载改软件包至本地,不进行安装
#一般不用缓存的方式,下载了的软件包自动缓存,没什么用

5.1 搭建本地的yum仓库

很多时候刚安装的Linux系统不能联网,但需要安装相应环境的软件包,这个时候我们就可以利用光盘来制作一个本地yum仓库。
。方式一:光盘挂载上,到该目录下直接 rpm -ivh /path(路径)/xx.rpm
。方式二:将光盘制作成一个本地仓库,提供本地使用;自动解决依赖关系;

1.挂载镜像

[root@localhost ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 1.1G     0  1.1G    0% /dev
tmpfs                    1.1G     0  1.1G    0% /dev/shm
tmpfs                    1.1G  9.4M  1.1G    1% /run
tmpfs                    1.1G     0  1.1G    0% /sys/fs/cgroup
/dev/mapper/centos-root   50G  2.1G   48G    5% /
/dev/mapper/centos-home   47G   33M   47G    1% /home
/dev/sda1               1014M  160M  855M   16% /boot
tmpfs                    213M     0  213M    0% /run/user/0
/dev/sr0                 4.2G  4.2G     0  100% /mnt

2、备份原有的仓库

[root@localhost ~]# gzip /etc/yum.repos.d/*
#将所有的yum源都打包,这样就使用不了了
#gzip打包并且删除源文件

3.使用yum-config-manager命令可快速添加一个本地仓库

[root@localhost yum.repos.d]# yum install yum-utils -y
[root@localhost yum.repos.d]# yum-config-manager --add-repo="file:///mnt"
已加载插件:fastestmirror
adding repo from: file:///mnt

[mnt]
name=added from: file:///mnt
baseurl=file:///mnt
enabled=1

4.我们也可以直接去编译一个.repo文件,将仓库详细存储至改文件

[root@localhost yum.repos.d]# vim /etc/yum.repos.d/cdrom.repo

[cdrom] 
#仓库名称
name=This is local cdrom
#仓库的描述信息
baseurl=file:///mnt
#仓库的url地址,可以说file:// ftp:// http://等等协议(file//是协议/mnt是路径)
enable=1
#是否使用该yum源(0代表禁用,1代表激活)
gpgcheck=0
#是否验证软件签名(0代表禁用,1代表激活)

5.生成缓存信息,然后使用yum安装软件测试

root@localhost yum.repos.d]# yum makecache

在这里插入图片描述

5.2 搭建企业yum仓库

很多时候不仅仅是一台机器无法上网,而是很多机器都无法上网,但是都有联网下载的需求,一台一台的挂载光盘很难实现,所有我们需要构建一个企业级的yum仓库为多台客户端提供服务
在这里插入图片描述。本地光盘提供基础软件包:base
。yum缓存提供常用软件包:nginx、zabbix、docker

5.2.1 环境准备

系统ip角色
centos710.0.0.100yum仓库服务端
centos710.0.0.99yum仓库客户端

5.2.2服务端操作

1.关闭iptables防火墙与selinux

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

2.安装ftp服务,启动并加入开机启动

[root@localhost ~]# yum -y install vsftpd
[root@localhost ~]# systemctl start vsftpd
#将ftp启动
[root@localhost ~]# systemctl enable vsftpd
#将ftp加入开机自启

3.首先提供基础的base软件包

[root@localhost ~]# mkdir -p /var/ftp/centos7
[root@localhost ~]# mount /dev/cdrom /mnt
[root@localhost ~]# cp -rp /mnt/Packages/*.rpm /var/ftp/centos7
#将光盘的所有rpm软件包拷贝到/var/ftp/centos7目录下

4.提供第三方源的rpm软件包,通过脚本下载方式实现;

[root@localhost ftp]# mkdir zabbix
[root@localhost ftp]# curl -s https://mirrors.aliyun.com/zabbix/zabbix/5.4/rhel/7/x86_64/ |grep "rpm" |awk -F '"' '{print $2}' |sed -r 's#(.*)# wget -O /var/ftp/zabbix/\1 https://mirrors.aliyun.com/zabbix/zabbix/5.4/rhel/7/x86_64/\1#g' |bash
#curl是web页面字符下载工具,-s表示不打印错误输出

如果上面的比较麻烦,我们也可以通过脚本的方式来实现

[root@localhost ftp]# mkdir ops
[root@localhost ftp]# vim wget_rpm_scirpts.sh 
#!/usr/bin/bash

get_zabbix_rpm_url=https://mirrors.aliyun.com/zabbix/zabbix/5.4/rhel/7/x86_64/
rpm_name=$(curl -s ${get_zabbix_rpm_url} |grep "rpm" | awk -F '"' '{print $2}')
rpm_dir=/var/ftp/ops
#1.获取包的名称
#2.下载的地址
#3.将下载的包和包组织在一起,使用wget下载到指定位置
for name in ${rpm_name}}
do
        if [ ! -d ${rpm_dir} ];then
                mkdir -p ${rpm_dir}
        fi
        wget -O ${rpm_dir}/${name} ${get_zabbix_rpm_url}${name}
done

再安装一个jenkins

[root@localhost ftp]# mkdir jenkins
[root@localhost ftp]# vim wget_jenkin.sh 
#!/usr/bin/bash
rpm_url=https://mirrors.aliyun.com/jenkins/redhat/
rpm_pkg=$(curl -s https://mirrors.aliyun.com/jenkins/redhat/ |grep "rpm" | awk -F '"' '{print $2}')
rpm_dir=/var/ftp/jenkins
#1.获取包的名称
#2.下载的地址
#3.将下载的包和包组织在一起,使用wget下载到指定位置
for i in ${rpm_pkg}
do
        cd ${rpm_dir} && \
        wget ${rpm_url}/${i}
done
#获取到名称到设置的目录下下载软件包,然后循环;

5.提供第三方的rpm软件包,采用Rsync同步科大源实现,后期结合定时任务,定点同步互联网最新软件包

#rsync同步的方式
[root@localhost ftp]# rsync -ave rsync://mirrors.ustc.edu.cn/repo/nginx/ /var/ftp/

6.将软件包目录创建为yum仓库,安装createrepo

yum -y install createrepo
  createrepo /var/ftp/ops
  createrepo /var/ftp/jenkins/
  

5.2.3客户端操作

客户端仅需将yum源执向本地服务器,即可使用本地服务器提供的软件包
1.客户端配置并使用base基础源

[root@localhost ~]# gzip /etc/yum.repos.d/*
#将所有的yum源都打包,这样就使用不了了
#gzip打包并且删除源文件
[root@localhost yum.repos.d]# vim /etc/yum.repos.d/centos7.repo
[centos7]
name=centos7_base
baseurl=ftp://10.0.0.100/centos7
gpgcheck=0

2.客户端配置并使用zabbix jenkins等源

[root@localhost yum.repos.d]# vim ops.repo 
[zabbix]
name=local ftpserver
baseurl=ftp://10.0.0.100/zabbix
gpgcheck=0

[jenkins]
name=local ftpserver
baseurl=ftp://10.0.0.100/jenkins
gpgcheck=0

6.源码包管理实践

6.1什么是源码包

源码包是开发编写好的程序源代码,但并没有将其编译为一个能正常使用的二进制工具。

6.2为何需要源码包

1、部分软件官网仅提供源码包,需要自行编译并安装
2、部分软件在新版本有一些特性还没有来得及制作成rpm,可以自行编译软件使用其新特性。
3、源码包–>打包成一个rpm格式;
源码包优点:
1、可以自行修改源代码
2、可以定制需要的相关功能
3、新版本优先更新源码
缺点:
安装复杂
标准化实施困难,自动化就无法落地
################
我们一般在官网获取源码包

6.3 源码包如何安装

在这里插入图片描述
###################
适用于大部分源码包,并非所有

6.6 Nginx源码包编译

1、基础环境准备,下载nginx源码包

[root@localhost ~]# wget http://nginx.org/download/nginx-1.20.1.tar.gz
[root@localhost ~]# yum install -y gcc gcc-c++ make prce-devel zlib-devel openssl-devel

2、解压nginx源码包,并进入相应目录

[root@localhost ~]# tar xf nginx-1.20.1.tar.gz 
[root@localhost ~]# cd nginx-1.20.1

3、配置相关的选项,并生成Makefile

[root@localhost nginx-1.20.1]# ./configure --prefix=/opt/nginx-1.20.1

4、根据Makefile文件将软件编译为可执行的二进制程序

[root@localhost nginx-1.20.1]# make

5、将编译好的二进制文件拷贝至对应的目录

[root@localhost nginx-1.20.1]# make install

7.Ubuntu软件包管理

Centos与Debian(ubuntu)的区别:

操作系统Centos7Debian/Ubuntu
软件包后缀*.rpm*.deb
源配置文件/etc/yum.conf/etc/apt/sources
网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0/etc/netplan/00-installer-config.yaml
创建用户默认使用用户家目录、解释器bash默认不使用用户家目录、解释器为sh
防火墙规则默认规则默认没有任何规则
权限root或者普通用户默认普通用户权限
SSH默认允许 root 登陆默认不允许 root 登 陆
selinux/etc/selinux/config 没有 selinux
更新软件包列表yum makecacheapt update
安装软件yum install packageapt install packag
安装已下载的软件包rpm -ivh pkg.rpmdpkg -i pkg.deb
安装已下载的软件包yum localinstallpkg.rpmapt install ./pkg.d
删除软件包yumremovepackageaptremove|purgpackage

7.3 Ubuntu软件包管理

Debian软件包的包名叫 deb,类似于 rpm 包。对于
deb包的管理方式有 dpkg、apt两种方式
dpkg:package manager for Debin,可以实
现安装、删除,但无法解决依赖项;
apt:advanced Packaging Tool,功能强大的
软件管理工具,类似于 yum;
1、使用dpkg安装软件包

root@ubuntu:~# dpkg -i package.deb

2.使用 dpkg 删除软件包

#不建议、不自动卸载依赖它的包 
root@ubuntu:~# dpkg -r package.deb
 # 删除包(包括配置文件)
 root@ubuntu:~# dpkg -P package.deb

2.使用 dpkg 查看软件包

#列出当前已安装的包,类似于rpm -qa 
root@ubuntu:~# dpkg -l 

#列出该包中所包含的文件,类似于rpm -ql 
root@ubuntu:~# dpkg -L package

#查看文件所属哪个包,类似于rpm -qf
root@ubuntu:~# whereis ping 
root@ubuntu:~# dpkg -S /bin/ping

7.3.2 apt包的管理

早期Ubuntu 使用 apt-get 命令来管理软件包,在
Ubuntu 16.04 发布时,引入了新的包管理命令apt,为什么要引入 apt 命令呢?
因为早期 Linux 包管理命令都被分散在了 apt-get、 apt-cache、apt-config 这三条命令当中。那么 apt 命令的引入就是为了解决命令过于分散的问题。
简单来说就是:apt = apt-get、apt-cache、apt- config 中最常用命令选项的集合。

apt 命令apt-get 命令命令的功能
apt installapt-get install安装软件包
apt removeapt-get remove移除软件包
apt purgeapt-get purge移除软件包及配置文件
apt updateapt-get update刷新存储库索引
apt upgradeapt-get upgrade升级所有可升级软件包
apt autoremoveapt-get autoremove自动删除不需要的包
apt fullupgradeapt-get distupgrade在升级软件包时自动处理依赖关系
apt searchapt-cache search搜索应用程序
apt showapt-cache show显示安装细节

7.3.3 apt 使用实例

1.检查当前ubuntu版本

w@xw:~$ lsb_release -a 
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04 LTS
Release:	20.04
Codename:	focal

2.根据Ubuntu版本配置国内仓库地址阿里仓库配置指南

#手动修改如下配置文件内容
root@example:~# vim /etc/apt/sources.list
(focal 版本、其余是软件包存储的位置)
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src 
http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse 

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
 
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse 

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse 

#更新yum源 
root@example:~# apt update

3.使用 apt 命令安装进行软件安装

root@ubuntu:~# apt search desktop
root@ubuntu:~# apt install xubuntu-desktop -y
root@ubuntu:~# apt install samba vsftpd apache2 -y 

centos:httpd 
ubuntu:apache2

3.使用 apt 卸载软件

#并不会移除配置文件 
root@ubuntu:~# apt remove vsftpd -y 
# 清理所有与vsftpd相关的配置 
root@ubuntu:~# apt purge vsftpd -y
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值