Linux 软件安装以及管理

2024-01-09

本篇主要记录常用的软件安装和管理方式,主要是 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      模拟模式,不实际安装或卸载软件包
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 软件安装以及管理 的相关文章

  • 我应该使用哪个 Linux 发行版作为 Xen 主机? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我为家庭办公室订购了一台服务器 我想用 Xen 对其进行分区 我认为这将使事情保持干净并且更容易维护 我将运行 MySQL PostgreSQL
  • 无关的库链接

    我有一个可能有点愚蠢的问题 因为我很确定我可能已经知道答案了 假设你有静态库A 动态共享库B和你的linux下的程序C 假设库 A 调用库 B 中的函数 并且您的程序调用库 A 中的函数 现在假设 C 在 A 中调用的所有函数都不使用 B
  • 如何确保 numpy BLAS 库可用作动态加载库?

    The theano安装文档 http www deeplearning net software theano install html troubleshooting make sure you have a blas library指
  • 确保 config.h 包含一次

    我有一个库项目 正在使用 Linux 中的 autotools 套件移植到该项目 我对自动工具很陌生 本周 我已经了解了其操作的基础知识 我有一个关于如何保留内容的问题config h免遭重新定义 我惊讶地发现生成的config h文件也没
  • python:numpy 运行脚本两次

    当我将 numpy 导入到 python 脚本中时 该脚本会执行两次 有人可以告诉我如何阻止这种情况 因为我的脚本中的所有内容都需要两倍的时间 这是一个例子 usr bin python2 from numpy import print t
  • 无法仅在控制台中启动 androidstudio

    你好 我的问题是下一个 我下载了Android Studio如果我去 路径 android studio bin 我执行studio sh 我收到以下错误 No JDK found Please validate either STUDIO
  • Scrapy FakeUserAgentError:获取浏览器时发生错误

    我使用 Scrapy FakeUserAgent 并在我的 Linux 服务器上不断收到此错误 Traceback most recent call last File usr local lib64 python2 7 site pack
  • 如何查明 Ubuntu 上安装了哪个版本的 GTK+?

    我需要确定 Ubuntu 上安装了哪个版本的 GTK 男人似乎不帮忙 这个建议 https stackoverflow com a 126145 会告诉您安装了哪个 2 0 的次要版本 不同的主要版本将具有不同的包名称 因为它们可以在系统上
  • numpy 未定义符号:PyFPE_jbuf

    我正在尝试使用一百万首歌曲数据集 为此我必须安装 python 表 numpy cython hdf5 numexpr 等 昨天我设法安装了我需要的所有内容 在使用 hdf5 遇到一些麻烦之后 我下载了预编译的二进制包并将它们保存在我的 b
  • 如何获取 linux 实用程序 tail 的源代码?

    这个命令确实非常有用 但是我可以在哪里获取源代码以查看内部发生的情况 thanks tail 实用程序是 Linux 上 coreutils 的一部分 源压缩包 ftp ftp gnu org gnu coreutils coreutils
  • InstaPy:“错误,无法确定 64 位 Linux 的正确文件名”

    有人知道如何解决或解决这个问题吗 来自控制台的堆栈跟踪 执行后报告错误 InstaPy Version 0 6 9 Workspace in use home zanettra InstaPy Error unable to determi
  • 构建 makefile 依赖/继承树

    如果我解释得不好或者问了一些明显的问题 我很抱歉 但我是 Linux 内核的新手 而且有点深入 我们有一个嵌入式 Linux 系统 它附带一个 文档非常糟糕的 SDK 其中包含数百个文件夹stuff 大多数文件夹包含rules make m
  • gentoo crontab:为什么这个简单的 crontab 不起作用?

    我使用 GENTOO 发行版 crontab e 35 12 root php5 home www cron php 当我手动运行时 php5 php5 home www cron php 这有效 它向我发送了一封电子邮件 然后我检查日期
  • 无法执行'x86_64-conda_cos6-linux-gnu-gcc':没有这样的文件或目录(pysam安装)

    我正在尝试安装 pysam 执行后 python path to pysam master setup py build 这个错误的产生是 unable to execute x86 64 conda cos6 linux gnu gcc
  • 如何让“grep”从文件中读取模式?

    假设有一个很大的文本文件 我只想打印与某些模式不匹配的行 显然 我可以使用egrep v patter1 pattern2 pattern3 现在 如果所有这些模式都在一个文本文件中怎么办 最好的制作方法是什么egrep从文件中读取模式 g
  • 从多线程程序中调用 system()

    我们正在开发一个用 C 编写的多线程内存消耗应用程序 我们必须执行大量的 shellscript linux 命令 并获取返回码 读完之后article http www linuxprogrammingblog com threads a
  • 无需 cron 在后台发送邮件

    我想知道是否有一种方法可以运行 PHP 循环 以便在后台向订阅者发送几百封电子邮件 我的目标是格式化新闻通讯 单击发送 然后关闭浏览器或更改页面 当然 发送电子邮件的实际过程将在后台运行 不会因浏览器关闭而中断 我知道这可以通过 cron
  • 如何使用 sed 仅删除双空行?

    我找到了这个问题和答案 https stackoverflow com questions 4651591 howto use sed to remove only triple empty lines关于如何删除三重空行 但是 我只需要对
  • 如何更改 Ubuntu 14.04 上的 php-cli 版本?

    我是 Linux 新手 在篡改时破坏了一些 php 设置 如果我执行一个包含以下内容的 php 脚本 phpinfo 它显示 php 版本为 5 6 但通过命令行 如果我运行php v它返回 7 0 版本 我想让两个版本匹配 我怎样才能修复
  • 如何模拟ARM处理器运行环境并加载Linux内核模块?

    我尝试加载我的vmlinux into gdb并使用 ARM 内核模拟器 但我不明白为什么我会得到Undefined target command sim 这是外壳输出 arm eabi gdb vmlinux GNU gdb GDB 7

随机推荐

  • 一个寒假能学会黑客技术吗?看完你就知道了

    一个寒假能成为黑客吗 资深白帽子来告诉你 如果你想的是学完去美国五角大楼内网随意溜达几圈 想顺走一点机密文件的话 劝你还是趁早放弃 但是成为一名初级黑客还是绰绰有余的 你只需要掌握好渗透测试 Web安全 数据库 搞懂web安全防护 SQL注
  • 新能源预测数据集GEFCom Data,用于光伏发电、风电功率、负荷、电价预测

    引言 新能源在满足世界能源需求方面日益重要 其特点是 发电量在很大程度上取决于天气状况 为了有效地将其整合到电网中 对新能源发电量进行准确的预测是一项不可避免的要求 新能源准确预测成为一项有趣且新颖的挑战 虽然已有大量文献对新能源预测进行了
  • react-native使用动画Animated

    官方网文档 动画 Animated 一些精彩的例子 React Native 动画 Animated 渐变组件的使用 ReactNative 进阶 四十五 渐变组件 react native linear gradient 需要实现如下的动
  • 【面试】 前端竞争压力大?揭秘让你们学后端的真实动机!

    前端开发属于程序员吗 网友是这样回答的 看完前端同学的评论 我悟了 你们让人都去学后端卷 然后减小前端竞争压力是吧 哈哈哈 你们这帮老6 于是我去拿出了我收藏的 某前端招聘JD来盘一盘 那些觉得 是个人都能干前端 的同学们想必已经熟练掌握了
  • 动手学深度学习3 数据操作+数据预处理

    数据操作 数据预处理 1 基础数据结构 N维数组 2 数据操作实现 基础的张量运算 1 张量 创建与赋值 1 数据生成 创建 torch arange 2 张量的属性 shape numel 3 reshape 改变张量的shape但
  • Python库中关于时间的常见操作

    目录 导入所需的库 获取当前时间 格式化日期和时间 解析日期和时间字符串 时间戳操作 获取当前时间戳 将时间戳转换为日期和时间 时间差操作 时间日期的时区处理 时间日期的随机生成 注意事项 总结 在Python中 时间处理是一个重要的主题
  • 从three.js旋转动画,我了解了requestAnimationFrame

    前言 大家好 我是南木元元 热衷分享有趣实用的文章 希望大家多多支持 一起进步 个人主页 南木元元
  • 48V转12V的DC-DC稳压电路推荐

    项目或学习过程中好用且稳定的DC DC的电路将是一个成功硬件项目的基础 主芯片 MP9486 MP9486A 是一款高压降压型开关稳压器 可输 出高达 1A 的持续电流至负载 它集成了一个高 压高端 MOSFET 提供 3 5A 的典型峰值
  • 2024了,我不允许你还不会:Qt查看与调试源码

    一 人人都是大佬 谦 卑 虚 心 长远进步 作为一个Qt的开发者 下面这段代码你已经快到了 相看两不厌 的状态了吧 你有没有好奇过 a exec 到底干了什么 我不允许你再说 这是 Qt 内部干的事情 没办法去看啊 那么 真的没办法去看么
  • 软考考试多少分通过?

    根据 人力资源社会保障部办公厅关于单独划定部分专业技术人员职业资格考试合格标准有关事项的通知 人社厅发 2022 25号 的相关规定 软考考试在一般情况下是需要达到45分才能及格的 但在一些特定地区却有不同的要求 这些地区包括国家乡村振兴重
  • 个性化语音生成:五种基于Python的方法

    引言 随着人工智能技术的不断发展 语音生成已经成为一个热门的研究领域 个性化语音生成技术可以根据用户的需求和特点 生成具有高度相似度的语音 广泛应用于语音助手 虚拟人物 语音合成等领域 本文将介绍五种基于Python的个性化语音生成方法 包
  • vue3 父传参到子(defineProps),父调子方法(defineExpose)

    父页面
  • Element-Puls中el-upload组件结合vue-draggable-plus实现上传支持拖拽排序(并保留el-upload原有样式、预览、删除)等功能

    展示效果 需求 需求想要一个可拖拽排序的图片列表 但是发现el upload虽然可以实现照片墙 但是没办法拖拽 实现思路 使用 vue draggable plus 拖拽插件 隐藏Upload原有的已上传文件列表 自定义上传后文件列表的样式
  • 软件开发和网络安全哪个更好找工作?

    为什么今年应届毕业生找工作这么难 有时间去看看张雪峰今年为什么这么火就明白了 这么多年人才供给和需求错配的问题 在经济下行的今年 集中爆发 供给端 大学生越来越多 需求端 低端工作大家不愿去 高端岗位又太少 很多基础行业 比如机械 土木 所
  • 拼多多详情API开启运营比价新纪元

    随着互联网的快速发展 电商行业正在迅速崛起 拼多多作为一家新兴的电商平台 凭借其独特的营销策略和创新的商业模式 成为了电商行业的一匹黑马 在拼多多的成功背后 其详情API接口营销起到了至关重要的作用 本文将详细介绍拼多多详情API接口营销的
  • 如何读取文件的最后一行并解析

    首先需要了解 ifstream 的 seekg函数 它主要是 用于设置在输入流中的位置 file seekg 0 ios end ios beg 从文件头开始计算偏移量 ios end 从文件末尾开始计算偏移量 ios cur 从当前位置开
  • 线上企业展厅:企业发展新利器,轻松实现线上企业展示

    引言 在当今数字化时代 线上企业展厅已经成为企业展示品牌形象 推广产品的重要手段 它不仅可以帮助企业拓宽市场 提升品牌知名度 还能为企业带来更多的商业机会 那么线上企业展厅有什么优势 如何搭建成功的线上企业展厅 一 线上企业展厅的优势 1
  • 【镜像压缩】linux 上 SD/TF 卡镜像文件压缩到实际大小的简单方法(树莓派、nvidia jetson)

    文章目录 1 备份 SD TF 卡为镜像文件 2 压缩镜像文件 2 1 多分区镜像文件的压缩 树莓派 普通 linux 系统等 2 2 单分区镜像文件的压缩 Nvidia Jetson Nano 等 3 还原镜像文件到 SD TF 卡
  • MIT_线性代数笔记:复习二

    目录 第二单元主要内容 例题 第二单元主要内容 正交矩阵 Q 用矩阵形式描述正交性质 投影矩阵 P 最小二乘法 在方程无解时求 最优解 Gram Schmidt 正交化 从任意一组基得到标准正交基 策略是从向量 中减去投影到其它向量方向的分
  • Linux 软件安装以及管理

    本篇主要记录常用的软件安装和管理方式 主要是 yum rpm dnf apt pip 大致都是一样的 主要是部分软件提供了解决依赖的功能 内容不包括源码安装 源码安装情况相对比较复杂 后续有时间再补充 约定 案例所用模板软件均为 pytho