首页 > 编程语言 >03 安装及管理应用程序

03 安装及管理应用程序

时间:2024-05-26 13:05:55浏览次数:14  
标签:03 Linux 安装 管理应用程序 RPM 软件包 源代码 rpm

1、Linux命令与应用程序的关系

在Linux操作系统中,一直以来对命令和应用程序没有特别明确的区别,因此对安装软件包与安装应用程序这两种说法,并不做严格的区分。

2、Linux应用程序的组成

安装完一个软件包之后,可能会向系统中复制大量的数据文件,并进行相关设置。

在Linux操作系统中,典型的应用程序通常由以下几部分组成:

  • 普通的可执行程序文件:一般保存在/usr/bin目录中,普通用户即可执行
  • 服务器程序、管理程序文件:一般保存在/usr/sbin目录中,只有管理员才能执行
  • 配置文件:一般保存在/etc目录中,配置文件较多时会建立相应的子目录
  • 日志文件:一般保存在/var/log目录中
  • 关于应用程序的参考文档等数据:一般保存在/usr/share/doc目录中
  • 执行文件及配置文件的man手册页:一般保存在/usr/share/man目录中

3、软件包的封装类型

对于各种应用程序的软件包,在封装时可采用各种不同的类型,不同类型的软件包其安装方法也各不相同,常见的软件包封装类型有:

  • RPM软件包:扩展名为.rpm,只能在使用RPM软件包管理机制的Linux操作系统中安装(如RHEL、Fedora、CentOS等)

注:RPM软件包一般针对特定版本的操作系统量身定制,因此依赖性较强,

(安装RPM软件包需要使用操作系统中的rpm命令)

  • DEB软件包:扩展名为.deb,只能在使用DPKG机制的Linux操作系统中进行安装

(如Debian Package,Debian包管理器)

注:在安装DEB软件包时需要使用到操作系统中的dpkg命令。

  • 源代码安装包:被称为TarBall,是程序员开发完成的原始代码,一般被制做成.tar.gz或.tar.bz2等格式的压缩包文件。

注:在安装源代码时需要使用相应的编译工具,如Linux中的C语言编译器gcc。

  • 附带安装程序的软件包:软件包中会提供用于安装的可执行程序或脚本文件,如install.sh、setup等。

开放源代码的自由软件绝大多数选择以TarBall的形式发布,而RPM软件包、DEB软件包等则使用了二进制的文件格式,代码相对比较封闭。

4、RPM概述

RPM软件包是各种Linux发行版本中应用较广泛的软件包之一,最早是由Red Hat公司提出的,后来随着版本升级成为了众多Linux发行版中公认的软件包管理标准。

一般使用RPM机制封装的软件包具有约定俗成的命名格式:

                                软件名-软件版本-发布次数.操作系统类型.硬件架构类型.rpm

如bash-4.2.46-20.el7_2.x86_64.rpm

注:其中的硬件平台通常为i386或i686等——表示适用于Intel公司的处理器。

el7——代表该软件可以安装的系统的系统版本(el7就是Linux7,就是红帽的Linux7版本)

x86_64表示适用于64位的系统,如果是noarch——表示不区分硬件架构(支持不同硬件体系的处理器)

CentOS的DVD安装光盘携带的大部分软件包都在Packages目录中。

5、使用RPM软件包管理命令——rpm

5.1 rpm命令的格式

使用rpm命令能够实现几乎所有对RPM软件包的管理功能。

注:执行man rpm ——可以获得关于rpm命令的详细帮助信息

rpm命令具有非常强大的功能,结合不同的命令选项及子选项主要可以实现的功能有:

  • 查询、验证RPM软件包的相关信息
  • 安装、升级、卸载RPM软件包
  • 维护RPM数据库信息等

5.2 查询RPM软件包信息

使用rpm命令的查询功能可以查看某个软件包是否已经安装,软件包的用途以及软件包复制到系统中的文件等相关信息。

注:rpm命令的查询功能主要通过-q选项来实现,主要针对当前系统中已经安装的软件包。

-qp选项——可针对尚未安装的RPM软件包文件进行查询。

结合不同的子选项使用时,可以实现更具体的查询,常用的几个子选项有:

-qa ——显示当前系统中以RPM方式安装的所有软件列表

-qi (info) ——查看指定软件包的名称、版本、许可协议、用途等详细信息

-ql (file) ——显示指定的软件包在当前系统中安装的所有目录、文件列表

不带-q选项的可用于查询已知名称的软件包是否已经安装,需要使用准确的软件名作为参数(可以有多个)

如直接执行rpm -qa 命令将列出当前操作系统中以RPM方式安装的所有软件包清单,每行记录一个软件包的名称、版本等信息。再结合管道操作和wc -l 命令,可以统计出系统中已安装的RPM软件的个数

如下图中执行rpm -q elinks lynx命令可以查询是否在系统中已安装elinks和lynx软件包(这两个软件包都是文本模式下的网页浏览器工具)

如果不知道准确的软件包名称,还可以对全部查询结果进行过滤,使用软件包的一部分名称进行模糊查询,根据查询结果再进行判断。

如以下命令可查询系统中是否已安装了名称中包含samba的软件包(查询时不区分大小写)

对于系统中已经安装的各种软件程序,如果不知道其中某个软件的用途,可以通过rpm工具进行查询。

例如要查询samba-client软件包的用途,就可以执行命令rpm -qi samba-client

当需要查看某个软件包安装的目录和文件清单时,可以使用-ql选项,如执行rpm -ql wget 命令可以列出wget软件包安装的目录和文件清单

当需要知道系统中的某个文件是由哪一个软件包生产的时候,可以使用-qf选项

如:执行下列命令可以获知vim编辑器程序是安装在vim-enhanced软件包时生产的

注:使用rpm命令只能查询通过RPM方式安装的软件包信息,对其他途径安装到系统中的软件包,rpm命令无法获取相关信息

  • -qpi:查看指定软件包的名称、版本、许可协议、用途描述等详细信息
  • -qpl:查看该软件包要安装的所有目标目录、文件列表

使用rpm -qp选项时,必须以RPM软件包作为参数(可以用多个),而不是软件包名称。

如:已知CentOS光盘目录中有一个RPM软件包文件ethtool-4.5-3.el7.x86_64.rpm,若要在安装之前了解该软件的用途,可以执行以下的操作:

若希望进一步了解该软件包中包含哪些文件,可以执行下列命令:

5.3、安装、升级、卸载RPM软件包

常用的基本命令包括:

  • -i         在当前系统中安装一个新的RPM软件包
  • -e       卸载指定名称的软件包
  • -U      检查并升级系统中的某个软件包(若该软件包原来并未安装,则等同于-i选项)
  • -F      检查并更新系统中的某个软件包(若该软件包原来并未安装,则放弃安装)
  • -h      在安装或升级软件包的过程中,以#号显示安装进度
  • -v      显示软件安装过程中的详细信息
  • --force        强制安装某个软件包,当需要替换已安装的软件包及文件,或者安装一个比当前使用的软件版本更旧的软件时,可以使用此选项
  • --nodeps    在安装或升级、卸载一个软件包时,不检查与其他软件包的依赖关系
(1)、安装RPM软件包

注:在安装一个新的软件包时,通常使用-ivh的组合选项,这样便于了解软件安装的过程信息,及时跟踪安装进度(若使用新版本的软件包替换旧的版本时,则只需要将-i换成-U即可)

如,以下操作将从光盘目录中全新安装lynx软件包:

使用rpm命令安装软件包时,一般需要指定完整的软件包文件名作为参数(可以有多个)。

卸载软件包时,只需要指定软件名称即可。

若要一次安装多个RPM软件包,可以使用通配符*。

(2)、卸载软件包

卸载一个软件包时,主要使用-e选项,如执行rpm -e lynx命令可以卸载已安装的lynx软件

再执行查询时会发现lynx软件没有安装:

注:当需要安装、卸载一个与其他程序存在依赖关系的软件包时,系统将提示存在依赖关系而放弃执行。

这时可以结合--nodeps选项忽略依赖关系,而强行安装或卸载指定的软件包。但忽略依赖关系可能会导致软件功能异常或失效,因此只在学习或调试程序时使用,生产环节避免使用。

5.4、维护RPM数据库

维护RPM数据库的操作步骤如下:

(1)、重建RPM数据库

RPM数据库用于记录在Linux操作系统中安装、卸载、升级应用程序的相关信息由RPM软件包管理系统自动完成维护,一般不需要用户干预。

当RPM数据库发生损坏,且Linux操作系统无法自动完成修复时,将导致无法使用rpm命令正常的安装、卸载及查询软件包(这时可以使用rpm -- rebuilddb或rpm --initdb命令对RPM数据库进行重建):

(2)、导入验证公钥

在Linux/UNIX应用领域,软件厂商会对发布的软件包进行数字签名,以确保软件的完整性、合法性。

对于用户来说,可以利用官方提供的公钥文件,自动对下载的软件包进行验证

若在安装软件时出现验证失败的提示,则表示该软件包可能已经被非法篡改。

向RPM数据库中导入公钥文件时,需要用到--import选项,如执行下列命令可以把光盘目录中的

RPM-GPG-KEY-CentOS-7公钥文件导入RPM数据库中。

6、从源代码编译安装程序

在Linux操作系统中搭建一些大型服务时,考虑兼容性与功能的扩展,通常会选择源代码安装软件。

最早的Linux操作系统整体上都是编译安装而成的。

6.1、源代码编译概述

Linux操作系统中的两个重要特性:开放源代码、操作简单

即Linux操作系统中包括内核在内的所有软件都可以获得源代码,并且可以经过定制后编译安装。

现在的Linux发行版本通常使用软件包管理机制对软件进行打包安装,这样省去了软件的编译安装过程。大大简化了Linux操作系统的安装和使用难度。

注:大多数的开源软件总是以源代码的形式最先发布,之后才会出现.rpm、.deb等二进制封装的版本。

编译源代码需要有相应的开发环境,对于自由软件来说,gcc和make是最佳的编译工具。

CentOS7.3中默认使用的gcc工具版本为4.8.5,make工具版本为3.82。如执行以下命令可以查看gcc和make开发工具的版本信息。

6.2、编译安装的基本过程

获得所需的软件源代码以后,安装的基本过程有解包、配置、编译及安装这几个通用步骤。

(1)、解包

开放软件的源代码包一般为TarBall形式,扩展名为.tar.gz或.tar.bz2都可以使用tar命令进行解压释放。

注:对于只有.gz扩展名的源代码包——表示只经过压缩而并未使用tar命令归档(这样的文件只需要使用gzip进行解压缩即可)

在Linux操作系统中,通常将各种软件的源代码目录保存到/usr/src目录中,以便于集中管理。

如以下操作将把hyypd-2.4.25.tar.gz文件解包到/usr/src目录中:

(2)、配置

在编译应用程序之前,需要进入源代码目录,通过目录下的脚本检查安装环境,并且对软件的安装目录、功能选择等参数进行预先配置。

注:环境检查与配置工作通常由源代码目录中的configure脚本文件来完成,可用的各种配置参数可以通过在源代码目录中执行./configure --help命令查看。

不同的软件程序,其配置参数存在区别,但是有一个--prefix形式的参数却是大多数开源软件通用的,该配置参数用于指定软件包安装的目标文件夹。

如果没有指定任何配置参数,configure脚本将采用软件默认的值进行配置。

在Linux操作系统中通过源代码方式安装软件时,也可以将所有程序文件安装到同一个文件夹中,

这样当需要卸载软件时,只要直接将该文件夹删除即可,非常方便(某些软件也可以在源代码目录中执行make uninstall 命令完成卸载)

配置结果将保存到源代码目录的Makefile文件中,如果配置过程出现错误

(如包含error、failed或no found等关键字),通常是缺失相关的依赖软件包所致,此时只要根据提示安装对应的软件即可。

(3)、编译

编译的过程主要是根据Makefile文件内的配置信息(若上一步的配置操作失败,将无法进行编译)

,将源代码文件进行编译生成二进制的程序模块、动态链接库、可执行文件等。

配置完成后,只要在源代码目录中执行make命令即可执行编译操作。

注:编译的过程比配置过程需要更长的时间,期间同样会显示大量的执行过程信息。

(4)、安装

编译完成后,就可以执行如下的make install命令将软件的执行程序、配置文件、帮助文件等相关文件复制到Linux操作系统中了,即应用程序的最后安装过程。(安装过程需要的时间相对要短一些,期间也会显示安装的过程信息)

注:有时为了简便,可将上述的编译、安装步骤写成一行命令执行,中间用&&符号分隔。

例如,make && make install (表示make命令执行成功后再执行make install 命令,否则将忽略make install命令)

标签:03,Linux,安装,管理应用程序,RPM,软件包,源代码,rpm
From: https://blog.csdn.net/2401_85163870/article/details/139192198

相关文章

  • Win11系统安装和基本设置
    1.目的Win11可以使用WSL2里的ubuntu,某种程度上相当于双系统,相比于安装ubuntu+虚拟机windows/远程连接windows要更轻量级。使用WSL2的ubuntu里的docker,相比使用Windows的docker更简单方便。2.制作启动镜像下载Win11镜像文件最新版例如Win11_23H2_Chinese_......
  • [UDS诊断 03- 诊断会话控制(0x10)]-深度解读
     1.诊断会话       诊断会话模式由诊断服务层用于访问受限于特定会话的不同诊断服务。节点需要支持若干会话模式,如下所示:诊断会话定义    非默认会话启动时,控制器应启动S3_server定时器。如果在这个时间范围内没有从任何一......
  • snipaste截图软件安装
    1、官网地址https://zh.snipaste.com2、不知道选择32位还是64位右键电脑win图标选择系统系统类型那一行可以看到操作系统是32位还是64位3、右键压缩包选择解压缩位置4、双击Snipaste应用程序5、点击更多信息6、点击仍要运行7、右键Snipaste图标点击首选项选中......
  • 成为MySQL DBA后,再看ORACLE数据库(一、安装与启动)
    一、前言ORACLE作为世界上最牛逼的关系型数据库,也是我从事数据库行业入门学习的数据库,记得当时学习ORACLE数据库时就深感其复杂性,对很多概念一知半解、似懂非懂,当ORACLE管理员期间也遇到过不少问题,不过好在有ORACLE原厂工程师驻场,基本上问题都能解决。后来因为领导的安排和工作的......
  • 信奥一本通1403:素数对
    1403:素数对时间限制:1000ms内存限制:65536KB提交数:38296通过数:28167【题目描述】两个相差为2的素数称为素数对,如5和7,17和19等,本题目要求找出所有两个数均不大于n的素数对。【输入】一个正整数n(1≤n≤10000)。【输出】所有小于等于n的素数对。每对素......
  • 莫名奇妙的'??'引起的APK无法在手机上运行
    用Hbuilder-X开发的APK在浏览器和其自带的模拟器上都能运行,但是打完包之后放到真机上某些功能就不能运行了,这些功能涉及到一个几千个元素的二维数组,通过不断缩小检查范围,发现是88到95之间的元素引起的,仔细观察,原来错误是这个样子的:[ ...,[  93 ,  "  sxx......
  • 【csp202403-1】词频统计【第33次CCF计算机软件能力认证】
    问题描述在学习了文本处理后,小P对英语书中的......
  • IntelliJ IDEA Community Edition 下载安装
    文章目录下载安装包安装中文插件卸载下载安装包下载IntelliJIDEA–领先的Java和KotlinIDE根据你的电脑操作系统选择合适的版本:IntelliJIDEAUltimate为付费版本,我们需要往下滑找到IntelliJIDEACommunityEdition,点击Download(如果需要,可以点击展开选......
  • Arduino下载与安装(Windows 10)
    Arduino下载与安装(Windows10)官网下载安装打开官网,点击`SOFTWARE`,进入到软件下载界面,选择`Windows`选择JUSTDOWNLOAD在弹出的界面中,填入电子邮件地址,勾选`PrivacyPolicy`,点击`JUSTDOWNLOAD`即可下载完成后,,exe文件大小为143MB,版本为arduino-ide_2.3.2......
  • Linux服务器安装docker,基于Linux(openEuler、CentOS8)
    本实验环境为openEuler系统(以server方式安装)(CentOS8基本一致,可参考本文)目录知识点实验知识点Docker是一个开源的应用容器引擎。它允许开发者将应用及其所有依赖项打包到一个可移植的容器中,并发布到任何支持Docker的流行Linux或Windows操作系......