centos

sys.12.1 linux程序包管理(包管理器基本概念)

 

导言:

PART 1:
———

API: Application  Program  Interface ,  应用程序接口;
ABI: Application  Binary  Interface ,  应用程序二进制接口;

Unix-like类系统的ABI是ELF格式;
Windows系统的ABI是exe或者msi格式;

库级别的虚拟化可以抹平上面2个不同二进制格式的ABI接口:
Linux系统采用WinE程序,可兼容Windows的程序;
Windows系统采用Cywin程序,可兼容Linux的程序;

系统级开发语言:C/C++; 例如, httpd,vsftpd , nginx etc.
应用级开发语言:java/python/perl/ruby/php;

PART 2:
————-

C/C++程序格式
1> 源代码格式:
源代码是文本格式的程序代码;
需要有编译开发环境,编译开发环境包括:编译器、头文件、开发库;
编译源代码过程中需要解决错综复杂的依赖关系,可用项目构建工具来解决编译顺序,C/C++的项目构建工具是’make’;

2> 二进制格式:
文本格式的程序代码由编译器编译完成后,形成二进制的可执行文件格式,二进制文件包括:二进制程序、库文件、配置文件、帮助文件等;

java/python程序格式
1> 源代码格式:
编译源代码,编译成能够在其虚拟机上运行的文件格式;Java的虚拟机叫jvm,python的虚拟机叫pvm;
需要由编译开发环境,开发环境指对应应用程序的虚拟机以及虚拟机上提供的编译器,编译开发环境包括:编译器、开发库;
编译源代码过程中需要解决错综复杂的依赖关系,可用项目构建工具来解决编译顺序,java的项目构建工具是’maven’;

2> 二进制格式:
文本格式的程序代码由编译器编译完成后,形成二进制的可执行文件格式,二进制文件包括:二进制程序、库文件、配置文件、帮助文件等;

程序包管理器

源代码借助编译环境编译成可在目标系统上运行的二进制格式(目标二进制格式),制作好后,把二进制格式文件的4个或以上的文件组织成一个或有限几个”包”文件;
经过上面步骤后,能够为用户提供简便操作:安装、升级、卸载、查询、校验等;

1.1 程序包管理器类别

debian :  dpt包管理器,程序包管理命令为dpkg,文件格式为’.deb’;
redhat :  rpm管理器(redhat package manager),程序包管理命令为rpm,文件格式为’.rpm’;[rpm  is  package  manager  !!!]
S.U.S.E:  也采用redhat的rpm包管理器,但跟Redhat的管理不兼容,主要是文件路径不相同;管理命令为rpm,文件格式为’.rpm’;

Gentoo : 采用FreeBSD的包管理机制,ports机制;
Archlinux : 包管理器pacman,管理命令为pacman;

1.2 程序包命名格式

源代码程序包:name-VERSION-tar.{gz,bz2,xz}
VERSION: major.minor.release

rpm程序包:name-VERSION-release.arch.rpm
VERSION: major.minor.release

rpm包程序有些是分主程序包、其他功能的子程序包:
主程序包:name-VERSION-release.arch.rpm
子程序包:name-function-name-VERSION-release.arch.rpm

1.3 自动解决软件包依赖关系的前端工具

yum :   rhel系列系统上rpm包管理器的前端工具;
apt-get(apt-cache):  deb包管理器的前端工具;
zypper:  suse的rpm前端管理工具;
dnf:  Fedora 22+版本系统上rpm包管理器的前端工具;

1.4 程序包管理器功能

将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而方便地实现程序包的安装、升级、卸载和查询等管理操作;

程序包管理器的组织格式:
1> 程序包的组成清单(每个程序包都单独实现):文件清单、安装或卸载时需运行的脚本;
2> 数据库(公共):程序包的名称和版本,程序包的依赖关系,每个程序包的功能说明,安装生成的各文件路径及校验码信息等;

centos系统上rpm的数据库路径:/var/lib/rpm;

[root@kouyuushinn ~]# ll /var/lib/rpm
total 74556
-rw-r--r--. 1 root root  2293760 May  9 07:08 Basenames
-rw-r--r--. 1 root root     8192 May  9 06:42 Conflictname
-rw-r--r--. 1 root root   643072 May  9 07:08 Dirnames
-rw-r--r--. 1 root root    20480 May  9 07:08 Group
-rw-r--r--. 1 root root    12288 May  9 07:08 Installtid
-rw-r--r--. 1 root root    36864 May  9 07:08 Name
-rw-r--r--. 1 root root    16384 May  9 05:16 Obsoletename
-rw-r--r--. 1 root root 71254016 May  9 07:08 Packages
-rw-r--r--. 1 root root  1773568 May  9 07:08 Providename
-rw-r--r--. 1 root root   167936 May  9 07:08 Requirename
-rw-r--r--. 1 root root    57344 May  9 07:08 Sha1header
-rw-r--r--. 1 root root    40960 May  9 07:08 Sigmd5
-rw-r--r--. 1 root root     8192 May  9 06:42 Triggername
[root@kouyuushinn ~]#

 

1.5 获取程序包的途径(rpm)

下载的程序包需要检查其合法性:来源合法性;程序包的完整性;

1> 系统发行版的光盘
2> 项目的官方站点
3> 国内镜像站点:
      http://mirrors.aliyun.com
      http://mirrors.sohu.com
      http://mirrors.16..com
4> 第三方组织:
      EPEL
5> 搜索引擎
      https://pkgs.org/
      http://rpmfind.net/
      http://rpm.pbone.net/

Leave a Reply

Your email address will not be published. Required fields are marked *