Linux 软件安装以及管理

发布时间:2024年01月08日

本篇主要记录常用的软件安装和管理方式,主要是 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      模拟模式,不实际安装或卸载软件包
文章来源:https://blog.csdn.net/weixin_43839586/article/details/135451022
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。