一、应用程序和系统库从哪里来?

两种机制,源码安装和二进制安装。

二、源码安装 tarball

1、核心思想是:利用开源代码,自己编译生成应用程序或者库,要求系统上必须已安装TMG(tar, make, gcc)。

2、tarball包的安装顺序是,先解压缩(tar)、再配置(config)、再编译(make)、再安装(make install)

tar -xvf xxx.tar.gz

到对应目录下 ./config xxxx

到对应目录下 make

到对应目录下 make install

3、应用程序安装后,为了方便升级和卸载,有一些约定俗成的规定,需要注意。

第一、在/usr/loca/src下解压缩,目的是方便管理(具体来讲是:bin文件默认查找位置是 /usr/local/,man帮助默认查找位置是/usr/local)。

第二、安装时,最好安装到 /usr/local ,考虑到卸载方便,最好每个套件在 /usr/local/下单独建立自己的文件夹。

三、二进制安装rpm包

1、核心思想是:软件厂商已经把应用程序做好,并且已经打包成二进制的rpm包,使用者只需要安装即可。

2、rpm包分为已安装和未安装两大类,在使用命令行上就只有一个差异,即是否加p. 加p的话,就表示查询未安装的rpm包信息。

3、查看已安装的rpm包

查询已安装的rpm包:rpm -qa | grep aa

举例: 

查询rpm包的依赖关系:rpm -qR xx

举例:

查询rpm包内的文件列表 :rpm -ql xx

举例:

查询某个文件所属的rpm包,用rpm -qf xxx

举例:

查询rpm包的配置信息,用 rpm -qc xxx

举例:

4、查看未安装的rpm包信息

查询rpm包的内容: rpm -qpl xxx.rpm

举例:

查询rpm包的依赖关系: rpm -qpR xxx.rpm

举例:

5、rpm包的增、删、改、查动作。

安装rpm包:rpm -i

删除rpm包: rpm -e

更新rpm包: rpm -U

查询rpm包: rpm -q

举例:

   6、安装rpm 使用rpm -i命令即可, 那么yum命令是做什么用?

解答:rpm -i 命令只会安装指定的rpm包,一旦该rpm包的依赖关系不满足,则不会安装此rpm包。

而yum命令则可以自动分析rpm包的依赖关系,把依赖包也都安装上,省去了手工逐个安装依赖包的麻烦。

四、SRPM是什么意思?跟RPM之间是什么关系?

1、要生成rpm包,必须有spec文件,此文件用来指定rpm包的各种信息,例如,rpm包的包名、依赖关系、rpm包内包含哪些文件等。

以 openvswitch 为例:

     

Summary: 简介。

Name:rpm包的名称。

Version:版本信息

Release: 该版本打包的次数说明。

Requires: 依赖关系说明。

下面是以百分号开头的内容。

%description : 描述信息。

%prep: 准备信息。在尚未进行设置或者安装之前,要编译完成的rpm帮您先做的事情。

%setup: 就是在建立tarball中说明的makefile文件,就是执行./config之类的配置文件。如果要自己新增参数,则可以在这里加入配置值。

%build: 指怎样make 编译成为可执行的程序。

%install: 构建完成后,需要安装,类似于make install

%files: 该rpm包安装的文件都要写在这里,包括目录。

2、把上述文件准备好之后,可以使用 rpmbuild -bb xxx.spec 的方式进行编译成rpm文件。

五、总结:

1、 rpm包和tarball的选择?

(一)优选rpm包,因为比较方便,但是,如果一个套件的rpm包太老,要升级到最新的rpm,依赖关系比较复杂,则此时优选tarball安装的方式。

(二)如果想在一台机器上安装多个版本的套件(测试机一般有这个需求),则只能选择tarball的方式,因为rpm包无论是安装哪个版本,都是默认安装到相同的路径下,此时就无法实现指定路径的方式,只有tarball的方式。

2、SRPM为源码rpm,内含的文件为源码而非二进制文件,所以安装SRPM时还需要经过编译。

Linux应用和系统库的2种安装方式---源码安装tarball和二进制rpm包的更多相关文章

  1. linux下的wireshark最新版安装(源码安装)以及一些常见问题

    源码安装教程 http://www.cnblogs.com/littleTing/p/3765589.html 1.下载wireshark: 网址:http://www.wireshark.org/d ...

  2. Linux软件安装管理---源码安装

    在Linux平台下,软件包的类型可以划分为两类:源码包.二进制包. 源码包: 即程序软件的源代码(一般也叫Tarball,即将软件的源码以tar打包后再压缩的资源包). 二进制包: 如 Red Hat ...

  3. linux操作之软件安装(二)(源码安装)

    源码安装 linux上的软件大部分都是c语言开发的 , 那么安装需要gcc编译程序才可以进行源码安装. yum install -y gcc #先安装gcc 安装源码需要三个步骤 1) ./confi ...

  4. Linux 中mysql安装(源码安装方式)

    本文是介绍以源码安装的方式编译和安装Mysql 5.6(可以指定安装路径),也可以不采用源码安装方式,直接用安装包的方式. 源码安装方式慎用,容易报错. 1.卸载旧版本 rpm -qa | grep ...

  5. linux 下的两种软件安装方式 —— 源码(编译、安装),编译好的二进制(直接安装)

    我们以 GPG(加密工具)为例来说明两种安装方式的区别: 源码(Source code releases,名称中则会含有src等说明信息,tarball:source),先编译再安装 GPU 的源码地 ...

  6. Zabbix的安装(源码安装)

    zabbix3.0完全安装 安装zabbix首先需要安装ltmp(lnmp),这里的t是指tengine(taobao的nginx版本),安装教程见 http://www.ltmp.cc 安装的时候P ...

  7. LAMP动静分离安装(源码安装)

    环境: 版本 IP地址 源码包版本 Centos7.5_mysql 192.168.111.3 mysql-5.7.24.tar.gz,cmake-3.13.1.tar.gz,boost_1_59_0 ...

  8. 第22章 软件安装:源码与Tarball

    开放源码的软件安装与升级简介 什么是开放源码.编译程序与可执行文件 开放源码:程序代码,写给人类看的程序语言 编译程序:将源码编译成机器能看得懂的语言 可执行文件:经过编译变成二进制程序后机器看得懂可 ...

  9. Nginx安装之源码安装

    nginx部署 1. 安装依赖 yum install gcc gccc++ pcre pcre-devel zlib zlib-devel openssl openssl-devel-y 2. 下载 ...

随机推荐

  1. ubuntu 16.04 和win10双系统ubuntu无法更新问题解决

    错误:E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem. ...

  2. 剑指offer【06】- 旋转数组的最小数字(java)

    题目:旋转数组的最小数字 考点:查找和排序 题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4, ...

  3. session的一些笔记

    HttpSession hs = request.getSession();//以键值对方式存储数据在session中hs.setAttribute("code", code);/ ...

  4. eos开发(二)使用cleos命令行客户端操作EOS(钱包wallet基础操作)

    不知道下边这一段英文你们是不是能看懂,如果看不懂那就算了,我就是转过来随便看看的. 总之你记住nodeos.cleos和keosd这三个工程十分重要就行了,回头咱们的研究都从这三个工程杀进去. EOS ...

  5. Kubernetes 服务入口管理 Traefik Ingress Controller

    前面部署了 kubernetes/ingress-nginx 作为 Ingress Controller,使用 Nginx 反向代理与负载,通过 Ingress Controller 不断的跟 Kub ...

  6. java中fail-fast 和 fail-safe的区别

    java中fail-fast 和 fail-safe的区别   原文地址:http://javahungry.blogspot.com/2014/04/fail-fast-iterator-vs-fa ...

  7. 【EF6学习笔记】(六)创建复杂的数据模型

    本篇原文地址:Creating a More Complex Data Model 本篇讲的比较碎,很多内容本人认为并不是EF的内容,既然原文讲了,那就按照原文来学习吧... 第1步:通过属性来定制化 ...

  8. 机器学习基础:(Python)训练集测试集分割与交叉验证

    在上一篇关于Python中的线性回归的文章之后,我想再写一篇关于训练测试分割和交叉验证的文章.在数据科学和数据分析领域中,这两个概念经常被用作防止或最小化过度拟合的工具.我会解释当使用统计模型时,通常 ...

  9. WebService SOAP

    <wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http:// ...

  10. springboot情操陶冶-@Conditional和@AutoConfigureAfter注解解析

    承接前文springboot情操陶冶-@Configuration注解解析,本文将在前文的基础上阐述@AutoConfigureAfter和@Conditional注解的作用与解析 1.@Condit ...