Linux-RPM软件包管理/dnf管理软件/源码安装教程/使用systemd管理服务

2023-11-11

文章目录

管理软件包

RPM软件包

Linux软件包管理概述

Linux软件包可分为两类:源码包、二进制包,不同的软件包有不同的提供方式,常用的方式有rpm包和tgz包两种。为此,常用应用软件的安装方式也有两种,一种为使用rpm工具安装,一种为编译安装

rpm作为标准的软件包管理工具,具有便捷的安装方式,是安装软件的首选方式。
openLinux、SUSE、CentOS等不同的分发版本同样使用rpm来对软件包进行管理。
不同的平台使得软件包的打包格式及工具不尽相同,其中Debin和Ubuntu采用的是Deb包安装以及apt-get源安装的方式来对软件包进行管理, FreeBSD则采用的是Ports,.txz的打包格式以及make, pkg工具。

RPM软件包管理

RPM是一种用于互联网下载包的打包和自动安装工具,会生成具有.RPM扩展名的文件,可以用来管理应用程序的安装、卸载和维护。
RPM软件包命名格式:
  name-version-release.arch.rpm
在这里插入图片描述

RPM软件包管理的优缺点
  • RPM软件包管理优点:
    简单便捷,兼容版本;
    参数信息记录在数据库中,便于查询、升级或卸载软件时使用。
  • RPM软件包管理缺点:
    安装环境需与打包环境一致;
    具有很强的依赖关系,卸载软件时需要对依赖性软件优先处理,否则会导致其他软件无法正常使用。

使用RPM命令管理软件(安装、查询、升级、卸载)

RPM命令常用参数

RPM常用于安装、删除、升级、刷新和查询的场景。

语法:rpm [OPTION...]。
其中的命令选项说明如下:
    -i:指定安装的软件包
    -h:使用“#(hash)”符显示rpm详细的安装过程及进度
    -v:显示安装的详细过程
    -U:升级指定的软件包
    -q:查询系统是否已安装指定的软件包或查询指定rpm包内容信息
    -a:查看系统已安装的所有软件包
    -V:查询已安装的软件包的版本信息
    -c:显示所有配置文件
    -p:查询/校验一个软件包的文件

在这里插入图片描述

RPM命令-安装

语法:

    rpm -i example.rpm
    rpm -iv example.rpm
    rpm -ivh example.rpm

其中的命令选项说明如下:
  -i:安装一个包
  iv:安装一个包并在安装过程中显示正在安装的文件信息
  ivh:安装一个包并在安装过程中显示正在安装的文件信息和进度

RPM命令-卸载

语法:

rpm -e example.rpm
rpm -e -nodeps example.rpm
rpm -e -allmatches example.rpm

其中的命令选项说明如下:
rpm软件包卸载需要考虑包与包之间的依赖性;卸载时若不考虑包的依赖性,可以使用nodeps命令(不检测依赖性)进行强制卸载;若是该软件包存在多个版本,可以使用allmatches命令进行批量卸载。

RPM命令-升级

语法:

rpm -U example.rpm
rpm -Uvh example.rpm
rpm -F example.rpm
rpm -Fvh example.rpm

其中的命令选项说明如下:
  -Uvh:代表存在旧包时,欲删除旧包安装新包时使用;
  -Fvh:代表存在旧包时,在旧包的基础上进行升级。

RPM-查询

语法:

rpm -q example.rpm
rpm -qa
	-q:查询软件包是否安装
	-qa:查询所有安装的软件包
	-qf:查询所有已安装过的软件包
	-qp:查询未安装的软件包
	-ql:查询已安装的软件包中的文件列表和完整目录
	-qi:查询软件包的详细信息
	-qc:查询已安装的软件包中的配置文件
	-qd:查询已安装的软件包中的帮助文档

使用dnf管理软件

dnf管理工具概述

DNF工具的产生

Linux系统的软件管理工具yum是基于rpm包管理,可以从指定的服务器自动下载RPM服务器并进行安装,yum可以作为软件仓库对软件包进行管理,相当于一个“管家”,同时能够解决软件包间的依赖关系,提升了效率,既然如此,为什么还会出现DNF工具呢?

那是因为yum工具性能差、内存占用过多、依赖解析速度变慢等问题长期得不到解决,同时yum工具过度依赖yum源文件,若是源文件出现问题,yum相关操作可能会失败,针对这种情况,DNF工具应运而生,DNF工具克服了YUM软件管理工具的一些瓶颈,提升了用户体验、内存占用、依赖分析及运行速度等方面的内容。

DNF工具概述
  • DNF(Dandified YUM)作为Linux软件包管理工具,可以用来管理RPM软件包。
  • DNF可以查询软件包的信息,从指定软件库去获取所需软件包,并通过自动处理依赖关系来实现安装、卸载以及更新。
  • DNF与YUM完全兼容,提供了YUM兼容的命令行以及为扩展和插件提供的API。
  • DNF的使用需要管理员(root)权限。

使用DNF管理软件包

在这里插入图片描述

DNF-软件源服务

软件源(Software Sources)是Linux系统免费的应用程序安装仓库。软件源可以是网络服务器、是光盘、甚至是硬盘上的一个目录。

Linux软件源的好处:

  • 需要用到一个软件的时候,可以通过工具自动地下载并自动地安装;
  • 软件源可以让你及时获取重要的安全更新,解决安全隐患;
  • 解决软件依赖的复杂关系、提高软件安装效率。
DNF配置文件- /etc/dnf/dnf.conf

DNF的主要配置文件是/etc/dnf/dnf.conf,该文件中“main”部分保存着DNF的全局配置。通过cat命令,可以查看“main”的具体参数:cat /etc/dnf/dnf.conf。
其中的参数说明如下:

  • cachedir:缓存目录,该目录用于存储RPM包和数据库文件;
  • best:升级包时,总是尝试安装其最高版本,如果最高版本无法安装,则提示无法安装的原因并停止安装。 默认值为True;
  • installonly_limit:设置可以同时安装“installonlypkgs”指令列出包的数量。默认值为3,不建议降低此值;
  • clean_requirements_on_remove:删除在dnf remove期间不再使用的依赖项,如果软件包是通过DNF安装的,而不是通过显式用户请求安装的,则只能通过- clean_requirements_on_remove删除软件包,即它是作为依赖项引入的。 默认值为True。
配置DNF-修改配置参数

repository允许用户定义定制化的软件源仓库,需要注意的是各个仓库的名称不能相同,会引起冲突,用户可以通过添加一个或多个“repository”部分来修改需安装软件源位置。通过vim命令,可以在文件中添加一个或多个“repository” :vim /etc/dnf/dnf.conf。
其中的参数说明如下:

  • name=repository_name:软件仓库(repository )描述的字符串
  • baseurl=repository_url:软件仓库(repository )的地址。
    使用http协议的网络位置:例如 http://path/to/repo;
    使用ftp协议的网络位置:例如 ftp://path/to/repo;
    本地位置:例如 file:///path/to/local/repo。
创建本地软件源仓库

创建软件源仓库具体步骤:

  1. 安装createrepo(root权限下):
dnf install createrepo
  1. 将需要的软件包放置在目录下,比如/mnt/local_repo/;
  2. 执行命令创建软件源。
createrepo --database /mnt/local_repo
添加软件源
  • 用户定义定制化的软件源仓库,除了可以在 /etc/dnf/dnf.conf 文件中添加一个或多个“repository”外,还可以选择在/etc/yum.repos.d/目录下添加“.repo”文件。
  • 添加“.repo”文件的方式需要在root权限下进行。
    成功执行以下命令后会在/etc/yum.repos.d/目录下生成对应的repo文件。
dnf config-manager --add-repo repository_url
启用和禁用软件源

添加好软件源之后,需要在root权限下启用软件源(其中的repository为新增.repo文件的repo id),启用命令如下:

dnf repolist #查看新增.repo文件的repo id
dnf config-manager --set-enable repository

若是软件源不再被使用,可以通过命令行禁用该软件源,需要在root权限下禁用,禁用命令如下:

dnf repolist #查看新增.repo文件的repo id
dnf config-manager --set-disable repository
管理软件包

DNF能够快捷的对软件包进行安装、查询和删除。用户可以通过rpm包名称、缩写和描述来搜索所需软件包,具体命令如下:

dnf search term
列出软件清单

DNF可以通过命令列出已安装和可用的RPM软软件包,命令为:

dnf list all
dnf list glob_expression... #查看指定RPM包信息
显示RPM包信息

通过DNF命令行能够查看RPM包的相关信息,命令如下:

dnf info package_name...
下载、安装和删除RPM包

通过DNF命令行能够下载、安装和删除RPM包,命令如下:

dnf download package_name
dnf install package_name
dnf remove package_name
管理软件包组

软件包集合是将一组具有共同目的的软件包集合在一起,比如系统工具。用户可以通过dnf命令查看所有已安装及可用的软件包组,命令为:

dnf groups summary
dnf group list #可列出软件包组和对应组ID
显示软件包组信息

通过dnf命令列出一个软件包组中必须安装的软件包及可选包,命令为:

dnf group info glob_expression...
安装和删除软件包组

每一软件包组都具有相应的名称和id,在安装和删除软件包组时,可以通过名称或id来进行安装或删除:

dnf group install group_name/groupid
dnf group remove group_name/groupid
检查并更新

DNF命令可以检查系统中的软件包/软件包组是否需要更新,并且可对所有需要更新的软件包/软件包组或特定的软件包进行升级。用户可以通过rpm包名称、缩写和描述来搜索所需软件包,具体命令如下:

dnf check-update
dnf update package_name / dnf group update group_name

源码安装

源代码软件及安装概述

通过源代码安装软件是除了rpm软件包安装外的又一种安装软件的方式。Linux下许多软件是通过源码包方式发行的,相对于二进制软件包来说,源码包的移植性较好,仅需发布一份源码包,不同用户经过编译即可正常运行,但是其配置和编译过程较为繁琐。

很多Linux发行版中会优先选择rpm来进行软件安装,但也会存在需要使用源码安装的场景,这是因为

  • rpm软件包版本太旧,编译参数不适用于当前业务;
  • 欲安装的软件无现成rpm软件包可用;
  • rpm软件包缺乏某些特性;
  • 优化编译参数,提升性能。

源代码软件安装优缺点:

  • 源码安装优点:
     编译过程可以根据自身需求设置参数进行软件安装,灵活性好;
     经过本机编译,使得源码安装的软件与本机兼容性最好。
  • 源码安装缺点:
     配置及编译过程较为繁琐;
     可能由于安装软件过新或其他问题,导致没有对应的依赖包,软件升级较为复杂,得不偿失。

使用源码安装软件步骤(configure/make/make install)

以Python软件安装为例演示源码安装软件的整体步骤:

下载源码包并解压(校验包完整性)
wget https://www.python.org/ftp/python/3.7.7/python-3.7.7.tgz
tar -zxvf Python-3.7.7.tgz
查看README和INSTALL文件(记录了软件的安装方法及注意事项)

进入源码目录,查看README文件:

cat Python-3.7.7/README.rst
创建Makefile文件-通过执行 ./configure 脚本命令生成
./configure --prefix=/usr/local/Python
编译-通过 make 命令将源码自动编译成二进制文件

执行Make命令进行编译:

make/make clean
安装软件-通过 make install 安装命令来将上步编译出来的二进制文件安装到对应的目录中去,默认的安装路径为/usr/local/,相应的配置文件位置为/usr/local/etc或/usr/local/***/etc

执行make install命令进行软件的安装:

make install

注意:在安装时可能会缺乏相关环境组件,可通过yum工具来进行组件的下载安装。

使用systemd管理服务

systemd简介

systemd简介

在Linux中,systemd是与SysV和LSB初始化脚本兼容的系统和服务管理器,开启systemd服务可以提供基于守护进程的按需启动策略。

systemd服务支持快照和系统状态恢复,维护挂载和自挂载点,使得个服务之间基于从属关系实现更为精细的逻辑控制,具有更高的并行性能。

Systemd unit概念

systemd服务的开启和监督系统是基于unit的概念,unit由一个与配置文件对应的名称和类型组成,unit通常有以下几种类型:

  • Service unit:系统服务
  • Target unit:一组systemd units
  • Automount unit:文件系统挂载点
  • Device unit:内核识别的设备文件
  • Mount unit:文件系统挂载点
  • Path unit:在一个文件系统中的文件或目录
  • Scope unit:外部创建的进程
  • Snapshot unit:systemd manager的保存状态
Systemd特性

systemd具备以下特性:

  • 更快的启动速度
  • 提供按需启动能力
  • 采用cgroup特性跟踪和管理进程的生命周期
  • 启动挂载点和自动挂载的管理
  • 实现事务性依赖关系管理
  • 与SysV初始化脚本兼容
  • 能够对系统进行快照和恢复

使用systemd管理服务(systemctl)

管理系统服务

systemd可以通过systemctl命令来对系统服务进行运行、关闭、重启、显示、启用或禁用的操作。systemctl命令与sysvinit命令的功能相似,但是建议用systemctl来进行系统服务管理。

Systemctl和sysvinit的区别这里做一个简单对比:
在这里插入图片描述

Systemctl - 显示服务

若是用户需要查看当前正在运行的服务,可以通过以下命令来进行查看:

systemctl list-units --type services #若是要查看所有服务,需要在命令后添加-all参数
Systemctl - 显示服务状态

若是用户需要查看某个服务的状态,可以通过如下命令来进行查看:

systemctl status name.service

其中的命令参数说明如下:
  Loaded:说明服务是否被加载,同时显示对应的绝对路径是否启用
  Active:说明服务是否正在运行,并显示时间节点
  Main PID:相应系统服务PID值
  CGroup:相关控制组的其他信息

Systemctl - 相关操作

systemctl命令可以对系统服务进行运行、关闭、重启、显示、启用或禁用等操作,命令如下:

运行服务:systemctl start name.service
关闭服务:systemctl stop name.service
重启服务:systemctl restart name.service
启用服务:systemctl enable name.service
禁用服务:systemctl disable name.service

Systemctl - 其他操作

Systemd亦可通过systemctl命令对系统进行关机、重启、休眠等操作,具体命令如下:

关闭系统:

systemctl poweroff #关闭系统并下电
systemctl halt #关闭系统但不下电

重启系统:

systemctl reboot

系统待机:

systemctl suspend

系统休眠:

systemctl hibernate

systemctl hybrid-sleep #使系统待机并处于休眠状态

芜湖,花了整整一天时间,终于写完了,码字不易,点个赞

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux-RPM软件包管理/dnf管理软件/源码安装教程/使用systemd管理服务 的相关文章

随机推荐

  • Vue3的常见30道核心面试题,会vue3的你,是不是的掌握了

    1 什么是Vue3 Vue3有哪些新增特性 答 Vue3是Vue js框架的最新版本 它增加了很多新特性 包括Composition API Teleport Suspense 和Fragment等 2 Vue3 Composition A
  • 第三节:数据类型——Object对象

    Object对象 由属性构成的无序集合 1 对象与原始类型的区别 对象有属性 对象对应的值可以是原始数据类型也可以是对象 对象的属性和对应的值这种表示方式称之为键值对 属性名又称之为键名 值称之为键值 键值可以是原始数据类型也可以是对象 也
  • 华为机试:统计大写字母个数

    一 题目 描述 找出给定字符串中大写字符 即 A Z 的个数 输入描述 本题含有多组样例输入 对于每组样例 输入一行 代表待统计的字符串 输出描述 对于每组样例 输出一个整数 代表字符串中大写字母的个数 二 输入输出示例 三 代码 incl
  • CPU与GPU计算耗时对比

    下面我们测试了分别使用CPU和GPU执行矩阵乘法得到的耗时差异 运行结果如下 注意 上面的运行揭示了下面几点 cpu c的第一次计算耗时明显超过后面的3次 gpu c的第一次计算耗时明显大大超过后面3次 GPU运行耗时差不多是CPU的1 1
  • shell-test判断

    一 条件判断参数详解 对于test和 中括号 判断语句来说 判断结果为真 则退出值为0 即echo 为0 即返回为true 其他为false 1 关于文件名 文件类型 的判断 e 该 文件名 是否存在 文件和目录都会返回为真 f 该 文件名
  • 基于docker安装mongo

    1 背景 基于业务的需求 部分数据量较大 基本一天的数据量都在1亿左右 关系型数据库已经满足不了了要求 所以更换为非关系型数据库 当然非关系型数据库的种类有很多 我们选择的是mongo 要想了解熟悉mongo 不能只做书面上的功夫 必须较强
  • 微信支付JSAPI支付

    公司业务需求 在公众号中加入微信支付和支付宝支付 效果图如下 菜单的设计直接在公众号中设置就好啦 两个子菜单都是跳转网页形式直接把你服务器上的url复制上就好 一些其他的很重要的配置 微信支付中开发配置 支付测试url 这里是报错 开始以为
  • 记一次centos7 下根目录扩容操作(步骤详细!!!)

    文章目录 需求描述 具体步骤 查看本机磁盘环境 添加磁盘分区 开始扩容 同步到文件系统 参考内容 需求描述 由于测试环境需要 虚拟机根目录需要扩容至120G 具体步骤 查看本机磁盘环境 root localhost df h 文件系统 容量
  • linux中copy_to_user()和copy_from_user()函数

    由于内核空间与用户空间的内存不能直接互访 因此借助函数 copy from user 完成用户空间到内核空间的复制 函数copy to user 完成内核空间到用户空间的复制 copy from user 和 copy to user 的原
  • 从第一人称的角度去带你了解Shell脚本的编写过程及思路

    前言 最近有朋友拿了两个文本给我 里面全都是IP地址 第一个IP地址是已安装相关服务的主机地址 第二个地址则是某一区域的所有主机IP地址 其中第一个文本有部分内容与第二个文本的内容重复 说明是已经安装了的 而第一个文本除了包含第二个文本的部
  • 单节锂电池充放电及外部供电自动切换的电路--原理介绍

    目录 单节锂电池充放电及外部供电自动切换的电路 原理介绍 1 电源输入与输出 2 虚线左边的电路是充电电路 3 虚线右侧的电路是自动切换电路 4 元器件的选择 5 PCB设计建议 单节锂电池充放电及外部供电自动切换的电路 原理介绍 介绍一种
  • 利用matlab建立一个压缩机的热力学数学模型,给出具体的代码

    我不太懂你在说什么 但是我可以提供一些参考资料 可以帮助你建立压缩机的热力学数学模型 1 MATLAB编程指南 https www mathworks com help matlab programming guide html 2 MAT
  • WSL2 在 Windows10下的 网卡 配置问题

    网络上的大部分解决方案是 在Hyper V 的WSL的虚拟交换机中的连接类型改成外部网络 然后在用户目录 USERPROFILE 下面创建一个配置文件 wslconfig wsl2 networkingMode bridged 桥接模式 v
  • CTFHub-web(cookie注入)

    文章目录 一 解题步骤 二 关于sql中 id 多少 的说明 一 解题步骤 1 题目为cookie注入 我们首先先看一下cookie里的值有没有什么可以帮助我们思考的东西 id 1 很明显存在sql注入 2 我们抓包来一步步的进行注入会更方
  • .Net Core跨域处理

    查看官方文档 https docs microsoft com zh cn aspnet core security cors view aspnetcore 2 2 分两部分处理跨域 ConfigureServices里添加 servic
  • 【华为OD机试】模拟消息队列【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 让我们来模拟一个消息队列的运作 有一个发布者和若干消费者 发布者会在给定的时刻向消息队列发送消息若此时消息队列有消费者订阅 这个消息会被发送到订阅的消费者中优先级最高
  • awk的数组学习心得

    http bbs chinaunix net thread 2312439 1 2 html 在文本处理的工作中 awk的数组是必不可少的工具 在这里 同样以总结经验和教训的方式和大家分享下我的一些学习心得 如有错误的地方 请大家指正和补充
  • 医学图像语义分割最佳方法的全面比较:UNet和UNet++

    点击上方 AI公园 关注公众号 选择加 星标 或 置顶 作者 Sergey Kolchenko 编译 ronghuaiyang 导读 在不同的任务上对比了UNet和UNet 以及使用不同的预训练编码器的效果 介绍 语义分割是计算机视觉的一个
  • 超好用的数学公式识别软件mathpix!

    在写科研论文或者其他论文 亦或者将word里的公式搬到latex里进行排版 数学公式总是一项非常艰巨的任务 在电脑上输入的速度远远没有手写来得快 既然如此 有没有办法直接识别手写的公式呢 有 就是这个软件 mathpix 怎么使用呢 下载安
  • Linux-RPM软件包管理/dnf管理软件/源码安装教程/使用systemd管理服务

    文章目录 管理软件包 RPM软件包 Linux软件包管理概述 RPM软件包管理 RPM软件包管理的优缺点 使用RPM命令管理软件 安装 查询 升级 卸载 RPM命令常用参数 RPM命令 安装 RPM命令 卸载 RPM命令 升级 RPM 查询
Powered by Hwhale