feat: check /etc/* confliction when install
This commit is contained in:
parent
a74250ead3
commit
a8422c9774
11
leaf
11
leaf
@ -147,7 +147,8 @@ leaf_invoke_hooks() {
|
||||
leaf_merge_package() {
|
||||
pushd $1 > /dev/null 2>&1
|
||||
local _trace_dir="${TRACE_DIR}/${PKG_PREFIX}/${PKG_NAME}"
|
||||
local _item _mode _owner _group
|
||||
local _item _item_conflict _mode _owner _group
|
||||
local _time="$(date +%Y%m%d%H%M%S)"
|
||||
cat "${_trace_dir}"/DIRS | while read -r _item; do
|
||||
_mode=$(stat -c %a ."${_item}")
|
||||
_owner=$(stat -c %u ."${_item}")
|
||||
@ -158,7 +159,13 @@ leaf_merge_package() {
|
||||
_mode=$(stat -c %a ."${_item}")
|
||||
_owner=$(stat -c %u ."${_item}")
|
||||
_group=$(stat -c %g ."${_item}")
|
||||
install -D -m ${_mode} -o ${_owner} -g ${_group} ."${_item}" "${_item}"
|
||||
if [[ "${_item}" == /etc/* && -e "{_item}" ]]; then
|
||||
_item_conflict="$(dirname "${_item}")/._$(basename "${_item}").conflict_${PKG_NAME}_${_time}"
|
||||
install -D -m ${_mode} -o ${_owner}-g ${_group} ."${_item}" "${_item_conflict}"
|
||||
leaf_record_message "Config file confliction on ${_item}, the package provided version is installed as ${_item_conflict}."
|
||||
else
|
||||
install -D -m ${_mode} -o ${_owner} -g ${_group} ."${_item}" "${_item}"
|
||||
fi
|
||||
done
|
||||
cat "${_trace_dir}"/LINKS | while read -r _item; do
|
||||
cp -dp ."${_item}" "${_item}"
|
||||
|
Loading…
x
Reference in New Issue
Block a user