API:Application Program Interface
ABI:Application Binary Interface
Unix-like,
ELF
Windows
exe, msi
同一个包可以在Linux平台和Windows平台安装吗? 【能】
库级别的虚拟化:【能够实现同一个包在Linux和Windows系统上面运行】
Linux平台虚拟化工具: WinE 【wine虚拟化,能够实现在Windows上的软件可以在Linux上面运行】
Windows平台虚拟化: Cywin
系统级开发的软件包一般可以直接安装在系统上:
C/C++:httpd, vsftpd, nginx
go
应用级开发就不行:
java/Python/perl/ruby/php:
java: hadoop, hbase, (jvm)
Python:openstack, (pvm)
perl: (perl)
ruby: (ruby)
php: (php)
一个程序包里面含有哪些东西?
二进制文件,库文件,配置文件,帮助文档 【前两个一般为二进制文件,后两个一般为普通文件】
不同系统所使用的程序包管理器不同:
debian:dpt, dpkg, ".deb"
redhat:redhat package manager, rpm, ".rpm"; rpm is package manager;
S.u.S.E:rpm, ".rpm",
Gentoo:ports
ArchLinux:
程序包的命名格式:
1、程序包源代码的命名格式:
name-VERSION.tar.gz
VERSION:major.minor.release
2、rpm包命名格式:
name-VERSION-release.arch.rpm
VERSION:major.minor.release
release.arch:rpm包的发行号
release.os: 2.el7.i386.rpm
常见的arch:x86: i386,i486, i586, i686
x86_64: x64, x86_64, amd64
powerpc: ppc
跟平台无关:noarch
举例:
源代码的命名格式:redis-3.0.2.tar.gz
rpm包的命名格式:redis-3.0.2-1.centos7.x64.rpm
拆包:主包和支包【对于一个rpm包,里面含有很多文件,以为着有很多功能;但有的时候我们只是用少数功能,有些功能使用不到及不想用怎么办。结果就产生了拆包】
主包:name-VERSION-release.arch.rpm
支包:name-function-VERSION-release.arch.rpm
function:devel, utils, libs, ...
怎么解决包与包之间的依赖关系--->使用前端工具来实现:
在很多时候,我们安装包的时候,会提示必须先安装其他的依赖包,所以就产生了一些工具来解决包之间的依赖关系。主流的工具有如下几种:
自动解决依赖关系的(前端)工具;
yum:rhel系列系统上rpm包管理器的前端工具;
apt-get (apt-cache):deb包管理器的前端工具;
zypper:suse的rpm管理器前端工具;
dnf:Fedora 22+系统上rpm包管理器的前端工具;
查看二进制程序所依赖的库文件:ldd 命令
ldd /PATH/TO/BINAEY_FILE 如:ldd /bin/ls
管理及查看本机装载的库文件:ldconfig 命令
idconfig :不加参数,重新读取配置文件并重新装载来生成缓存 【缓存的配置文件为:/etc/id.so.conf, /etc/id.so.conf.d/*.conf 】
idconfig -p :显示本机已经缓存的所有可用的库文件名及文件路径映射关系
程序包管理器:
功能:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装、升级、卸载、查询和校验等管理操作;
每一个程序包在程序包管理器里面里面包含有以下几部分
1、程序包的组成清单(每个程序包都单独实现,即每个程序包独有);
文件清单
安装或卸载时运行的脚本
2、数据库(公共)
程序包的名称和版本;
依赖关系;
功能说明;
安装生成的各文件的文件路径及校验码信息;
等等等
管理程序包的方式:
使用包管理器:rpm
使用前端工具:yum, dnf
获取程序包的途径:
(1) 系统发行版的光盘或官方的文件服务器(或镜像站点):
http://mirrors.aliyun.com,
http://mirrors.sohu.com,
http://mirrors.163.com
(2) 项目的官方站点
(3) 第三方组织:
(a) EPEL [Fedora组织的]
(b) 搜索引擎
http://pkgs.org 【刚出来不久的网站,可靠性不知道】
http://rpmfind.net
http://rpm.pbone.net
(4) 自动动手,丰衣足食
只要是从网络上下载的程序包,强烈建议检查其合法性,主要检查以下两个方面:
来源合法性;
程序包的完整性;
对安装、升级、卸载、查询、校验等操作,请看下一篇文章。