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)函数库依赖
安装某个软件,需要某个具体的文件,这个文件没有单独成包,是包含在某一个别的软件包中的。
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包的安装的卸载命令就不能卸载掉软件,卸载就需要你一个文件一个文件