本篇主要记录常用的软件安装和管理方式,主要是 yum/rpm/dnf/apt/pip;大致都是一样的,主要是部分软件提供了解决依赖的功能;内容不包括源码安装,源码安装情况相对比较复杂,后续有时间再补充。
约定:
案例所用模板软件均为 python
案例所用模板命令均为 dig
一、 RPM
Linux安装软件,一般分为两种,一种是源码编译或者解压安装,另外的就是rpm包的安装了,yum /dnf/apk 等命令,是在rpm的基础上增加了解决依赖的功能
安装
很多时候,软件都是有依赖的,所以需要多个包依次安装或者同时安装,这也是为什么需要yum
rpm -ivh python.rpm # 安装rpm包
rpm -ivh --nodeps python.rpm # 强行安装,不检查依赖
-i|--install 安装
-U|--upgrade 更新
-v 打印详情
-h, --hash 打印进度条,具体是通过hash打印,没仔细了解
查询
rpm 的数据存储在rpmdb 中,如下提供的是一些常用的rpm软件的查询方式
以下参数需配合-q使用
-q, --query 查询,其他查询命令均需要搭配-q使用
-a, --all query/verify all packages
rpm -qa|grep python
rpm -qa python
-c, --configfiles list all configuration files
rpm -qc samba-common 需要有配置文件的软件才有返回值
-d, --docfiles list all documentation files
rpm -qd python
-dump 查看可以导出的文件
rpm -q --dump python
-l, --list list files in package
rpm -ql python
-s, --state display the states of the listed files
rpm -qs python
-R 查询软件依赖
rpm -qR python
-f, --file 查询命令所属rpm,命令需全路径
rpm -qf /bin/python
-i 查询rpm包的信息,包含编译时间和安装时间
rpm -qi python
卸载
卸载尽量使用yum卸载!尽量避免强制卸载!!特别是依赖多且不清楚用途的软件!
千万别强制卸载glibc
,如果glibc版本不对,可以升级或降级
rpm -e python.rpm 卸载rpm包,如有依赖会卸载失败
rpm -e --nodeps python.rpm 强行卸载,不检测依赖,非必要不建议使用(可能导致系统挂掉)
测试
--test don't install, but tell if it would work or not
二、yum
yum 是一个常用的软件管理软件,能看到是基于python开发的一个脚本,主要是能解决软件包的依赖问题,
系统python解释器是会影响到yum命令的
!
# file /bin/yum
/bin/yum: Python script, ASCII text executable
在RHEL 8版本开始自带dnf ,大致用法是一样的,dnf 是 yum 的更现代、更强大的替代品,它提供了许多 yum 所没有的功能,例如事务支持、原子更新、高级查询、软件包组和模块支持、Snap 和 Flatpak 支持以及增强的安全性。
查询
有时候需要通过命令查询软件,provides 就很有用了
查询软件信息
yum info python
查询命令所属软件,或者软件全名
yum provides dig
yum provides python*
搜索软件包
yum search python
查询可用repo
yum repolist
查询软件依赖
yum deplist python
安装
安装某个软件或某些软件
安装软件 支持多个软件 空格隔开 -y 可以自动确认
yum install python
更新
yum update python
降级 这个在包名或版本不一样时有用
yum downgrade python
重新安装
yum reinstall python
安装当前目录下的所有软件,并解决依赖问题
(前提是,该目录只有rpm包,没有其他文件),在某些软件需要一整套安装的时候
yum install *
下载
因为yum可以解决依赖,还有yum源,所以在某些网络不通的情况,我们可以通过yum解决依赖问题并下载所有相关的包,用来在网络不通的主机上安装软件
下载yum源上面的包到本地,并下载相关依赖包,目录要写全(不能写.代替当前目录)
yumdownloader --resolve docker-engine-17.05.0.ce-1.el7.centos.x86_64.rpm --destdir /tmp/docker_rpm
安装下载的rpm包,进入下载目录或者复制的目录
cd /tmp/docker_rpm
yum install *
配置
yum calen all 清理元数据缓存
yum makecache 生成元数据缓存
yum load-transaction /path/to/xxx.nnEh_l.yumtx 加载未完成的事务
# ls -l /etc/yum.repos.d
这个目录下,所有.repo 后缀的都是yum源配置文件,可以支持多个源
# /etc/yum.conf
配置文件,配置日志缓存等策略
# /var/cache/yum/
缓存位置,这个一般也不看
三、dnf
这软件确实比yum高级,还支持别名 dnf alias add rm=remove ,目前看到在Redhat系列 8版本的系统上才会自带,基础用法和yum一样
man dnf
Cache Files
/var/cache/dnf
Main Configuration
/etc/dnf/dnf.conf
Repository
/etc/yum.repos.d/
基本照着yum用就行了,yum源也是共用的,后续有需要补充再加进来
四、apt
不常用,所以就简单记录一下
apt 与 yum的区别
1、
apt 常用于 Debian 和 Ubuntu 等基于 Debian 的 Linux 发行版
,而
yum 常用于 Red Hat Enterprise Linux (RHEL)、CentOS 和 Fedora 等基于 Red Hat 的 Linux 发行版
2、
apt 使用 .deb 包格式
,而
yum 使用 .rpm 包格式
,.deb 包是 Debian 软件包管理系统 (dpkg) 的原生包格式,而 .rpm 包是 Red Hat Package Manager (RPM) 的原生包格式
3、apt 可用的大多数软件都是免费的而且数量多,而 yum 可用的大多数软件都是商业软件
4、apt 使用 `apt-get` 命令来安装软件包,而 yum 使用 `yum` 命令来安装软件包
常用方式
命令
apt-get update 更新软件包列表
apt-get install 安装软件包
apt-get remove 卸载软件包
apt-get purge 卸载软件包及其所有依赖项
apt-get clean 清理下载的软件包
apt-get autoremove 卸载不再需要的软件包
apt-get upgrade 升级所有已安装的软件包
apt-get dist-upgrade 升级所有已安装的软件包及其依赖项
参数
-y 自动回答所有问题,默认值为“no”
-f 修复损坏的依赖关系
-v 详细模式,显示安装或卸载软件包的详细信息
-s 模拟模式,不实际安装或卸载软件包