2 ############################################################
3 # source: instpkgdir.imi
4 # author: CottonCandyOwner(CottonCandyOwner@126.com)
6 ############################################################
9 # there are many dirs for a software/application in linux
10 # system. bin/sbin for executables, lib for .so lib files ...
11 # it's a 'functional' dir, use 'func' for short.
12 # these dirs are in different paths in system, or under
13 # software install dir. in system, it's called SysFunDir, in
14 # install dir, it's called PkgFuncDir.
15 # @ install-type & install-dir
16 # a softare can be installed in different paths, due to
17 # the different category/storage/using-purpose. by definning
18 # different install types, and the corresponding dir, a softeare
19 # or a program can run on different install paths.
20 # if a srcpkg is categoried in BZSH, it's a minial system.
21 # if in DIST, it's installed in dist install area. these two
22 # kinds of install type can be read only.
24 # whatever installed on any dirs, a softeare only access
25 # func dirs in it's install dir. it can be installed on different
26 # system with different install dir defination, it can be porting
27 # to different operating system.
28 ############################################################
31 # [statical defination]
34 # @ INST_TYPE/SOFT_TYPE
50 # SOFT_TYPE_SET/PKG_SWTYPE_DIR_SET
52 # [run-time application orianted interface]
53 # @ sys init (system & session)
66 # @ prog running (process)
74 # @ name-conception-define
76 # # ROOTFS='$(cd \`dirname $(which ls)\`/..; pwd; cd - 2>/dev/null)'
78 # # SYS_INST_RW_TYPE[]
79 # # SYS_<SUBDIR>_PATH(各种sub-dir在系统中的路径)
80 # # SYS_PKG_SUBDIR_LIST=() # _LIST中包含系统所使用的目录或类型。*添加_TYPE_数组。对一些系统中未使用的类型指定suggest-opt
81 # # SYS_INST_TYPE_LIST≠()
82 # # SYS_SOFT_TYPE_LIST=()
83 # # valid_subdir/valid_softtype/
87 # # BUILD_PKG_TYPE # 这里的type环境变量或可以添加_OPT,或以_TYPE表示为_LIST中的类型,用于其它变量的idx。
91 # # BUILD_INST_DIR= # 安装目录
93 # @ INSTALLATION (这里的环境变量由软件包的参数文件进行设置,PKG_PATH[1]和PKG_<SUBDIR>_PATH[1]是实际安装中用到的环境变量)
99 # # PKG_PATH[1]='${ROOTFS}/${}'
100 # PKG_<SUBDIR>_PATH[1]
102 # + # PROG_NAME[1]='$(basename $0)'
103 # + PROG_EXE_NAME[1]='$(basename `readlink -f $0`)'
104 # + PROG_PKG_NAME[1]='$(cd `dirname $(readlink -f $0)`/../; basename $PWD; cd - > /dev/null)'
105 # + # PROG_PATH[1]='$(dirname `readlink -f $0`)'
106 # + PROG_EXE_PATH[1]='$(dirname $0)'
107 # + PROG_PKG_PATH[1]='$(cd `dirname $(readlink -f $0)`/../; pwd; cd - > /dev/null)'
108 # + # PROG_TYPE[1]='$(cd `dirname $(readlink -f $0)`/../../; basename $PWD; cd - > /dev/null)'
109 # + PROG_PKG_SOFT_TYPE[1]='$(cd `dirname $(readlink -f $0)`/../../; basename $PWD; cd - > /dev/null)'
110 # + # PROG_PKG_INST_TYPE[1]='$(cd `dirname $(readlink -f $0)`/../../../; basename $PWD; cd - > /dev/null)'
112 # # PROG_PKG_<SUBDIR>_DIR=
113 # PROG_SYS_<SUBDIR>_DIR=
114 # # get_subdir_path/get_prog_name/init_prog_subdir_path/init_prog_vars
115 # @ variable & function
118 # @ path2array:path字符串保存到一个数组中,便于访问各个dir。
119 # @ dbgout_varlist:逐行输出每个参数对应环境变量名称和内容
126 #####################################################
127 # @ conception & envar definition
128 #####################################################
133 PKG # 软件包:带脚本运行功能的自解压压缩包,用于提供软件安装的文件。软件打包后用于系统中的安装。软件包可以不是程序,
134 # 例如只是图片、字体等一些系统资源文件。
135 PROG # 程序:EXECUTABLES,在系统中可运行的文件,用户运行的软件,为APP应用程序,在命令行运行的命令是一种不带gui的CMD程序
136 # 在后台运行提供服务的是SVC服务程序,在内核运行的是DRV驱动程序。PROG=CMD/APP/SVC/DRV。
137 EXE # 一个程序的exe名称通常是prog名称。只有在busybox这样的程序中,运行程序的文件名是一个链接文件,以prog
138 # 表示运行的链接文件名,以EXE表示实际的程序文件名。以PROG_NAME用于PROG_XXX中name相关的信息。
139 SOFT # 软件:,在系统中运行,为系统或用户提供功能实现的程序及相关文件。一款软件除了可执行程序,还包括一些资源
140 # 文件等数据文件。软件=程序+程序库+数据。
142 # 相对于PROG,SOFT是一个静态的概念,用于描述和表示软件包。PROG是一个运行时的概念。而PKG是一个压缩文件,
143 # 只有包含了SOFT类型,才表示一个PKG内的程序的类型。
145 CMD # 命令:,在命令行运行的,不带GUI的程序。
146 APP # 应用程序:,相对于系统的程序,为计算机使用者提供功能的软件。
147 SVC # 服务程序:,运行在系统后台的程序,用于提供某种功能。
148 LIB # 程序库:,公用程序库,.so文件。
149 COM/MIDWARE # 组件/中间件:,以较规范的形式提供软件功能接口的程序库。
150 DRV # 设备驱动程序:,内核中运行的程序,包括硬件板级支持包,通用硬件驱动,软件功能驱动程序等。
151 # DRV=BSP+GEN_DRV+SOFT_FUNC_DRV+other_misc_drv。
152 BSP # 板级支持包(硬件设备驱动):,与实际硬件平台相关的驱动程序。实现的是SOC是的外围设备,或者设备ctlr。
153 GEN_DRV # 通用设备驱动程序: ,一些与设备接口相关,但与具体硬件平台无关的设备驱动。像usb设备的驱动程序,
154 # 基于spi的设备驱动程序。这些驱动程序在不同硬件平台不同的总线控制器下,都可以使用。
155 SOFT_FUNC_DRV # 功能驱动程序: ,对应着内核中非硬件的驱动程序。像一些文件系统的驱动程序,加解密功能的驱动程序等。
157 PARAM_DATA # 参数数据,用于软件/程序的设置。
158 STCDATA/STATIC_DATA # 软件发布、安装后不进行写操作的数据。
159 RES_DATA # 通用的一些静态数据文件,例如font、picture、doc,不同于windows下的资源文件的是,rc-script归为PARAM_DATA。
160 USRDATA # 软件使用者编辑、操作的数据。
164 SOFT_NAME # 软件名称:,一个软件的名称。
165 PKG_NAME # 软件包名称:,软件包名称按照一定格式定义,除了软件名称,还包含软件主版本信息,发行版本信息,硬件平台类型,
167 INST_TYPE # 安装类型:,根据不同的软件类型,使用不同的软件安装目录,具有不同的读写属性。
168 SOFT_INNER_SUBDIRS # 软件子目录:,一个软件安装目录下所具有的目录结构,与传统的/usr目录下的目录结构相近,
170 SOFT_TYPE # 软件类型:,根据软件在系统中的用途,分为不同的类型,软件分类存放,一个软件的安装路径为
171 # $INST_PFX/$SOFT_TYPE/$SOFT_NAME。
172 INST_PFX # 安装目录: ,用于某种安装类型的软件安装,包括像/usr这样的目录结构,以及不同SOFT_TYPE对应的目录。
173 SOFT_PATH # 软件安装目录: ,具体某一款软件安装时,使用的目录,等同于$INST_PFX/$SOFT_TYPE/$SOFT_NAME。
177 XXX_FMT # 需要eval重新生成字符串的"格式描述字符串"
180 #####################################################
182 #####################################################
186 MACHINE_ID= # ,主机名称。用于REMOTE安装类型的运行时数据的存储目录名。
191 USER_ID= # ,用户名称。用于REMOTE安装类型的运行时数据的存储目录名。
192 HOST_USR_ID="$MACHINE_ID"-"$USER_ID" # ,主机用户名id,用于多系统共用nfs存储时,对主机和用户进行区分。
193 # 对于非REMOTE的数据存储目录,该环境变量为字符串"local"。
199 PROG_NAME= # 程序名称:EXECUTABLES,在系统中可运行的文件,用户运行的软件,为APP应用程序,在命令行运行的命令是一种不
200 # 带gui的CMD程序在后台运行提供服务的是SVC服务程序,在内核运行的是DRV驱动程序。PROG=CMD/APP/SVC/DRV。
201 EXE_NAME= # 一个程序的exe名称通常是prog名称。只有在busybox这样的程序中,运行程序的文件名是一个链接文件,以prog
202 # 表示运行的链接文件名,以EXE表示实际的程序文件名。以PROG_NAME用于PROG_XXX中name相关的信息。
203 SOFT_NAME= # ,软件名称,通常根据软件包文件名或软件包中的定义进行设置。
204 PKG_NAME= # ,软件包名称,包含软件名称之外,还包含软件主版本、发型版本信息、硬件平台类型、发布日期等信息。
206 INST_TYPE/DEF_INST_TYPE= # ,安装类型,与软件安装位置相关,在用户安装时设定,如不设定,使用默认值DEF_INST_TYPE。
207 SOFT_TYPE= # ,软件类型,软件在系统中的功能,对应着不同的软件安装路径。
210 INST_RW_TYPE= # ,根据安装类型,表示安装目录的读写属性。
211 INST_PFX= # ,根据安装类型,该安装类型软件的安装路径前缀。
212 SOFT_PATH= # ,一款具体的软件的安装目录路径,$INST_PFX/$SOFT_TYPE/$SOFT_NAME。
213 SOFT_INNER_SUBDIRS= # ,一个软件安装目录下的子目录。
214 SOFT_SUBDIR= # ,一款软件的各种subdir的路径,基本等效于$SOFT_PATH路径下的各个subdir的路径。在非
215 # skeletone-linux中,这些sub dir不是所有目录都在$SOFT_PATH下,所以以环境变量的形式保存,
216 # 使得在各种运行环境下,这些功能的sub dir都可被使用。
228 #####################################################
230 #####################################################
232 #######################
236 #######################
238 # ROOTFS的定义,设置成一个路径,用于系统安装时的安装目录
240 if [[ -d $ROOTFS ]]; then
241 ROOTFS=$(cd `dirname $(which ls)`/..; pwd; cd - 2>/dev/null)
245 # parameters should be setted before this file load.
254 RUNNING_TYPE= # 定义PROG_SUB_PATH的DESC字符串。TRAD表示程序安装在系统目录中,
255 # PKG表示安装在同一个软件包目录下。不同的安装目录,以不同的RUNNING_TYPE表示,
259 #####################################################
261 #####################################################
265 # install type, setted by INST_TYPE on install.
267 BZSH # /,fundamental linux system with shell (bzbox/bzlinux)
268 DIST # /usr/,distribution
269 LOCAL # /usr/local/,user installation on local machine
270 USER # /home/$USER/usr/,user privacy installation
271 REMOTE # /media/remote/usr/,install on remote machine
272 EXT1 # /usr/ext/,install on external storage
273 UNKNOWN # non-standard installation, specify on install
277 INST_TYPE_LIST=" ${!PKG_TYPE_DIR[@]} "
287 # install dir prefix INST_PFX accroding to INST_TYPE.
291 [BZSH]="${ROOTFS:-/}"
293 [LOCAL]="$ROOTFS/usr/local"
295 [USER]="$ROOTFS/home/$USER/usr"
296 [REMOTE]="$ROOTFS/usr/remote"
297 [EXT1]="$ROOTFS/usr/ext1"
298 [UNKNOWN]="$ROOTFS/usr/local"
299 [DEFAULT]="$ROOTFS/usr/local"
304 BZSH_INST_PFX=$ROOTFS
305 DIST_INST_PFX=$ROOTFS/usr
306 LOCAL_INST_PFX=$ROOTFS/usr/local
307 SOFT_INST_PFX=$ROOTFS/opt
308 USER_INST_PFX=$ROOTFS/home/$USER/usr/
309 REMOTE_INST_PFX=$ROOTFS/usr/remote # or /mnt/remote
310 # or /mnt/ext, or /media/$USER/ext,overlay dirs by overlayfs on /media/<storage-dev>/usr/
311 EXT_INST_PFX=$ROOTFS/usr/ext
312 DEFAULT_INST_PFX=$ROOTFS/usr/ext
314 INST_PFX_EVL='$(eval echo \${${INST_TYPE}_INST_PFX})'
319 # get INST_TYPE by install dir.
321 [$(echo $BZSH_INST_PFX|tr '[^[:alnum:]_]' '_')]=BZSH
322 [$(echo $DIST_INST_PFX|tr '[^[:alnum:]_]' '_')]=DIST
323 [$(echo $LOCAL_INST_PFX|tr '[^[:alnum:]_]' '_')]=LOCAL
324 [$(echo $SOFT_INST_PFX|tr '[^[:alnum:]_]' '_')]=SOFT
325 [$(echo $USER_INST_PFX|tr '[^[:alnum:]_]' '_')]=USER
326 [$(echo $REMOTE_INST_PFX|tr '[^[:alnum:]_]' '_')]=REMOTE
327 [$(echo $EXT_INST_PFX|tr '[^[:alnum:]_]' '_')]=EXT
328 # [$(echo $UNKNOWN_INST_PFX|tr '[^[:alnum:]_]' '_')]=UNKNOWN
329 [$(echo $DEFAULT_INST_PFX|tr '[^[:alnum:]_]' '_')]=DEFAULT
335 # install read/write attribution, defined on system construction.
337 INST_DIR_RWTYPE_SET=(
355 REMOTE_INST_RWTYPE=RO
357 UNKNOWN_INST_RWTYPE=RW
358 DEFAULT_INST_RWTYPE="$(eval echo \${${DEF_INST_TYPE}_INST_RWTYPE})"
360 INST_RWTYPE_EVL=' $(eval echo \${${INST_TYPE}_INST_RWTYPE})'
364 #####################################################
366 #####################################################
371 # enum for subdir & type under install pkg.
372 # all ware functional dir.
385 STCDATA # STATIC_DATA
413 ETCORG=$STCDATA_DIR/etc.org # maybe is a zipped file
414 VARORG=$STCDATA_DIR/var.org # maybe is a zipped file
416 UPGRADE_DIR=$VAR_DIR/upgrade
417 RES_DIR=$STCDATA_DIR/res
418 DOC_DIR=$STCDATA_DIR/doc
422 # alias func dir type(name) with actual dir string,
423 # to adapt to different running environment.
427 [BIN]="${BIN_DIR}" # rw attr for cmd prog dir
428 [SBIN]="${SBIN_DIR}" # rw attr for super-user cmd prog dir
429 [LIB]="${LIB_DIR}" # ro attr for lib dir
430 [DRV]="${DRV_DIR}" # ro attr for driver dir
431 [SVC]="${SVC_DIR}" # ro attr for service prog dir, or use libexec
434 [ETC]="${ETC_DIR}" # rw attr for parameter dir
435 [VAR]="${VAR_DIR}" # rw attr for run-time application data dir
436 [STCDATA]="${STCDATA_DIR}" # ro attr for static data dir
437 [RUN]="${RUN_DIR}" # rw attr for run-time system info dir
438 [TMP]="${TMP_DIR}" # rw attr for tmp dir
439 [USRDATA]="${USRDATA_DIR}" # rw attr for user data dir
442 [ETCORG]="${ETCORG_DIR}" # ro attr for parameter data backup dir, or zipped file
443 [VARORG]="${VARORG_DIR}" # ro attr for run-time data backup dir, or zipped file
446 [UPGRADE]="${UPGRADE_DIR}" # rw attr for upgrade dir in tmp
447 [RES]="${RES_DIR}" # ro attr for resource dir
448 [DOC]="${DOC_DIR}" # ro attr for doc dir
449 [SRC]="${SRC_DIR}" # ro/rw attr for src dir
452 FUNC_DIR_LIST=" ${!SYS_GEN_FUNC_DIR[@]} "
457 SYS_INST_DIR_EVL='$(eval echo \${${INST_TYPE}_INST_PFX})'
459 SYS_BIN_DIR='${SYS_INST_DIR}/${BIN_DIR}'
460 SYS_SBIN_DIR='${SYS_INST_DIR}/${SBIN_DIR}'
461 SYS_LIB_DIR='${SYS_INST_DIR}/${LIB_DIR}'
462 SYS_SVC_DIR='${SYS_INST_DIR}/${SVC_DIR}'
463 SYS_DRV_DIR='${SYS_INST_DIR}/${DRV_DIR}/${KERNEL_VERSION}'
464 SYS_STCDATA_DIR='${SYS_INST_DIR}/${STCDATA_DIR}'
465 SYS_RES_DIR='${SYS_INST_DIR}/${RES_DIR}'
466 SYS_DOC_DIR='${SYS_INST_DIR}/${DOC_DIR}'
467 SYS_SRC_DIR='${SYS_INST_DIR}/${SRC_DIR}'
468 SYS_ETC_DIR='${SYS_INST_DIR}/${ETC_DIR}'
469 SYS_VAR_DIR='${SYS_INST_DIR}/${VAR_DIR}'
470 SYS_ETCORG='${SYS_INST_DIR}/${ETCORG_DIR}'
471 SYS_VARORG='${SYS_INST_DIR}/${VARORG_DIR}'
472 SYS_USRDATA_DIR='${SYS_INST_DIR}/${USRDATA_DIR}'
473 SYS_RUN_DIR='${SYS_INST_DIR}/${RUN_DIR}'
474 SYS_TMP_DIR='${SYS_INST_DIR}/${TMP_DIR}'
475 SYS_UPGRADE_DIR='${SYS_INST_DIR}/${UPGRADE_DIR}'
479 [BIN]="${SYS_BIN_DIR}"
480 [SBIN]="${SYS_SBIN_DIR}"
481 [LIB]="${SYS_LIB_DIR}"
482 [DRV]="${SYS_DRV_DIR}"
483 [SVC]="${SYS_SVC_DIR}"
486 [ETC]="${SYS_ETC_DIR}"
487 [VAR]="${SYS_VAR_DIR}"
488 [STCDATA]="${SYS_STCDATA_DIR}"
489 [RUN]="${SYS_RUN_DIR}"
490 [TMP]="${SYS_TMP_DIR}"
491 [USRDATA]="${SYS_USRDATA_DIR}"
494 [ETCORG]="${SYS_ETCORG_DIR}"
495 [VARORG]="${SYS_VARORG_DIR}"
498 [UPGRADE]="${SYS_UPGRADE_DIR}"
499 [RES]="${SYS_RES_DIR}"
500 [DOC]="${SYS_DOC_DIR}"
501 [SRC]="${SYS_SRC_DIR}"
507 # TBD: by using $SOFT_PATH
508 PKG_INST_DIR_EVL='$(eval echo \${${INST_TYPE}_INST_PFX})/soft/${PKG_NAME}'
510 PKG_BIN_DIR='${PKG_INST_DIR}/${BIN_DIR}'
511 PKG_SBIN_DIR='${PKG_INST_DIR}/${SBIN_DIR}'
512 PKG_LIB_DIR='${PKG_INST_DIR}/${LIB_DIR}'
513 PKG_SVC_DIR='${PKG_INST_DIR}/${SVC_DIR}'
514 PKG_DRV_DIR='${PKG_INST_DIR}/${DRV_DIR}'
515 PKG_STCDATA_DIR='${PKG_INST_DIR}/${STCDATA_DIR}'
516 PKG_RES_DIR='${PKG_INST_DIR}/${RES_DIR}'
517 PKG_DOC_DIR='${PKG_INST_DIR}/${DOC_DIR}'
518 PKG_SRC_DIR='${PKG_INST_DIR}/${SRC_DIR}'
519 PKG_ETC_DIR='${PKG_INST_DIR}/${ETC_DIR}'
520 PKG_VAR_DIR='${PKG_INST_DIR}/${VAR_DIR}'
521 PKG_ETCORG='${PKG_INST_DIR}/${ETCORG_DIR}'
522 PKG_VARORG='${PKG_INST_DIR}/${VARORG_DIR}'
523 PKG_USRDATA_DIR='${PKG_INST_DIR}/${USRDATA_DIR}'
524 PKG_RUN_DIR='${PKG_INST_DIR}/${RUN_DIR}'
525 PKG_TMP_DIR='${PKG_INST_DIR}/${TMP_DIR}'
526 PKG_UPGRADE_DIR='${PKG_INST_DIR}/${UPGRADE_DIR}'
530 [BIN]="${PKG_BIN_DIR}"
531 [SBIN]="${PKG_SBIN_DIR}"
532 [LIB]="${PKG_LIB_DIR}"
533 [DRV]="${PKG_DRV_DIR}"
534 [SVC]="${PKG_SVC_DIR}"
537 [ETC]="${PKG_ETC_DIR}"
538 [VAR]="${PKG_VAR_DIR}"
539 [STCDATA]="${PKG_STCDATA_DIR}"
540 [RUN]="${PKG_RUN_DIR}"
541 [TMP]="${PKG_TMP_DIR}"
542 [USRDATA]="${PKG_USRDATA_DIR}"
545 [ETCORG]="${PKG_ETCORG_DIR}"
546 [VARORG]="${PKG_VARORG_DIR}"
549 [UPGRADE]="${PKG_UPGRADE_DIR}"
550 [RES]="${PKG_RES_DIR}"
551 [DOC]="${PKG_DOC_DIR}"
552 [SRC]="${PKG_SRC_DIR}"
559 #####################################################
561 #####################################################
564 # SOFT_TYPE,setted in soft install pkg.
565 # @ for operating system, to provide system features.
566 # @ for user application.
567 # [todo]这里的软件类型需要根据软件包分类而定。
570 BZSH # ,minimal shell system (bzsh)
571 SYS_CMD # , 系统命令行命令程序
572 SYS_LIB # ,系统程序库,通常应用程序不使用这些库
573 SYS_BASIC # ,用于为SYS_FRAMEWORK中的软件提供运行基础的软件包。
574 SYS_FRAMEWORK # ,skeletone-linux中最基础的几款框架性的软件。
575 SYS_COM # ,系统程序中间件组件,包括各类subsys的系统组件。
577 SYS # , 系统程序。与APP同样是一个应用程序,但用于系统设置等系统功能。
580 DRV # , 驱动程序,文件系统等非硬件的驱动程序
582 #LIB # ,程序库,用于为各种app提供库
586 APPSVC # ,应用服务程序,为计算机用户提供功能,例如一些网络服务软件。
587 #APPCOM # , 应用程序中间件组件,
590 SOFT # ,包含多个类型的软件,通常有一个发行商vendor,或有一个专门功能。例如WPS软件。例如,示波器软件,
591 # 包含硬件驱动drv,公用库APPCOM,以及应用程序APP。例如,存储加密功能,包含加解密硬件驱动drv,
592 # 加解密中间件midware/lib,以及存储加解密工具软件SYSCMD。
597 classtype=( BZSH SYS CMD BSP SVC MIDWARE APP UNKNOWN )
600 #SOFT_TYPE包括系统、中间件和应用三大类别
601 # SYS_BZSH、SYS_BASIC、SYS_FRAMEWORK、SYS_SUBSYS_COM、SYS_COM是系统软件
602 # SOFT_COM是系统中为应用层提供第三方功能的组件或lib
603 # SYS_PROG、SYS_SVC_PROG、SYS_CMD_PROG、SYS_LIB是系统用途的应用软件
604 # APP_PROG、APP_SVR_PROG、APP_LIB、APP_CMD_PROG、是应用层的软件类型
607 #######################
610 #######################
611 # declare -g -r -A PKG_SWTYPE_DIR_SET
612 #PKG_SWTYPE_DIR_SET=(
615 [SYSCMD]=SysCmd # 系统命令行程序。与APP同样是一个应用程序,但用于系统设置等系统功能。
616 [SYSUTILS]=SysUtils # 系统中的命令行工具程序,通常是没有安装包的命令行程序
617 [SYSLIB]=SysLib # 系统程序库,通常应用程序不使用这些库
618 [SYSSVC]=SysSvc # 系统服务程序
619 [SYSCOM]=SysCom # 系统程序中间件组件,包括各类subsys的系统组件。
620 [SYS_BASIC]=SysBasic # 用于为SYS_FRAMEWORK中的软件提供运行基础的软件包。
621 [SYS_FRAMEWORK]=SysFramework # skeletone-linux中最基础的几款框架性的软件。
624 [DRV]=Driver # 驱动程序,文件系统等非硬件的驱动程序
626 #[LIB]=Library # 程序库,用于为各种app提供库
627 [APP]=Application # 应用程序
628 [APPCMD]=AppCmd # 应用命令行命令程序
629 [APPUTILS]=AppUtils # 应用层的命令行工具程序,通常是没有安装包的命令行程序
630 [APPLIB]=AppLib # 应用专有的程序库。
631 [APPSVC]=AppSvc # 应用服务程序,为计算机用户提供功能,例如一些网络服务软件。
632 #[APPCOM]=AppCom # 应用程序中间件组件
633 [SOFT]=Software # 包含多个类型的软件,通常有一个发行商vendor,或有一个专门功能。
634 # 例如WPS软件。例如,示波器软件,包含硬件驱动drv,公用库APPCOM,
635 # 以及应用程序APP。例如,存储加密功能,包含加解密硬件驱动drv,
636 # 加解密中间件midware/lib,以及存储加解密工具软件SYSCMD。
637 [GENERAL]=General # 通用软件类型
638 [UNKNOWN]=Unknown # 未知软件类型
641 SYS_SWTYPE_LIST=" ${!PKG_SWTYPE_DIR[@]} "
643 # 每个安装类型路径下用于存放软件包、软件类型、临时安装文件的目录。
644 SYS_SOFT_CLASS_DIR="softclass"
646 SYS_INST_TMP_DIR=".installtmp"
648 BZSH_SOFT_DIR="${DIST_INST_PFX}/soft"
649 DIST_SOFT_DIR="${DIST_INST_PFX}/soft"
650 #LOCAL_SOFT_DIR="${LOCAL_INST_PFX}/soft"
651 LOCAL_SOFT_DIR="/opt"
653 USER_SOFT_DIR="${USER_INST_PFX}/soft"
654 REMOTE_SOFT_DIR="${REMOTE_INST_PFX}/soft"
655 EXT1_SOFT_DIR="${EXT1_INST_PFX}/soft"
658 #####################################################
659 # @ run-time opr interface
660 #####################################################
673 #######################
676 #######################
680 PROG_NAME[1]='$(basename $EXE_FILE)'
681 PROG_PATH[1]='$(dirname $EXE_FILE)'
683 PROG_EXE_NAME[1]='$(basename `readlink -f $EXE_FILE`)'
684 PROG_EXE_PATH[1]='$(cd `dirname $(readlink -f $EXE_FILE)`; pwd; cd - > /dev/null)'
687 PKG_NAME[1]='$(cd `dirname $(readlink -f $EXE_FILE)`/../; basename $PWD; cd - > /dev/null)'
688 PKG_PATH[1]='$(cd `dirname $(readlink -f $EXE_FILE)`/../; pwd; cd - > /dev/null)'
690 #PROG_PKG_TYPE[1]='$(cd `dirname $(readlink -f $EXE_FILE)`/../../; basename $PWD; cd - > /dev/null)'
691 SOFT_TYPE[1]='$(cd `dirname $(readlink -f $EXE_FILE)`/../../; basename $PWD; cd - > /dev/null)'
692 INST_TYPE[1]='${SYS_PATH_TO_INST_TYPE["$(cd `dirname $(readlink -f $EXE_FILE)`/../../../; pwd | tr "/|." "_"; cd - > /dev/null)"]}'
697 # fsyntax: func_dir_reg <category> <funcname> <rw> <funcdir>
703 # fsyntax: libdir_reg <funcname> <shlib> <oninc> <onload> <onunload>
754 [ PROG_RUNNING ] # run-time
781 SYS_PROG_DIR=${SOFT_PATH}/bin
783 SYS_SU_PROG_DIR=${SOFT_PATH}/sbin
785 SYS_LIB_DIR=${SOFT_PATH}/lib/
786 # :daemon service program dir
787 SYS_SVC_DIR=${SOFT_PATH}/svc/
789 SYS_DRV_DIR=${SOFT_PATH}/drv/
792 # static data dir (ro)
795 # :un-categoried static data for applications. it's the static data. eg:
796 应用程序未分类的静态数据,像是初始化参数,软件自带的一些数据文件等,都是一些ro属性的数据。
797 SYS_STCDATA_DIR=${SOFT_PATH}/share/${SOFT_NAME}
798 # :通常都是ro的资源文件或固定的一些数据
799 SYS_RES_DIR=${SOFT_PATH}/share/res/${SOFT_NAME}
801 SYS_DOC_DIR=${SOFT_PATH}/share/doc/${SOFT_NAME}
802 # (design,code,prj,dist):程序设计文件路径,常用于编译程序
803 SYS_SRC_DIR=${SOFT_PATH}/src/${SOFT_NAME}
806 # run-time dynamic data dir (local-host) (rw)
810 SYS_ETC_DIR=${ROOTFS}/etc/${SOFT_NAME}
812 SYS_VAR_DIR=${ROOTFS}/var/app/${SOFT_NAME}
814 SYS_USRDATA_DIR=~/.$SOFT_NAME/usrdata/
815 # :运行时的一些系统文件路径。像是pid文件,文件锁之类的。系统重启不保存。
816 SYS_RUN_DIR=${ROOTFS}/run/$SOFT_TYPE/${SOFT_NAME}
818 SYS_TMP_DIR=${ROOTFS}/tmp/${SOFT_NAME}
820 SYS_UPGRADE_DIR=${ROOTFS}/var/upgrade/${SOFT_NAME}
823 # run-time dynamic data dir (multi-host) (rw)
827 SYS_ETC_DIR=${INST_PFX}/etc/$HOST_USR_ID/${SOFT_NAME}
829 SYS_VAR_DIR=${INST_PFX}/var/app/$HOST_USR_ID/${SOFT_NAME}
830 # :用户数据路径,通常由应用设置。如果为REMOTE系统类型,~目录指向INST_PFX[REMOTE]/home/$USER_NAME
831 SYS_USRDATA_DIR=~/.$SOFT_NAME/$HOST_USR_ID/usrdata/
832 # :运行时的一些系统文件路径。像是pid文件,文件锁之类的。系统重启不保存。
833 SYS_RUN_DIR=${ROOTFS}/run/$HOST_USR_ID/$SOFT_TYPE/${SOFT_NAME}
835 SYS_TMP_DIR=${ROOTFS}/tmp/$HOST_USR_ID/${SOFT_NAME}
837 SYS_UPGRADE_DIR=${ROOTFS}/var/$HOST_USR_ID/upgrade/${SOFT_NAME}