一、软件包的组成
通常 不管任何语言,一个软件通常是由以下两方面组成
- 静态软件包部分
- 运行时产生的必要文件等动态数据部分
软件包的静态部分通常包含:
1 软件可执行文件
2 软件可执行文件的依赖库
3 软件的配置文件
4 软件的资源文件(图标、运行时需要的音视频素材等)
5 软件的额外部分(帮助文档、许可证等)
软件包运行时的动态部分包含:
1 软件存储相关数据的数据库文件
2 用户的个性化配置文件
3 临时文件
4 软件的扩展插件等
二、软件安装路径规划
通常按照规约
# bin用来存二进制可执行文件或者启动脚本文件
# lib用来存放执行过程中需要的动态加载的库文件,一些程序也把程序的默认配置文件存放到这里面
# share用来存放程序运行所需的资源文件、软件包的帮助文档等等
# etc存放程序全局的(所有用户都一样的)配置文件(很多程序也会读取当前用户home目录下存放在相关文件夹中的配置文件,配置文件的优先级一般是 1 当前用户home中的配置 2 etc中的全局配置 3 程序软件包里自带的默认配置)
1 usr:bin usr:lib usr:share etc
这几个目录是存放的是系统运行所需的系统软件以及通过apt从软件源上拉取的deb格式的软件包;deb格式的软件包由系统命令dpkg进行管理,dpkg中有软件信息数据库,方便安装、配置、更新和卸载软件;.deb .rpm等linux规范格式的软件包中的内容都会分散放到这些目录里面去。
2 usr:local:bin usr:local:lib usr:local:share usr:local:etc
这几个目录可以用来存放自己打包的软件包,非deb格式的软件包、或者自己写的脚本等命令都可以分类放到这几个目录下;
deb格式的软件包也可以选择释放到这几个目录下,和1中的那几个目录的区别,个人认为
# 软件重要性的不同,比如系统级软件和比较普通的软件的区别
# usr:local:bin usr:local:lib这几个目录通常也在系统的环境变量寻找路径下,适合放置自己写的一些命令~
3 opt
这个目录用来存放绿色软件或者java软件最合适了,这种软件包的可执行文件和其依赖通常都是自包含在一个文件夹下的,比如java软件,通常所需的jar包等依赖通常都是软件自带的,也不需要和其他软件共享;个人认为,这个目录就是为非linux规范的软件包、不受dekg管理的软件包所准备的~
三、软件运行时的动态数据存放在哪里了?
通常、数据库等软件的数据库文件存储在var:lib下
临时文件存放在tmp下
用户个性化配置文件、sqlite等小型数据库文件、动态加载的插件等存放在当前用户的home目录下的隐藏文件里