软件包安装

这篇具有很好参考价值的文章主要介绍了软件包安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.软件包分类

1.1软件包的分类

  • 源码包
  • 二进制包
  • 脚本安装包

1.2源码包

1.2.1源码包的样子

源码包可以认为是利用不同的计算机语言而写的包, 我们打开相应的文件也能看到相应的源码

1.2.2源码包的特点

源码包的优点: 

  • 开源, 如果有足够的能力, 可以修改源代码
  • 可以自由选择所需的功能
  • 软件是编译安装的, 所以更加适合自己的系统, 更加稳定和高效
  • 卸载方便

缺点:

  • 安装过程步骤比较多, 尤其是安装较大软件集合时, 容易出现错误
  • 编译过程较长, 安装比二进制安装时间长
  • 因为是编译安装, 安装过程中出现报错新手很难解决

1.3二进制包

1.3.1二进制包的分类

  • DPKG包: 由Debian Linux所开发出来的包管理机制, 通过DPKG包, Debian Linux就可以进行软件包管理. 主要应用在Debian和unbuntu中
  • RPM包: 由Red Hat公司所开发的包管理系统. 功能强大, 安装, 升级, 查询和卸载都很方便. 目前很多Linux都在使用这种包管理方式, 包括Fedora, CentOS等.

1.3.2特点

RPM包的优点: 

  • 包管理系统简单, 只通过几个命令就可以实现包的安装, 升级, 查询和卸载
  • 安装速度比源码包安装的快

RPM包的缺点: 

  • 经过编译, 不能看到源码
  • 功能选择不如源码包灵活
  • 依赖性. 又是我们发现需要安装软件包a是需要先安装软件包b和c, 而安装b时需要安装d和e. 这就需要我们先安装d和e, 在安装b和c, 最后才能安装a. 是有一定顺序的

1.3.3RPM包依赖

1)树形依赖    a-->b-->c

2)环形依赖    a-->b-->c-->a

3)函数库依赖

什么是模块依赖?我们可以安装一下文件进行尝试:

rpm -ivh mysql-connector-odbc-5.2.5-7.el7.x86_64.rpm

错误: 依赖检测失败

        libodbc.so.2()(64bit) 被 mysql-connector-odbc-5.2.5-7.el7.x86_64 需要
        libodbcinst.so.2()(64bit) 被 mysql-connector-odbc-5.2.5-7.el7.x86_64 需要

发现报错, 需要安装libodbc.so.2函数库文件, 这时会发现在光盘中根本找不到这个文件. 那是因为函数库没有单独成包, 是包含在某一个软件包中的. 如果要知道在那个软件包中, 需要查询网站www.rpmfind.net

2.rpm安装

2.1rmp包命名规则

httpd-2.2.15-15.e16.centos.1.i686.rpm

  • httpd软件包名
  • 2.2.15软件版本号
  • 15软件的发布次数
  • e16软件发行商
  • i686适合的硬件平台. RPM包可以在不同的硬件平台安装, 选择适合不同CPU的软件版本, 可以最大化的发挥CPU的性能
  • rpm扩展名

包全名: 如果操作的是未安装的软件包, 则使用包全名, 而且需要注意绝对路径

包名: 如果操作的是已经安装的软件包, 则使用包名, 系统会产生RPM包的数据库(/var/lib/rpm/), 而且可以在任意路径下操作

2.3rpm包手工命令安装

2.3.1默认安装位置

路径 介绍
/etc/ 配置文件安装目录
/usr/bin/ 可执行命令的安装目录
/usr/lib/ 程序所使用的函数库保存位置
/usr/share/doc/ 基本的软件使用手册保存位置
/usr/share/man/ 帮助文件保存位置

2.3.2RPM包安装

1)安装命令

rpm -ivh 包全名

# 注意一定似乎包全名, 如果包全名要注意路径, 应为软件包在光盘当中

选项: 

        -i: install安装

        -v: 显示更详细的信息

        -h: 打印和显示安装进度

  • --relpacefiles: 替换文件安装. 如果安装软件包, 可是包中文件已经存在, 那么正常安装时, 会报错"某个文件已经存在"从而导致软件无法安装, 使用这个选项可以忽视这个报错, 而覆盖安装
  • --replacepkgs: 替换软件包安装. 如果软件包已经存在, 此选项可以包软件包重复安装一遍
  • --force: 强制安装. 不管是否已经安装, 都重新安装. 就是以上两种的综合
  • --test: 测试安装. 不会实际安装, 只是检测一下依赖性
  • --prefix: 指定安装路径. 一般不会使用

2)服务启动

service 服务名 start|stop|restart|status(查看服务状态)

2.3.3RPM包升级

rmp -Uvh 包全名

选项: 

        -U(大写): 升级安装. 如果没有安装过, 系统直接安装. 如果安装过旧的版本, 就会升级到最新版

        -F(大写): 升级安装, 如果没有安装过, 则不会安装, 必须有旧的版本才能升级

2.3.4卸载

rpm -e 包名

2.3.5查询

1)查询软件包是否安装

rmp -q 包名

选项: 

        -q: 查询

2)查询系统中的所有安装软件包名

rmp -qa

当然我们能用管道符查找我们所需要的内容

rmp -qa | grep httpd

3)查询软件包的详细信息

可以查看已经安装的某个软件包的详细信息

rpm -qi 包名

选项: 

        -i: 查询软件信息

也可以查看没有安装的软件包的详细信息

rpm -qip 包全名

选项: 

        -p: 没有安装的软件包(package)

4)查询软件包中的文件列表

可以查看已经安装的软件包中的文件列表和完整目录

rpm -ql 包名

选项: 

        -l: 列出软件包中所有的文件列表和软件所安装的目录

那么, 可以查询还没有安装的软件包中的文件列表和打算安装的位置吗?答案是可以的

rpm -qlp 包全名

选项:

        -p: 查询没有安装软件包的信息

5)查询系统文件属于哪个RPM包

rpm -qf 系统文件名(必须是RPM包建立的文件)

选项: 

        -f: 查询系统文件属于哪一个软件包

6)查询软件所依赖的软件包

rpm -qR 包名

选项:        

        -R: 查询软件的依赖性(requires)

可以查询没有暗转的软件包的依赖性吗? 加上"-p"选项即可. 例如, 查看一下还没有安装的bind软件包的依赖性, 可以执行如下命令:

rpm -qRp 包全名

2.3.6验证

1)基本命令

rpm -Va

选项:

        -Va: 校验本机已经安装的所有软件包

rpm -V 已经安装的包名

选项:

        -V: 校验指定RPM包中的文件(verify)

rpm -Vf 系统文件名

选项: 

        -Vf: 校验某个系统文件是否被修改

2)验证举例

软件包安装,linux,运维,服务器

出现了提示信息, 我们解释最前面8个信息的内容, 表示检验内容的. 文件名前面的c是表示这个配置文件(configuration). 最后是文件名.验证的内容中的8个信息的具体内容如下:

  • S: 文件大小是否改变
  • M: 文件的类型或文件的权限是否被改变
  • 5: 文件MD5校验和是否改变(可以看成文件的内容是否改变)
  • D: 设备的主从代码是否改变
  • L: 文件的路径是否改变
  • U: 文件的属主(所有者)是否改变
  • G: 文件的属组是否改变
  • T: 文件的修改时间是否改变

2.3.7数字证书

刚刚的校验方法只能对已经安装的RPM包中的文件进行校验, 但是如果RPM包本身被动过手脚, 那么校验就能解决问题. 我们需要数字证书校验了

数字证书有如下特点:

  • 首先必须找到原厂的公钥文件, 然后进行安装
  • 再安装RPM包, 会提取RPM包中证书的信息, 然后和本机安装的原厂证书进行验证
  • 如果验证通过, 则允许安装; 如果验证不通过, 则不允许安装并警告

1)数字证书位置

数字证书在哪里呢?其实在CentOS的第一张光盘中, 当然它默认也会放在系统中:

ll /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

# 系统中数字证书位置

2)数字证书导入

rpm -import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

选项:

        -import: 导入数字证书

2.4rpm包在线安装(yum安装)

2.4.1yum源文件解析

yum源配置文件保存在/etc/yum.repos.d目录中, 文件的扩展名一定是"*.repo". 也就是说, yum源配置文件只要扩展名是"*.repo"就会生效

软件包安装,linux,运维,服务器

这个目录中有5个yum源配置文件, 默认情况下CentOS-Base.repo文件生效. 我们打开这个文件看看:

软件包安装,linux,运维,服务器

在CentOS-Base.repo文件中有5个yum源容器, 这里只列出了base容器, 其他容器和base容器类似. 我们来解释一下base这个容器

  • [base]: 容器名称, 一定要放到[]中
  • name: 容器说明, 可以自己随便写
  • mirrorlist: 镜像站点, 这个可以注释掉
  • baseurl: 我们的yum源服务器的地址. 默认是CentOS官方的yum源服务器, 是可以使用的. 如果你觉得慢, 可以改成你喜欢的yum源地址
  • enabled: 此容器是否生效, 如果不行或者写成enable=1则表示此容器生效, 写成enabled=0则便是此容器不生效
  • gpgcheck: 如果为1则表示RPM的数字证书生效; 如果为0, 则表示RPM的数字证书不生效
  • gpgkey: 数字证书的公钥保存位置, 不能修改

2.4.2搭建本地光盘yum源

第一步: 放入CentOS安装光盘, 并挂载光盘到指定位置. 命令如下:

mkdir /mnt/cdrom             # 创建cdrom目录, 作为光盘的挂载点

mount /dev/cdrom /mnt/cdrom/

mount: block device dev/sr0 is write-protected, mounting read-only

# 挂在光盘到/mnt/cdrom目录下

第二步: 修改其他几个yum源配置文件的扩展名, 让它们失效, 因为只有扩展名是*.repo的文件才能作为yum源配置文件. 当然也可以删除其他几个yum源配置文件, 但是如果删除了, 当你又想用网络作为yum源文件时, 就没有参考文件了, 所以最好还是修改扩展名. 命令如下

cd /etc/yum.repos.d/

mv CentOS-Base.repo CentOS-Base.repo.bak

mv CentOS-Debuginfo.repo CentOS-DeBuginfo.repo.bak

mv CentOS-Vault.repo CentOS-Vault.repo.bak

第三步: 修改光盘yum源配置文件CentOS-Media.repo

软件包安装,linux,运维,服务器

2.4.3yum命令

1)查询

  • 查询yum源服务器上所有可安装的软件包列表

yum list    # 查询所有可用的软件包列表

Installed Packages     # 已经安装的软件包

  • 查询yum源服务其中是否包含某个软件包

yun list 包名         # 查询单个软件包

软件包安装,linux,运维,服务器

  • 搜索yum源服务器上所有的关键字相关的软件包

yum search 关键字

软件包安装,linux,运维,服务器

yum search搜索可以用于确定某个软件在哪个软件包当中. 此例子可以确定"ifconfig"命令需要安装"net-tools"包

  • 查询指定软件包的信息

yum info samba    #查询samba软件包的信息

2)安装

yum -y install 包名

选项:

        install: 安装

        -y: 自动回答yes

举例: yum -y install gcc     # 使用yum自动安装gcc

3)升级

yum -y -update 包名

选项:

        update: 升级

        -y: 自动回答yes

注意:进行升级操作的时候, yum源服务器中软件包的版本要比本机安装的软件包的版本高

yum -y update   #升级本机所有软件包

4)卸载

除非你确定卸载的软件的依赖包不会对系统产生影响, 否则不要执行yum卸载, 因为很有可能在卸载软件包的同时卸载的依赖包也是重要的系统文件, 这可能导致系统崩溃. 卸载命令如下:

yum remove 包名     # 卸载指定的软件包

2.4.4yum组管理命令

  • 查询可以安装的软件组

yum grouplist      # 列出所有可用的软件组列表

  • 查询软件组内包含的软件

yum groupinfo 软件组名      # 列出软件组中包含的软件

  • 安装软件组

yum groupinstall 软件组名     # 安装指定软件组, 组名可以由grouplist查询出来

例如:

yum groupinstall "Web Server"

  • 卸载软件组

yum groupremove   软件组名        #卸载指定软件组

3.源码包安装

3.1注意事项

3.1.1应当选择哪种软件包

  • 如果软件包是给大量客户提供访问, 建议使用源码包
  • 如果软件包是给Linux底层访问, 或只给少量客户访问, 建议使用rpm包安装, 因为rpm包简单

3.1.2源码包哪里来的?

rpm包是光盘中直接包含的, 所以不需要用户单独下载. 而源码包是通过官方网站下载的, 如果需要使用, 是需要单独下载的

3.2安装过程

我们来解释一下源码包安装的具体步骤

  1. 下载软件包
  2. 解压缩
  3. 进入解压缩目录
  4. ./configure         编译前准备
    这一步主要有三个作用:
    ​​​​​​​①在安装之前检测系统环境是否符合安装要求
    ②定义需要的功能选项. "./configure"支持的功能较多, 可以执行"./configure --help"命令查询其支持的功能. 一般都会通过"./configure --prefix=安装路径"来指定安装路径.
    ③把系统环境检测结果和定义好的功能选项写入Makefile文件, 后续的编译和安装需要依赖这个文件的内容
  5. make 编译
    make会调用gcc编译器, 并读取Makefile文件中的信息进行系统软件编译. 编译的目的就是把源码程序转变成能被Linux识别的可执行文件, 这些可执行文件保存在当前目录下, 编译过程较为耗时, 需要有足够的耐心
  6. make clean: 清空编译的内容(非必要步骤)
    如果在"./configure"或"make"编译中报错, 那么我们在重新执行命令之前一定要记得执行make clean 命令, 它会清空Makefile文件或这编译产生的".o"头文件
  7. make install    编译安装
    这才是真正的安装过程, 一般会写清楚程序的安装位置. 如果忘记指定安装目录, 则可以把这个命令的执行结果记录下来, 以备将来删除使用

3.3删除

源码包没有删除命令, 如果需要删除, 可以直接删除安装目录

3.4打入补丁

3.4.1补丁的生成

diff 选项 old new

#比较old和new文件的不同

选项:

        -a: 将任何文档当作文本文档处理

        -b: 忽略空格造成的不同

        -B: 忽略空白行造成的不同

        -I: 忽略大小写造成的不同

        -N: 当比较两个目录的时候, 如果某个文件只在一个目录中, 则在另一个目录中视作空文件

        -r: 当比较目录时, 递归比较子目录

        -u: 使用同一的输出格式

举例:

软件包安装,linux,运维,服务器

比较下两个文件的不同, 并生成补丁文件"txt.patch".

diff -Naur old.txt new.txt > txt.patch        # 比较两个文件的不同, 同时生成补丁文件

软件包安装,linux,运维,服务器

#后一个文件比前一个文件多两行(+表示)

3.4.2打入补丁

patch -pn < 补丁文件    # 按照补丁文件进行更新

选项:

        -pn: n为数字, 代表按照补丁文件中的路径, 指定更新文件的位置

接下来, 我们更新下"old.txt"文件,命令如下:

软件包安装,linux,运维,服务器文章来源地址https://www.toymoban.com/news/detail-787828.html

到了这里,关于软件包安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux】rpm && yum(软件包的安装以及查询)

    应用程序与系统命令的关系 典型应用程序的目录结构 Linux文件 常见的软件包封装类型 Linux内核简介 RPM软件包管理器Red-Hat Package Manager ● 由Red Hat公司提出,被 众多Linux发行版 所采用 ● 建立 统一的文件数据库 ● 详细记录软件包 安装、卸载、升级等变化 信息 ● 自动分析软

    2024年02月04日
    浏览(43)
  • 在linux下如何使用yum命令查看安装了哪些软件包

    Linux 系统下 yum 命令查看安装了哪些软件包: 1. 使用 yum 查找软件包 命令: 2. 列出所有可安装的软件包 命令: 3. 列出所有可更新的软件包 命令: 4. 列出所有已安装的软件包 命令: 5. 列出所有已安装但不在 Yum Repository 内的软件包 命令: 6. 使用 yum 获取软件包信息 命令:

    2024年02月02日
    浏览(66)
  • redis在linux和windows上的安装配置(解决问题:没有可用软件包 redis)

    Redis是一个基于 内存 的key-value结构数据库,目前互联网技术领域使用最为广泛的 存储中间件 。 Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。它存储的value类型比较丰富,也被称为结构化的NoSql数据

    2024年02月11日
    浏览(41)
  • Linux软件包管理

    Linux软件包管理 gcc 编译程序主要经过四个过程: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ui7wlR9e-1691465983118)(png/2019-10-11-11-51-23.png)] 如上图gcc编译过程 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U8OkM0eq-16914

    2024年02月13日
    浏览(83)
  • Linux命令——软件包管理

      博主最近项目上线,操作了linux系统,感觉命令很容易遗忘,因此总结一下,本文记录的是linux中相关的软件包管理命令   如果是新建立的虚拟机,可能需要安装某些软件,这时不知道系统是否已经安装,就需要用到以下这些命令 语法:yum list 作用:查询系统已经安装

    2024年02月05日
    浏览(46)
  • Linux:概述 、安装 、文件与目录结构 、vim编辑器 、网络配置 、远程登录 、系统管理 、基础命令 、软件包管理 、克隆虚拟机 、shell编程

    2.1.1、Linux是什么? Linux是一个操作系统(OS) 所谓的操作系统就是直接用来操作计算机底层硬件的软件。 2.1.2、Linux的出现 官网: https://www.centos.org/ 进入官网进行下载 有很多的镜像,以阿里云的为例: 3.3.1、下载 官网: https://www.vmware.com/ 这是下载的企业版,30天试用期,可

    2024年02月05日
    浏览(50)
  • Linux Snap软件包详解

    Linux snap 是一种软件打包和分发格式,用于在不同的Linux操作系统上安装和运行应用程序。它不仅包括应用程序本身,还包括其依赖项和运行环境,因此可以保证在任何支持 snap 的 Linux 系统中都能够以相同的方式运行(有点像 docker )。 snap 还具有自动更新功能,使得应用程序可

    2024年02月08日
    浏览(32)
  • 【Linux】源代码软件包

    人不走空                                                                            目录         🌈个人主页:人不走空       💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 1. 什么是源代码软件包? 2. 源代码软件包的主要组成部分 3. 源代码软

    2024年01月16日
    浏览(37)
  • 软件包安装

    源码包 二进制包 脚本安装包 1.2.1源码包的样子 源码包可以认为是利用不同的计算机语言而写的包, 我们打开相应的文件也能看到相应的源码 1.2.2源码包的特点 源码包的优点:  开源, 如果有足够的能力, 可以修改源代码 可以自由选择所需的功能 软件是编译安装的, 所以更加适

    2024年02月02日
    浏览(50)
  • 【Linux】:Linux软件包管理器yum

    在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安 装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接

    2024年02月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包