前言
这部分让我们来了解Linux中软件管理的相关知识吧~
VX: wenjinworkon
目录
软件包和包管理
1.1 软件包介绍
软件包由一个基本配置和若干可选部件构成,既可以是源代码形式,也可以是目标码形式。用户手册和指南等文档是软件包的重要组成部分。此外,软件包的维护及技术支持也是非常必要的。
软件包 在系统管理中,软件包的管理是最重要的,是系统管理的基础的基础;只有我们学会软件包的管理才能谈得上其它的应用;本文以目录式的文档格式,列出新手弟兄所面对的软件包的安装、更新、查询相对的文档,以及几个常用的软件包管理工具,比如system-cofig-packages 、yum 、ppapt
1.2 软件包的文件分类
- 二进制文件/源码包
- 配置文件
- 帮助文件
- 库文件
利用cpio工具查看包文件列表
rpm2cpio 包文件|cpio –itv 预览包内文件
rpm2cpio 包文件|cpio –id "*.conf" 释放包内文件
1.3 软件包管理工具
1.3.1 软件包管理工具
将编译好的应用程序的各个组成部分打包成一个或几个程序包,通过软件包管理工具可以便捷高效的实现程序包的安装,卸载,查询,升级和校验等操作
- Redhat:rpm文件 --> rpm包管理器
- Debian: deb文件--> dpkg包管理器
1.3.2 rpm包的命名格式
name-VERSION-release.arch.rpm
VERSION: major.minor.release
release:release.OS
arch:x86: i386, i486, i586, i686
x86_64: x64, x86_64, amd64
powerpc: ppc
跟平台无关:noarch
例
bash-4.4.19-7.el8.ppc64le.rpm
bc_1.07.1-2_amd64.deb
bc_1.07.1-2_s390x.deb
1.4 软件包的分类
软件包为了方便管理和使用,进行了软件分类,放在不同的子包中
包的分类
- Application-VERSION-ARCH.rpm: 主包
- Application-devel-VERSION-ARCH.rpm 开发子包
- Application-utils-VERSION-ARHC.rpm 其它子包
-
Application-libs-VERSION-ARHC.rpm 其它子包
1.5 软件包的依赖
软件包可能不能独立使用,可能存在一定的依赖关系,如:A包依赖B包,B包依赖C包,C包依赖A包
安装软件包时,如因为缺少依赖的包,可能导致软件包安装失败
解决依赖的包管理工具:
- yum:解决rpm格式的包管理工具
- dnf:Centos 8以上版本代替yum工具
- apt:解决deb格式的包管理工具
1.6 获取软件包的方法
软件包获取途径如下:
1.6.1 ISO镜像或官方网站
Centos:
https://www.centos.org/download/
http://mirrors.aliyun.com
https://mirrors.huaweicloud.com/
https://mirror.tuna.tsinghua.edu.cn/
Ubuntu:
http://cdimage.ubuntu.com/releases/
http://releases.ubuntu.com
1.6.2 第三方组织提供
https://fedoraproject.org/wiki/EPEL
https://mirrors.aliyun.com/epel/
https://mirrors.cloud.tencent.com/epel/
1.6.3 包搜索引擎
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/
1.6.4 DIY制作
将源码文件,利用工具,如:rpmbuild,fpm 等工具制作成rpm包文件
rpm包管理器
Centos系统下rpm包管理工具
2.1 安装
格式:
rpm {-i|--install} [install-options] PACKAGE_FILE…
选项:
-v: verbose
-vv:
-h: 以#显示程序包管理执行进度
常用组合:
rpm -ivh PACKAGE_FILE ...
安装时附加选项:
--test: 测试安装,但不真正执行安装,即dry run模式
--nodeps:忽略依赖关系
--replacepkgs | replacefiles
--nosignature: 不检查来源合法性
--nodigest:不检查包完整性
--noscripts:不执行程序包脚本
%pre: 安装前脚本 --nopre
%post: 安装后脚本 --nopost
%preun: 卸载前脚本 --nopreun
%postun: 卸载后脚本 --nopostun
2.2 升级和降级
rpm包升级
格式:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
rpm {-F|--freshen} [install-options] PACKAGE_FILE...
选项:
upgrade:安装有旧版程序包,则"升级",如果不存在旧版程序包,则"安装"
freshen:安装有旧版程序包,则"升级", 如果不存在旧版程序包,则不执行升级操作
--oldpackage:降级
--force: 强制安装
常用组合:
rpm -Uvh PACKAGE_FILE ...
rpm -Fvh PACKAGE_FILE ...
2.3 包查询
格式:
rpm {-q|--query} [select-options] [query-options]
select-options:
[select-options]
-a:所有包
-f:查看指定的文件由哪个程序包安装生成
-p rpmfile:针对尚未安装的程序包文件做查询操作
query-options:
[query-options]
--changelog:查询rpm包的changelog
-c:查询程序的配置文件
-d:查询程序的文档
-i:information
-l:查看指定的程序包安装后生成的所有文件
--scripts:程序包自带的脚本
--last 最后安装的包
--changelog 安装包的变更历史
#和CAPABILITY相关
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
--provides:列出指定程序包所提供的CAPABILITY
-R,--requires 查询指定的程序包所依赖的CAPABILITY
常用查询方法:
-qa
-q PACKAGE
-qi PACKAGE
-qc PACKAGE
-ql PACKAGE
-qd PACKAGE
-q --scripts PACKAGE
-qf FILE
-qpi PACKAGE_FILE
-qpl PACKAGE_FILE, ...
2.4 包卸载
格式:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test]
PACKAGE_NAME ...
注意:当包卸载时,对应的配置文件不会删除, 以FILENAME.rpmsave形式保留
rpm -K|--checksig rpmfile
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
2.5 数据库维护
/var/lib/rpm
可以重建数据库
rpm {--initdb|--rebuilddb}
initdb: 初始化,如果事先不存在数据库,则新建之,否则,不执行任何操作
rebuilddb:重建已安装的包头的数据库索引目录
yum与dnf
Redhat使用了yum和dnf方法解决包依赖关系
3.1 yum源配置
配置文件
/etc/yum.conf #为所有仓库提供公共配置
/etc/yum.repos.d/*.repo: #为每个仓库的提供配置文件
repo配置文件
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL #若gpgcheck=0,此出不配置也可以
本地的yum服务器的baseurl形式:
file:// 本地路径
http://
https://
ftp://
注意:yum仓库指向的路径一定必须是repodata目录所在目录
搭建本地仓库
#挂载光盘至某目录,如/mnt/cdrom
mount /dev/cdrom /mnt/cdrom
#创建配置文件
[root@centos7 ~]#vim /etc/yum.repos.d/centos7.repo
[CentOS7]
name=CentOS 7
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1
yum-config-manager命令
快捷生成yum仓库的配置文件和启动或关闭仓库,来源于yum_utils包
格式:
#增加仓库
yum-config-manager --add-repo URL或file
#禁用仓库
yum-config-manager --disable "仓库名"
#启用仓库
yum-config-manager --enable "仓库名"
3.2 yum相关命令
格式:
yum [options] [command] [package ...]
选项:
-y #自动回答为"yes"
-q #静默模式
--nogpgcheck #禁止进行gpg check
--enablerepo=repoidglob #临时启用此处指定的repo,支持通配符,如:"*"
--disablerepo=repoidglob #临时禁用此处指定的repo,和上面语句同时使用,放在后面的生效
3.2.1 显示仓库
格式:
yum repolist [all|enabled|disabled]
添加 -v 可以显示仓库详细信息
3.2.2 显示安装包
格式:
yum list
yum list [all | glob_exp1] [glob_exp2] [...]
yum list {available|installed|updates} [glob_exp1] [...]
3.3.3 安装软件包
格式:
yum install package1 [package2] [...]
yum reinstall package1 [package2] [...] #重新安装
--downloadonly #只下载相关包默认至/var/cache/yum/x86_64/7/目录下,而不执行
install/upgrade/erase
--downloaddir=<path>, --destdir=<path> #--downloaddir选项来指定下载的目录,如果不存在
自动创建
3.3.4 卸载软件包
yum remove | erase package1 [package2] [...]
3.3.5 升级和降级
检查可用升级:
yum check-update
升级和降级
yum upgrade|update [package1] [package2] [...]
yum upgrade-minimal #最小化升级
yum downgrade package1 [package2] [...] (降级)
3.3.6 查询
查看程序包
yum info [...]
查询某个文件是哪个程序包所提供的
yum provides | whatprovides feature1 [feature2] [...]
注意:文件要写全路径,而不只是文件名,否则可能无法查询到
yum search string1 [string2] [...]
3.3.7 建立仓库缓存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
构建缓存
yum makecache
总结
这样我们就初步了解Linux软件包和软件管理相关特性了,欢迎添加VX: wenjinworkon