当前位置: 澳门新濠3559 > 操作系统 > 正文

绝大多数开源软件都是直接以源代码形式发布的

时间:2019-12-26 00:20来源:操作系统
二、RPM(RPM Package Manager,RPM包管理器) 使用源代码形式安装软件的优点是适用于所有系统、可定制,而缺点则是操作复杂、编译时间较长、极容易出现错误。为了方便使用,ErikTroan 和

二、RPM(RPM Package Manager,RPM包管理器)

使用源代码形式安装软件的优点是适用于所有系统、可定制,而缺点则是操作复杂、编译时间较长、极容易出现错误。为了方便使用,Erik Troan 和 Marc Ewing 开发了 RPM(RPM Package Manager,RPM 包管理器),RPM 最早是应用在 RedHat(红帽)中的。

 

三、RPM查询

rpm -qa                     列出已安装的所有rpm包
rpm -qa | grep '.*gnome.*'  列出所有名称含有gnome的包

rpm -qf filename            查询目标文件属于哪个包

rpm -qi package             获取一个已安装包的相关信息
rpm -qip package.rpm        获取一个未安装包的相关信息

rpm -ql package             获取一个已安装包内的文件列表
rpm -qlp package.rpm        列出一个未安装包内的文件列表

  

CentOS软件管理之源代码以及RPM软件包管理

在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 -ixiaoluo-1.1.0-5.el6.x86_64.rpm

卸载软件:rpm -exiaoluo

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

常用参数:

-v显示详细信息

-h显示文本进度条

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

[[email protected] home]# rpm -ivh tigervnc-1.1.0-5.el6.x86_64.rpm   // 通常我们一般安装时跟上 -ivh参数,来显示安装的详细信息Preparing...                ########################################### [100%]   1:tigervnc               ########################################### [100%]

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

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

[[email protected] 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命令即可查看

澳门新濠3559 1

[[email protected] home]# rpm -qajava-1.6.0-openjdk-devel-1.6.0.0-1.50.1.11.5.el6_3.x86_64qimageblitz-0.0.4-1.el6.x86_64gnome-python2-gnomevfs-2.28.0-3.el6.x86_64perl-ExtUtils-ParseXS-2.2003.0-129.el6.x86_64iscsi-initiator-utils-6.2.0.873-2.el6.x86_64libhbaapi-2.2.6-1.el6.x86_64perl-BSD-Resource-1.29.03-3.el6.x86_64sane-backends-1.0.21-3.el6.x86_64gtkspell-2.0.16-1.el6.x86_64libbonobo-2.24.2-5.el6.x86_64evolution-data-server-doc-2.28.3-16.el6.noarchlibhbalinux-1.0.14-1.el6.x86_64kde-l10n-British-4.3.4-5.el6.noarchperl-CGI-3.51-129.el6.x86_64********************************此处省略N个字********************************************

澳门新濠3559 2

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

澳门新濠3559 3

[[email protected] home]# rpm -qi tigervncName        : tigervnc                     Relocations: (not relocatable)Version     : 1.1.0                             Vendor: CentOSRelease     : 5.el6                         Build Date: 2013年02月23日 星期六 06时28分42秒Install Date: 2013年05月20日 星期一 20时43分01秒      Build Host: c6b9.bsys.dev.centos.orgGroup       : User Interface/Desktops       Source RPM: tigervnc-1.1.0-5.el6.src.rpmSize        : 659349                           License: GPLv2+Signature   : RSA/SHA1, 2013年02月24日 星期日 01时39分36秒, Key ID 0946fca2c105b9dePackager    : CentOS BuildSystem <http://bugs.centos.org>URL         : http://www.tigervnc.comSummary     : A TigerVNC remote display systemDescription :Virtual Network Computing (VNC) is a remote display system whichallows you to view a computing 'desktop' environment not only on themachine where it is running, but from anywhere on the Internet andfrom a wide variety of machine architectures.  This package contains aclient which will allow you to connect to other desktops running a VNCserver.

澳门新濠3559 4

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

[[email protected] home]# rpm -qf /usr/share/mysql/mysql-libs-5.1.67-1.el6_3.x86_64

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

澳门新濠3559 5

[[email protected] home]# rpm -ql tigervnc/usr/bin/vncviewer/usr/share/applications/vncviewer.desktop/usr/share/doc/tigervnc-1.1.0/usr/share/doc/tigervnc-1.1.0/LICENCE.TXT/usr/share/doc/tigervnc-1.1.0/README.txt/usr/share/icons/hicolor/usr/share/icons/hicolor/16x16/usr/share/icons/hicolor/16x16/apps/usr/share/icons/hicolor/16x16/apps/tigervnc.png/usr/share/icons/hicolor/24x24/usr/share/icons/hicolor/24x24/apps/usr/share/icons/hicolor/24x24/apps/tigervnc.png/usr/share/icons/hicolor/48x48/usr/share/icons/hicolor/48x48/apps/usr/share/icons/hicolor/48x48/apps/tigervnc.png/usr/share/locale/de/LC_MESSAGES/tigervnc.mo/usr/share/locale/fr/LC_MESSAGES/tigervnc.mo/usr/share/locale/pl/LC_MESSAGES/tigervnc.mo/usr/share/locale/ru/LC_MESSAGES/tigervnc.mo/usr/share/locale/sk/LC_MESSAGES/tigervnc.mo/usr/share/locale/sv/LC_MESSAGES/tigervnc.mo/usr/share/man/man1/vncviewer.1.gz

澳门新濠3559 6

我们看到安装 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 这个命令来进行查看

澳门新濠3559 7

[[email protected] home]# rpm -qip zip-3.0-1.el6.x86_64.rpm Name        : zip                          Relocations: (not relocatable)Version     : 3.0                               Vendor: CentOSRelease     : 1.el6                         Build Date: 2010年11月11日 星期四 23时26分40秒Install Date: (not installed)               Build Host: c6b3.bsys.dev.centos.orgGroup       : Applications/Archiving        Source RPM: zip-3.0-1.el6.src.rpmSize        : 823612                           License: BSDSignature   : RSA/8, 2011年07月03日 星期日 13时07分05秒, Key ID 0946fca2c105b9dePackager    : CentOS BuildSystem <http://bugs.centos.org>URL         : http://www.info-zip.org/Zip.htmlSummary     : A file compression and packaging utility compatible with PKZIPDescription :The zip program is a compression and file packaging utility.  Zip isanalogous to a combination of the UNIX tar and compress commands andis compatible with PKZIP (a compression and file packaging utility forMS-DOS systems).Install the zip package if you need to compress files using the zipprogram.

澳门新濠3559 8

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

澳门新濠3559 9

[[email protected] home]# rpm -qlp zip-3.0-1.el6.x86_64.rpm /usr/bin/zip/usr/bin/zipcloak/usr/bin/zipnote/usr/bin/zipsplit/usr/share/doc/zip-3.0/usr/share/doc/zip-3.0/CHANGES/usr/share/doc/zip-3.0/LICENSE/usr/share/doc/zip-3.0/README/usr/share/doc/zip-3.0/README.CR/usr/share/doc/zip-3.0/TODO/usr/share/doc/zip-3.0/WHATSNEW/usr/share/doc/zip-3.0/WHERE/usr/share/doc/zip-3.0/algorith.txt/usr/share/man/man1/zip.1.gz/usr/share/man/man1/zipcloak.1.gz/usr/share/man/man1/zipnote.1.gz/usr/share/man/man1/zipsplit.1.gz

澳门新濠3559 10

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 :

[[email protected] home]# rpm -K zip-3.0-1.el6.x86_64.rpm zip-3.0-1.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

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

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

[[email protected] home]# rpm -V mysql[[email protected] home]# 

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

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

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

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

在Linux系统下,对于软件包的管理有多种机制,有源代码方式、RPM软件包管理方式以及YUM软件管理...

四、RPM验证

软件包在传播的过程中可能会被恶意地修改,所以为了安全起见,现代系统都加入了对软件包的验证功能。

验证一般使用非对称加密算法,所以需要一个公钥。导入公钥的方法是:

rpm --import /path/to/key_file

验证未安装的软件包:

rpm -K package.rpm

验证已安装的软件包:

rpm -V package

  

 

参考链接:

Linux中RPM包命名规则

YUM 公钥认证及导入

二、RPM(RPM Package Manager,RPM包管理器)

使用源代码形式安装软件的优点是适用于所有系统、可定制,而缺点则是操作复杂、编译时间较长、极容易出现错误。为了方便使用,Erik Troan 和 Marc Ewing 开发了 RPM(RPM Package Manager,RPM 包管理器),RPM 最早是应用在 RedHat(红帽)中的。

 

2.命名规范

packagename-1.2.0-30.el6.x86_64.rpm

(包名-版本号-操作系统-硬件平台)

其中,

操作系统:el6 表示 RedHat 6.x 或 CentOS 6.x 操作系统。

硬件平台:x86_64 表示 64 位平台,i386 表示 32 位平台,noarch 表示不需要特定的硬件平台(跨平台)。

 

3. 基本命令

安装包:

安装包:rpm -i packagename.rpm

卸载包:

rpm -e packagename

升级包:

rpm -U packagename-new.rpm

通过 http、ftp 协议安装:

rpm - ivh http://www.domainname.com/packagename.rpm

常用参数:

-v    显示详细信息
-h    显示进度条
-i    安装包
-e    卸载包
-U    更新(升级)包
-q    查询
-a    查询所有已安装包
-i    显示包信息
-h    取hash(哈希)
-f    查询文件属于哪个包
-p    未安装包的信息
-l    列出包里的文件

 

三、RPM查询

rpm -qa                     列出已安装的所有rpm包
rpm -qa | grep '.*gnome.*'  列出所有名称含有gnome的包

rpm -qf filename            查询目标文件属于哪个包

rpm -qi package             获取一个已安装包的相关信息
rpm -qip package.rpm        获取一个未安装包的相关信息

rpm -ql package             获取一个已安装包内的文件列表
rpm -qlp package.rpm        列出一个未安装包内的文件列表

  

1. 设计目标

RPM 通过将源代码基于特定平台系统编译为可执行文件,并保存依赖关系,来简化开源软件的安装管理。RPM 的设计目标如下:

  • 使用简单
  • 使用单一软件包格式文件发布(.rpm 文件)
  • 可升级
  • 追踪软件依赖关系
  • 基本信息查询
  • 软件验证功能
  • 支持多平台

 

1.设计目标

RPM 通过将源代码基于特定平台系统编译为可执行文件,并保存依赖关系,来简化开源软件的安装管理。RPM 的设计目标如下:

  • 使用简单
  • 使用单一软件包格式文件发布(.rpm 文件)
  • 可升级
  • 追踪软件依赖关系
  • 基本信息查询
  • 软件验证功能
  • 支持多平台

 

2. 命名规范

packagename-1.2.0-30.el6.x86_64.rpm

(包名-版本号-操作系统-硬件平台)

其中,

操作系统:el6 表示 RedHat 6.x 或 CentOS 6.x 操作系统。

硬件平台:x86_64 表示 64 位平台,i386 表示 32 位平台,noarch 表示不需要特定的硬件平台(跨平台)。

 

3.基本命令

安装包:

安装包:rpm -i packagename.rpm

卸载包:

rpm -e packagename

升级包:

rpm -U packagename-new.rpm

通过 http、ftp 协议安装:

rpm - ivh http://www.domainname.com/packagename.rpm

常用参数:

-v    显示详细信息
-h    显示进度条
-i    安装包
-e    卸载包
-U    更新(升级)包
-q    查询
-a    查询所有已安装包
-i    显示包信息
-h    取hash(哈希)
-f    查询文件属于哪个包
-p    未安装包的信息
-l    列出包里的文件

 

 一、源代码管理

绝大多数开源软件都是直接以源代码形式发布的,一般会被打包为 tar.gz 的归档压缩文件。程序源代码需要编译为二进制可执行文件后才能够运行使用。源代码的基本编译流程为:

源代码形式的软件使用起来较为麻烦,但是兼容性和可控性较好。并且开源软件一般会大量使用其他开源软件的功能,所以开源软件会有大量的依赖关系(使用某软件需要先安装其他软件)。

 

一、源代码管理

绝大多数开源软件都是直接以源代码形式发布的,一般会被打包为 tar.gz 的归档压缩文件。程序源代码需要编译为二进制可执行文件后才能够运行使用。源代码的基本编译流程为:

  1. ./configure:解压缩后运行该命令,它主要检查编译环境、相关库文件以及配置参数并生成 makefile
  2. make:对源代码进行编译,生成可执行文件
  3. make install:将生成的可执行文件安装到计算机中

源代码形式的软件使用起来较为麻烦,但是兼容性和可控性较好。并且开源软件一般会大量使用其他开源软件的功能,所以开源软件会有大量的依赖关系(使用某软件需要先安装其他软件)。

 

Linux 入门记录:十九、Linux 包管理工具 RPM,linuxrpm

四、RPM验证

软件包在传播的过程中可能会被恶意地修改,所以为了安全起见,现代系统都加入了对软件包的验证功能。

验证一般使用非对称加密算法,所以需要一个公钥。导入公钥的方法是:

rpm --import /path/to/key_file

验证未安装的软件包:

rpm -K package.rpm

验证已安装的软件包:

rpm -V package

  

参考链接:
Linux中RPM包命名规则
YUM 公钥认证及导入

入门记录:十九、Linux 包管理工具 RPM,linuxrpm 一、源代码管理 绝大多数开源软件都是直接以源代码形式发布的,一般会被打包为 tar...

编辑:操作系统 本文来源:绝大多数开源软件都是直接以源代码形式发布的

关键词: