软件包管理背景知识

1、程序运行过程:
源程序-编译-链接-运行
例如:
C语言:源代码-(编译)二进制格式
脚本语言:不需要编译,直接由解释器解析

2、程序
简单来说,程序=指令+数据
具体来说,
程序组成部分:
(1)二进制程序
(2)库(作用有两个:提供接口,就是供别人调用的接口;调用接口,就是程序需要依赖于库提供的某些功能才能运行)
(3)配置文件
(4)帮助文件
备注:
常用的最底层的核心库:glibc,全称是gnu library c(c语言库)

3、linux下的目录
一级目录:
/boot
/etc
/usr
/var
/dev
/lib
/tmp
/bin
/sbin
/proc
/sys
/mnt
/media
/home
/root
/misc
/opt
/svr
备注:
(1)/mnt、/media主要用于挂载
(2)/proc、/sys是伪文件系统
(3)/dev是设备文件,2.4内核之前所有的设备文件都是预先提供的,以确保不时之需,不能根据文件识别设备;2.6内核之后,udev出现,能够根据内核提供的信息识别并动态的创建设备文件,能够判定文件设备类型创建具备见名知义的文件名
(4)/boot是内核相关,是操作系统启动完之后才会看到的目录文件,所以boot目录跟操作系统启动无关

程序涉及到的目录:
/etc 放置配置文件
/bin 放置二进制文件
/sbin 放置二进制文件
/lib 放置库文件
/usr/share/man 放置帮助文档

/usr:
/bin
/sin
/lib
备注:/usr下的配置文件也是放在/etc下,帮助文档也是放在/usr/share/man下

/usr/local:
/bin
/sbin
/lib
/etc
/usr/local/man
备注:/usr/lcoa/相当于一个独立的王国,有自己的一套完整的体系

这3套路径的区别在于:
(1)/etc、/bin、/sbin、/lib是操作系统自身启动就需要用到的程序;这些目录不能挂载其他额外的分区,必须在根文件系统的分区上
(2)/usr/bin、/usr/sbin、/usr/lib是提供操作系统的核心功能,可以单独分区
(3)/usr/local/bin、/usr/local/sbin、/usr/local/lib、/usr/lcoal/etc、/usr/local/man主要是用于安装第三方软件。早期的时候,第三方软件都是安装在/opt下,现在才是安装在/usr/local下

4、操作系统启动过程
(1)POST(加电自检)
(2)BIOS(根据BIOS的配置去找启动的次序,例如从硬盘HD启动)
(3)BIOS加载MBR
(4)MBR根据其上面的bootloader去找出内核存放的分区,然后加载内核
(5)找出根分区,加载/boot目录(内核相关)

5、软件包管理器
核心功能:
(1)打包成一文件:包含二进制程序、库文件、配置文件、帮助文件(制作软件包)
(2)生成数据库:追踪所安装的每一个文件(例如将来卸载的时候就到各自的目录去移除就可以了),方便操作(包括安装、卸载、升级、查询、校验)
分类:
(1)对redhat、suse来说,有rpm软件包管理器
(2)对debian来说,有dpt软件包管理器
备注:
rpm和dpt是后端工具,yum(yellowdog update modifier)和apt-get是前端工具 #前端工具可以更方便的解决依赖关系