Linux程序包管理
API:Application Programming Interface
各个平台的库文件对外呈现相同标准的接口,虽然它们的实现方式不同;但是相同的源代码在不同平台上经过编译以后都可以运行;
POSIX:Portable OS
程序源代码→预处理→编译→汇编→连接
详细解释:https://blog.csdn.net/derkampf/article/details/71597684
静态编译:库文件整合到程序内部的;
共享编译(动态链接库):多个程序调用共同的库文件;
ABI:Application Programming Interface
不同源代码在经过编译以后形成的可执行程序文件格式不尽相同,所以经过编译的源代码通常不能在不同平台上运行;
linux:ELF格式
Windows:EXE格式
可以通过库级别的虚拟化来实现不同平台的兼容
Linux:WINE
Windows:Cywin
系统级开发:C,C++
应用级开发:Python,Java,PHP(世界上最好的语言)等;(滑稽脸)
二进制应用程序的组成部分
二进制文件,库文件(程序本身提供给他人的,容许其调用进行二次开发的库文件),配置文件,帮助文档;
程序包管理器:
debin:deb格式,dpt管理器;
redhat:rpm格式,rpm管理器;
rpm:redhat package manager
rpm:rpm is Package Manager
源代码:name-VERSION.tar.gz
VERSION:major.minor.release
rpm包命名方式:
name-VERSION-ARCH.rpm
VERSION:major.minor.release
ARCH:release.so.arch
zlib-1.2.7-13.el7.i686.rpm
testapp:拆包
testapp-VERSION-ARCH.rpm:主包
testapp-devel-VERSION-ARCH.rpm:子包
testapp-testing-VERSION-ARCH.rpm:子包
包依赖关系:
rpm包之间可能存在依赖关系,比如安装某个包之前需要提前安装另一个或多个包;
yum:rpm包管理器的前端工具;
apt-get:deb包管理器的前端工具;
zypper:suse上rpm的前端管理工具;
查看依赖关系的命令:
ldd /PATH/TO/ELF_FILE:显示某二进制程序所依赖的库文件;
ldconfig -p:显示加载到内存中的所有可用库文件名称,及文件路径映射关系;
其配置文件为:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf
缓存文件:/etc/ld.so.cache
程序包管理:
功能:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而方便快捷的完成程序包的安装、卸载、查询、升级和检验等管理操作;
程序的组成清单(每个包独有):
文件清单
安装或卸载时运行的脚本
数据库(公共):
程序包的名称及版本
依赖关系
功能说明
安装生成的各文件的路径及校验码信息
管理程序包的方式:
使用包管理器:rpm,deb等
使用前端工具:yum,apt-get等
获取程序包途径:
系统发行版所带的光盘或官网;
Centos镜像:
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
项目官方站点
第三方组织
Fedora-EPEL
搜索引擎:
http://pkgs.org
http://rpmfind.net
http://rpmpbone.net
自己制作
建议:使用前检查其合法性;
来源合法性;
程序包完整性;
注:根据马哥视频做的学习笔记,如有错误,欢迎指正;侵删
所有评论(0)