系统集成05-安装软件和管理服务
系统集成05-安装软件和管理服务
1 管理软件包
Linux软件包可分为两类:源码包、二进制包,不同的软件包有不同的提供方式,常用的方式有rpm包和tgz包两种。为此,常用应用软件的安装方式也有两种,一种为使用rpm工具安装,一种为编译安装
不同的平台使得软件包的打包格式及工具不尽相同
系统 | 包类型 | 工具 | 在线安装 |
---|---|---|---|
RedHat/Centos/Fedora/SUSE | rpm | rpm、rpmbuild | yum/dnf |
Ubuntu/Debian | deb | dpkg | apt |
我们学习的openEuler属于rpm包类型
1.1 RPM软件包
rpm作为标准的软件包管理工具,具有便捷的安装方式,是安装软件的首选方式
- RPM软件包管理优点:
- 简单便捷,兼容版本;
- 参数信息记录在数据库中,便于查询、升级或卸载软件时使用。
- RPM软件包管理缺点:
- 安装环境需与打包环境一致;
- 具有很强的依赖关系,卸载软件时需要对依赖性软件优先处理,否则会导致其他软件无法正常使用。
1.2 使用RPM命令管理软件包
RPM常用于安装、删除、升级、刷新和查询的场景
安装
rpm [option] FILE
- -i:安装一个包
- -iv:安装一个包并在安装过程中显示正在安装的文件信息
- -ivh:安装一个包并在安装过程中显示正在安装的文件信息和进度
查询
rpm [option] FILE
- -q:查询软件包是否安装
- -qa:查询所有安装的软件包
- -qf:查询所有已安装过的软件包
- -qp:查询未安装的软件包
- -ql:查询已安装的软件包中的文件列表和完整目录
- -qi:查询软件包的详细信息
- -qc:查询已安装的软件包中的配置文件
- -qd:查询已安装的软件包中的帮助文档
升级
rpm [option] FILE
- -Uvh:代表存在旧包时,欲删除旧包安装新包时使用;
- -Fvh:代表存在旧包时,在旧包的基础上进行升级
卸载
rpm -e FILE
- rpm软件包卸载需要考虑包与包之间的依赖性;
- 卸载时若不考虑包的依赖性,可以使用nodeps命令(不检测依赖性)进行强制卸载;
- 若是该软件包存在多个版本,可以使用allmatches命令进行批量卸载
2 使用dnf管理软件
Linux系统的软件管理工具yum是基于rpm包管理,可以从指定的服务器自动下载RPM服务器并进行安装,yum可以作为软件仓库对软件包进行管理,相当于一个“管家”,同时能够解决软件包间的依赖关系,提升了效率,既然如此,为什么还会出现DNF工具呢?
yum工具性能差、内存占用过多、依赖解析速度变慢等问题长期得不到解决,同时yum工具过度依赖yum源文件,若是源文件出现问题,yum相关操作可能会失败,针对这种情况,DNF工具应运而生,DNF工具克服了YUM软件管理工具的一些瓶颈,提升了用户体验、内存占用、依赖分析及运行速度等方面的内容
2.1 dnf管理工具概述
- DNF(DandifiedYUM)作为Linux软件包管理工具,可以用来管理RPM软件包。
- DNF可以查询软件包的信息,从指定软件库去获取所需软件包,并通过自动处理依赖关系来实现安装、卸载以及更新。
- DNF与YUM完全兼容,提供了YUM兼容的命令行以及为扩展和插件提供的API。
- DNF的使用需要管理员(root)权限
2.2 使用dnf管理软件包
软件源服务
软件源(SoftwareSources)是Linux系统免费的应用程序安装仓库, 软件源可以是网络服务器、是光盘、甚至是硬盘上的一个目录
软件源的优势:
- 需要用到一个软件的时候,可以通过工具自动地下载并自动地安装
- 软件源可以让你及时获取重要的安全更新,解决安全隐患
- 解决软件依赖的复杂关系、提高软件安装效率
DNF配置文件
DNF的主要配置文件是/etc/dnf/dnf.conf,该文件中“main”部分保存着DNF的全局配置。
参数说明:
- cachedir:缓存目录,该目录用于存储RPM包和数据库文件;
- best:升级包时,总是尝试安装其最高版本,如果最高版本无法安装,则提示无法安装的原因并停止安装。默认值为True;
- installonly_limit:设置可以同时安装“installonlypkgs”指令列出包的数量。默认值为3,不建议降低此值;
- clean_requirements_on_remove:删除在dnfremove期间不再使用的依赖项,如果软件包是通过DNF安装的,而不是通过显式用户请求安装的,则只能通过clean_requirements_on_remove删除软件包,即它是作为依赖项引入的。默认值为True
修改配置参数
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。
添加软件源
用户定义定制化的软件源仓库,除了可以在 /etc/dnf/dnf.conf 文件中添加一个或多个“repository”外,还可以选择在/etc/yum.repos.d/目录下添加“.repo”文件
dnf config-manager --add-repo repository_url
添加“.repo”文件的方式需要在root权限下进行
启用和禁用软件源
在启用或禁用之前可以通过以下命令查看.repo文件的repo id
dnf repolist
添加好软件源之后,需要在root权限下启用软件源(其中的repository为新增.repo文件的repoid),启用命令如下
dnf config-manager --set -enable repository
若是软件源不再被使用,可以通过命令行禁用该软件源,需要在root权限下禁用,禁用命令如下
dnf config-manager --set -disable repository
管理软件包
DNF能够便捷的对软件包进行安装、查询和删除, 但用户依然可以通过rpm包名称、缩写和描述来搜索所需软件包
DNF可以通过命令列出已安装和可用的RPM软件包:
dnf list all
dnflist glob_expression ... #查看指定RPM包信息
通过DNF命令行能够查看RPM包的相关信息:
dnf info package_name...
通过DNF命令行能够下载、安装和删除RPM包:
dnf download package_name
dnf install package_name
dnf remove package_name
DNF命令可以检查系统中的软件包/软件包组是否需要更新:
dnf check -update #检查更新
dnf update package_name /dnfgroupupdategroup_name #更新具体应用
3 源代码安装
通过源代码安装软件是除了rpm软件包安装外的又一种安装软件的方式。Linux下许多软件是通过源码包方式发行的,相对于二进制软件包来说,源码包的移植性较好,仅需发布一份源码包,不同用户经过编译即可正常运行,但是其配置和编译过程较为繁琐
-
源码安装优点:
-
编译过程可以根据自身需求设置参数进行软件安装,灵活性好;
-
经过本机编译,使得源码安装的软件与本机兼容性最好。
-
-
源码安装缺点:
- 配置及编译过程较为繁琐;
- 可能由于安装软件过新或其他问题,导致没有对应的依赖包,软件升级较为复杂,得不偿失。
使用源码安装软件步骤
- 下载源码包并解压(校验包完整性)
- 查看README和INSTALL文件(记录了软件的安装方法及注意事项)
- 创建Makefile文件-通过执行./configure脚本命令生成
- 编译-通过make命令将源码自动编译成二进制文件
- 安装软件-通过makeinstall安装命令来将上步编译出来的二进制文件安装到对应的目录中去,默认的安装路径为/usr/local/,相应的配置文件位置为/usr/local/etc或
/usr/local/***/etc
4 使用systemd管理服务
在Linux中,systemd是与SysV和LSB初始化脚本兼容的系统和服务管理器,开启systemd服务可以提供基于守护进程的按需启动策略。
systemd服务支持快照和系统状态恢复,维护挂载和自挂载点,使得个服务之间基于从属关系实现更为精细的逻辑控制,具有更高的并行性能.
systemd服务的开启和监督系统是基于unit的概念,unit由一个与配置文件对应的名称和类型组成,unit通常有以下几种类型:
- Serviceunit:系统服务
- Targetunit:一组systemdunits
- Automountunit:文件系统挂载点
- Deviceunit:内核识别的设备文件
- Mountunit:文件系统挂载点
- Pathunit:在一个文件系统中的文件或目录
- Scopeunit:外部创建的进程
- Snapshotunit:systemdmanager的保存状态
使用systemd管理服务
systemd可以通过systemctl命令来对系统服务进行运行、关闭、重启、显示、启用或禁用的操作。
systemctl命令与sysvinit命令的功能相似,但是建议用systemctl来进行系统服务管理
-
查看当前正在运行的服务:
systemctl list-units --type service #若是要查看所有服务,需要在命令行后添加–all参数
-
显示服务状态:
systemctl status name.service
- Loaded:说明服务是否被加载,同时显示对应的绝对路径是否启用
- Active:说明服务是否正在运行,并显示时间节点
- MainPID:相应系统服务PID值
- CGroup:相关控制组的其他信息
-
systemctl命令可以对系统服务进行运行、关闭、重启、显示、启用或禁用等操作
systemctl start name.service #运行服务 systemctl stop name.service #关闭服务 systemctl restart name.service #重启服务 systemctl enable name.service #启用服务 systemctl disable name.service #禁用服务
-
Systemd亦可通过systemctl命令对系统进行关机、重启、休眠等操作,具体命令如下:
systemctl poweroff #关闭系统并下电 systemctl halt #关闭系统但不下电 systemctl reboot #重启系统 systemctl suspend #系统待机 systemctl hibernate #系统休眠
本文来自博客园,作者:Qurare,严禁转载至CSDN平台, 其他转载请注明原文链接:https://www.cnblogs.com/konjac-wjh/p/17377855.html