软件安装源码和二进制包

一、linux中软件安装包分类

1、软件包分类

 源码包

 二进制包

2、源码包

2.1 源码包的概述

什么是源码包?其实就开发完是什么样子就是什么样子,大多数源码包都是c或汇编语言写的。

举例:

 **我们也可以自己写一个c语言的helloworld程序,然后自己编译,自己执行一下,玩玩儿,注意:c语言的程序后缀是.c**
#include

int main (void)

{
   

      printf ("hello world\n"; 

}

c语言需要c的编译器,就像java语言的jdk,所以要在linux上运行c语言的程序,先要安装工具gcc(这个工具是多语言的集成编译器,里边包含了c语言的编译器),c++语言编写的程序的编译器gcc-c++

yum insall -y gcc gcc-c++
gcc -c hello.c   #-c 生成“.o”头文件。这里会生成 hello.o 头文件,但是不会生成执行文件
gcc -o hello hello.o  #-o 生成执行文件,并制定执行文件名。这里生成的 hello 就是可执行文件
./hello  #执行 hello 文件

在这里插入图片描述

2.2 源码包特点

源码包的优点:

​  开源,如果有足够的能力,可以修改源代码

​  软件是本机编译,安装,所以更加适合自己的系统,更加稳定也效率更高,普遍认为源码包安装比二进制包安装效率高5%左右

 卸载方便,删除安装目录,伦理上认为没的什么残留

源码包有缺点:

 安装过程步骤较多,尤其安装较大的软件集合时,容易出现拼写错误

 编译过程时间较长,安装比二进制安装时间长

 因为是编译安装,安装过程中一旦报错新手很难解决,因为我们安装这些软件绝大多数都不是我们自己开发的

3、二进制包

  3.1 二进制包分类

 在 Debian 和 ubuntu 中,二进制软件包叫 DPKG 包。

 在Red Hat系列的系统中,讲RPM包。

​  我们学习的是 CentOS 7.6,所以我们这里学习的是 RPM 包管理系统

  RPM 包的优点:

 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载

 安装速度比源码包安装快的多

  RPM 包的缺点:

 软件包已经经过编译,看不到源代码

 依赖性。

  RPM简单易用,但是它的依赖关系是最头疼的!常见的依赖关系:

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

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

   3)函数库依赖

  安装某个软件,需要某个具体的文件,这个文件没有单独成包,是包含在某一个别的软件包中的。

二 、rpm二进制包的安装

1、rpm 包命名规则

/mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm

zsh -5. 0. 2- 28. el7. x86_64.rpm

软件名 主版本号 次版本号  修订 release(第几次发布版本) 操作系统版本/软件发行商 软件包是64位包

修订指是的第几次修改bug。

发布指的是:第几次发布。 发布时,可能只是对软件安装的默认参数做了修改,而没有其它改动。

2、rpm 包手工安装命令
  2.1,RPM 包具体的安装命令

​    1)安装命令

    rpm –ivh 包全名(带绝对路径)
    选项:

​       -i install 安装(install)

​        -v 显示更详细的信息(verbose)

​        -h 显示安装进度(hash)

​         --nodeps 不检测依赖性安装,在实际的工作中不准用。不管依赖性,想强行安装。注意:这样不检测依赖性安装的软件基本是不能使用的,所以不建议这样做,实验中可以玩玩儿,卸载软件的时候可以用一下。

​         --replacefiles替换文件安装。

​         --replacepkgs 替换软件包安装

​         --force 强制安装。不管是否已经安装,都重新安装。就是–replacefiles 和–replacepkgs 的综合

​          作用:找回丢失的重要系统文件,一会儿例子中演示。

       --test 测试安装。**不会实际安装,只是检测一下依赖性。

       --prefix 指定安装路径,这个选项基本不用。如果指定了安装路径, 软件没有安装到系统默认路径中的话, 系统会找不到这些**

      安装的软件,rpm包的安装的卸载命令就不能卸载掉软件,卸载就需要你一个文件一个文件

你可能感兴趣的:(Linux,linux,ubuntu,运维)