在Linux系统下,对于软件包的管理有多种机制,有源代码方式、RPM软件包管理方式以及YUM软件管理方式,本篇随笔将详细讲解CentOS下源代码形式安装软件以及RPM软件包管理机制

一、源代码形式

首先我们先来看一下源代码的方式。我们知道,在开源的环境下,大多数的开源软件都是以源代码的形式来发布,通常将源代码打包成tar.gz的归档压缩文件发布到网上供我们下载使用。但是我们下载下来的源代码方式我们还不能够直接使用,不像在windows系统上直接下载下来可执行的二进制文件,我们需要将下载好的源码编译成可执行的二进制文件才能运行使用,源代码形式安装流程一般如下:

①./configure  检查编译环境、相关库文件以及配置参数并生成makefile

②make  将源代码编译成可执行的二进制文件

③make install  安装编译好的可执行文件

基本上所有以源代码形式发布的软件都是按照以上流程来进行安装,大家可能觉得其实步骤就这三个,安装过程非常简单!其实不然,通常以源代码形式发布的软件,在对其进行①、②步操作时往往会出很多很多的问题,比如说编译过程中缺少所需的库文件,或者说编译源码时又需要依赖A文件,编译A文件时可能又需要用到B文件,这样我们需要花大量时间去找这些依赖的问题,同时如果一个软件特别大的话,我们在将其编译过程中要等待非常久的时间。所以说其实源代码形式的安装软件并不是我们想象的那么简单,但是为什么源代码形式的软件管理还一直存在呢?必然也有其优点,因为我们的源码都要通过编译成可执行的二进制文件才行,所以说它适用于各种操作系统平台,我只需要在各个操作系统平台上对其源码进行编译即可运行起来了。

总结一下

源代码形式的缺点:操作复杂、编译时间长、极易出现错误

源代码形式的优点:适用于所有的操作系统、可定制

二、RPM软件包管理

因为源代码方式安装软件终究还是比较麻烦,所以说现在出现了许多代替源码方式安装的软件管理机制。RPM就是其中一个,RPM(redhat Package Manager)是为了方便软件管理使用所开发的一套开源软件格式,它的设计目标有以下几个:

①使用简单  通过 rpm 命令就可以完成rpm软件的安装

②以单一软件包格式发布(.rpm文件)  我们可以看到rpm软件包都只有一个以.rpm的文件(rpm软件包管理机制要求软件包必须以.rpm结尾)

③可升级  rpm软件包是可以升级的,比如说我下载好了一个新版本的rpm软件,我们只需要通过 rpm -u 命令即可升级

④追踪依赖关系  rpm软件包管理机制可以追踪软件之间的依赖关系,这样在安装时就会非常的方便

⑤保存软件基本信息

⑥软件验证功能

⑦支持多平台  支持多平台并不是说一个rpm软件可以在多个操作系统平台上运行,而是说该软件会针对多个平台发布不同的rpm软件包

RPM软件包常用的命名规范如下

xiaoluo-1.1.0-5.el6.x86_64.rpm

其中xiaoluo就是我们的软件名字,1.1.0-5是该软件的版本号,el6.x86_64这两个部分是指我们该rpm包的运行平台的操作系统版本。例如el6就表示是针对于RHEL6的发现版本,我们使用的是什么版本的Linux操作系统,我们就要去下载对应的rpm版本,x86_64表示是运行在64位上的系统。

RPM的基础命令

rpm的使用方式非常简单,常用的一些命令如下:

安装软件:rpm -i xiaoluo-1.1.0-5.el6.x86_64.rpm

卸载软件:rpm -e xiaoluo

升级形式安装:rpm -U xiaoluo-1.1.0-5.el6.x86_64.rpm

常用参数:

-v  显示详细信息

-h  显示文本进度条

例如我们这里安装一个tigervnc的rpm软件包实验一下:

[root@xiaoluo home]# rpm -ivh tigervnc-.-%:tigervnc               ########################################### [%]

安装过程根据软件包的大小以及机器的配置时间会不应相同,我们发现我们的这个rpm已经就安装好了。

如果我们要将其卸载的话也非常的简单,通过 rpm -e 软件名字 即可卸载了,如:

[root@xiaoluo home]# rpm -e tigervnc

这样我们的rpm软件就已经卸载了,同样我们可以使用 rpm -U 软件名字 来对rpm软件进行升级

RPM常用查询命令

rpm -qa   列出所有已安装的rpm软件

rpm -qf filename  查询指定文件属于哪个rpm包

rpm -qi packagename  查询已软件包的信息

rpm -ql packagename  查询指定软件包包含的文件

rpm -qip software.rpm 查询rpm文件的信息

rpm -qilp software.rpm  查询rpm文件包含的文件

例如我们要查看当前操作系统上所有已安装的rpm软件,通过 rpm -qa 命令即可查看

[root@xiaoluo home]# -.-openjdk-devel-.-..-.--python2-gnomevfs-.--ExtUtils-ParseXS-.--initiator-utils-.--.--BSD-Resource-.--backends-.--.--.--data-server-doc-.--.--l10n-British-.--CGI--********************************此处省略N个字********************************************

如果我们需要查看刚才安装好的 tigervnc 软件的详细信息,通过 rpm -qi tigervnc 命令即可查看:

[root@xiaoluo home]# ./Desktops       Source RPM: tigervnc-.-                           License: GPLv2+/<http:URL         : http:

如果我们需要查看当前操作系统文件下某一个文件夹是属于哪个rpm包的,我们可以通过 rpm -qf filename 命令来进行查看

[root@xiaoluo home]#
-libs-.-.el6_3.x86_64

如果我们需要查看指定的rpm软件包所包含的文件,可以通过 rpm -ql packagename 命令来进行查看

[root@xiaoluo home]# /usr/bin//usr/share/applications//usr/share/doc/tigervnc-./usr/share/doc/tigervnc-.//usr/share/doc/tigervnc-.//usr/share/icons//usr/share/icons/hicolor//usr/share/icons/hicolor/16x16//usr/share/icons/hicolor/16x16/apps//usr/share/icons/hicolor//usr/share/icons/hicolor/24x24//usr/share/icons/hicolor/24x24/apps//usr/share/icons/hicolor//usr/share/icons/hicolor/48x48//usr/share/icons/hicolor/48x48/apps//usr/share/locale/de/LC_MESSAGES//usr/share/locale/fr/LC_MESSAGES//usr/share/locale/pl/LC_MESSAGES//usr/share/locale/ru/LC_MESSAGES//usr/share/locale/sk/LC_MESSAGES//usr/share/locale/sv/LC_MESSAGES//usr/share//man1/vncviewer..gz

我们看到安装 tigervnc 这个rpm软件时,其包含了以上这么多的文件内容

以上这几个rpm查询命令都是对已经安装好的rpm软件进行查询,如果我们有一个rpm的软件包,但是还没有对其进行安装,我又想查看其软件信息,以及软件所包含的文件内容,那又怎么办呢?直接加上一个参数 p 即可,例如:

我要查看 zip-3.0-1.el6.x86_64.rpm 这个rpm软件包的信息,我们可以通过  rpm -qip zip-3.0-1.el6.x86_64.rpm   这个命令来进行查看

[root@xiaoluo home]# /Archiving        Source RPM: --/<http:URL         : http:Summary     : A  program is a compression and  packaging utility - package  you need to compress files using the

我如果想看下 zip-3.0-1.el6.x86_64.rpm 这个rpm软件在安装后会产生哪些文件,可以使用 rpm -qlp zip-3.0-1.el6.x86_64.rpm 命令即可

[root@xiaoluo home]# /usr/bin//usr/bin//usr/bin//usr/bin//usr/share/doc/-/usr/share/doc/-//usr/share/doc/-//usr/share/doc/-//usr/share/doc/-//usr/share/doc/-//usr/share/doc/-//usr/share/doc/-//usr/share/doc/-//usr/share//man1/./usr/share//man1/zipcloak./usr/share//man1/zipnote./usr/share//man1/zipsplit..gz

RPM软件验证命令

rpm -K software.rpm  验证rpm文件

rpm -V softname  验证已安装的软件

RPM软件包管理还具有验证功能,因为在开源的软件里,源代码都是开放的,我们从网上下载的软件可以被一些不法分子在里面植入了一些***程序,这样就会损害我们的操作系统。所以为了安全起见现代操作系统都加入了对软件的验证功能。

验证通常是使用非对称的加密算法,所以就需要一个密钥。一般的RPM软件包里面都加入了密钥,如果没有加入我们可以通过 rpm --import RPM-GPG-KEY-CentOS-6 命令手动加入即可。

验证rpm文件我们可以使用 rpm -K software.rpm 命令,例如我们要验证刚才的 zip-3.0-1.el6.x86_64.rpm :

[root@xiaoluo home]# --.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

验证以后发现该软件是没有问题的。

验证已安装的软件我们可以使用 rpm -V softname 命令,例如我要验证一下安装的 mysql 软件,就可以使用如下命令:

[root@xiaoluo home]#

如果没有出现任何错误,就表示该软件是完整的,没有被修改。

我们使用的RHEL以及CentOS等Linux系统,其软件包的安装维护都是通过RPM软件包来进行管理的,我们也看到使用RPM软件包来对软件进行管理非常的方便。

注意:】但是我们需要清楚一个问题,就是RPM软件包管理并不会给我们自动的解决软件包直接的依赖关系,我们在安装这个rpm包时,如果需要依赖其它的rpm包,就需要将所依赖的rpm包同时安装才行,那么有什么方法可以自动解决软件包的依赖关系呢?在下一篇随笔里面我将进行详细的记录、讲解!

本篇随笔主要记录了在Linux系统下安装软件的两种方式,一个是源代码形式的安装,另一个就是我们RPM软件包的形式安装,在后续的学习过程中,将继续记录自己学习Linux的点点滴滴!!

转载于:https://blog.51cto.com/sandshell/1947766

Linux学习之CentOS(二十三)--Linux软件管理之源代码以及RPM软件包管理相关推荐

  1. Linux学习之CentOS(二)--初识linux的一些常用命令

    Linux学习之CentOS(二)--初识linux的一些常用命令 在VM上安装完了CentOS6.4以后,看着linux系统成功跑起来,心里小激动了一把......但是前方学习的道路还很遥远... ...

  2. Linux学习之CentOS(二十二)--单用户模式下修改Root用户的密码

    在上一篇随笔里面详细讲解了Linux系统的启动过程 (Linux学习之CentOS(二十一)--Linux系统启动详解),我们知道Linux系统的启动级别一共有6种级别,通过 /etc/inittab ...

  3. Linux学习之CentOS(二十九)--Linux网卡高级命令、IP别名及多网卡绑定

    本篇随笔将详细讲解Linux系统的网卡高级命令.IP别名以及Linux下多网卡绑定的知识 一.网卡高级命令 在之前的一篇随笔里Linux学习之CentOS(九)--Linux系统的网络环境配置,详细讲 ...

  4. Linux学习笔记(二十三) -- QT的安装和卸载

    1.QT简介 Qt 是一个跨平台C++图形用户界面应用程序开发框架.它可以用来开发GUI程序和非GUI程序(比如控制台工具和服务器). 2.QT安装 使用如下命令: sudo apt-get inst ...

  5. Linux学习之CentOS(三)--初识linux的文件系统以及用户组等概念

    进入到了Linux学习之CentOS第三篇了,这篇文章主要记录下对linux文件系统的初步认识,以及用户组.用户权限.文件所有者.文件所在组等概念 一.Linux文件结构及基本文件夹 文件系统是Lin ...

  6. (鸟哥教材)Linux学习日记(二:Linux背景概念)

    文章目录 一.Linux背景概念 1.什么是Linux 2.什么是UNIX 3.什么是BSD 4.什么是MIinix 5.什么是GNU计划 6.什么是POSIX 7.什么是386计算机 8.LInux ...

  7. Linux学习笔记(二) -- Linux学习笔记(二) – 解决VMware主窗口中的虚拟机窗口太小的方法

    1.问题描述 在虚拟机中安装完ubuntu操作系统后,我们会发现ubuntu界面在主窗口中占比很小,如下图所示: 这给操作带来了极大的不便. 2.解决步骤 1.在VMware中启动ubuntu系统: ...

  8. Linux学习之CentOS(三十三)--DNS基础及域名系统架构

    本篇文章将主要讲解DNS的一些基础知识以及域名的系统架构,当然这篇随笔是为后面的配置自己的DNS服务器来奠定基础的... 一.域名 在讲解DNS之前,首先粗略的说一下域名这个东西 比如说我们在用浏览器 ...

  9. Kali linux 学习笔记(二十三)提权——几个好工具(WCE、fgdump、mimikatz) 2020.3.4

    前言 windows身份认证过程如图所示 上一届提到的pwdump是从SAM database里读取 如果能从内存里读取 面临的防卫会低很多 1.WCE(windows credential edit ...

最新文章

  1. 微软SCRUM 1.0流程模板在中文版TFS2010上无法创建项目的解决办法(续)
  2. java 获取excel最后一行_查找Excel电子表格中的最后一行
  3. 面对百亿用户数据,日均亿次请求,携程应用架构如何涅槃?
  4. linux 操作系统详解,Linux操作系统详解
  5. 前端学习(2993):vue+element今日头条管理--加入git管理
  6. leetcode 116 --- 填充每个节点指向最右节点的next指针
  7. java中br.readline_java中br.readLine与 br.read的用法有什么区别??
  8. Coding List
  9. VC++ 用setsockopt()来控制recv()与send()的超时
  10. 看高手都是运用的灵活自如,打算从今天开始学习他!
  11. HCIE Secuirty 防火墙内容安全组合 备考笔记(幕布)
  12. 80行代码轻松搞定反向传播神经网络(BPNN)
  13. 注塑成型工艺中的背压到底有多重要?
  14. ArmHub社区_新手上路
  15. 光波长与RGB数值的转换
  16. 世界上第一位程序员是女的?
  17. 一个Python里最好的分词库!
  18. Python3 获取CSDN博客文章的阅读数和评论量
  19. PC机安装Mac OS X Snow Leopard各硬件兼容列表
  20. html ie乱码,ie浏览器字体出现乱码解决方法

热门文章

  1. 刷爆全网的动态条形图,原来 5 行 Python 代码就能实现!
  2. 星期和工作日计算,你会了吗?
  3. UNITY 多个子MESH与贴图的对应关系
  4. AngularJS中使用HTML5摄像头拍照
  5. net core 使用 rabbitmq
  6. 为什么很难训练深度神经网络?
  7. 回顾2017,展望2018
  8. webpack学习笔记
  9. 关于数组集合之间的转换
  10. [RGEOS]空间拓扑关系