Skip to content

Commit b52b157

Browse files
authored
Fixed: package manager update bugs (#92)
2 parents 961534b + 00ed869 commit b52b157

1 file changed

Lines changed: 40 additions & 33 deletions

File tree

.update.sh

Lines changed: 40 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,17 @@ cleanup_snapd() {
7979
return
8080
fi
8181

82-
rm -rf /var/lib/snapd/cache/*
82+
# Robustly clean Snap cache if the directory exists and is not empty
83+
SNAP_CACHE_DIR="/var/lib/snapd/cache"
84+
if [ -d "${SNAP_CACHE_DIR}" ]; then
85+
if rm -rf "${SNAP_CACHE_DIR:?}/"*; then
86+
println "Snap cache cleaned from ${SNAP_CACHE_DIR}"
87+
else
88+
print_err "Error: Failed to clean Snap cache at ${SNAP_CACHE_DIR}"
89+
fi
90+
else
91+
println "Snap cache directory ${SNAP_CACHE_DIR} does not exist."
92+
fi
8393

8494
# List all snaps and filter for disabled ones
8595
snap list --all | awk '/disabled/{print $1, $3}' | while read -r snap_name revision; do
@@ -142,60 +152,57 @@ update_snapd() {
142152
update_os_pkg() {
143153
case "${ADJUSTED_ID}" in
144154
debian)
145-
if [ "$(find /var/lib/apt/lists/* -maxdepth 1 -type f 2>/dev/null | wc -l)" -eq 0 ]; then
146-
println "Updating ${PKG_MGR_CMD} based packages..."
147-
if ! ("${PKG_MGR_CMD}" update -y &&
148-
"${PKG_MGR_CMD}" upgrade -y &&
149-
"${PKG_MGR_CMD}" dist-upgrade -y &&
150-
"${PKG_MGR_CMD}" autoremove -y &&
151-
"${PKG_MGR_CMD}" autoclean -y); then
152-
print_err "Error: Update failed."
153-
fi
155+
println "Updating ${PKG_MGR_CMD} based packages..."
156+
if ! ("${PKG_MGR_CMD}" update -y &&
157+
"${PKG_MGR_CMD}" upgrade -y &&
158+
"${PKG_MGR_CMD}" dist-upgrade -y &&
159+
"${PKG_MGR_CMD}" autoremove -y &&
160+
"${PKG_MGR_CMD}" autoclean -y); then
161+
print_err "Error: Update failed."
154162
fi
155163

156164
update_snapd
157165
;;
158166
rhel)
167+
println "Updating ${PKG_MGR_CMD} based packages..."
159168
if [ "${PKG_MGR_CMD}" = "microdnf" ]; then
160-
if [ "$(find /var/cache/yum/* -mindepth 1 -maxdepth 1 -print -quit 2>/dev/null | wc -l)" -eq 0 ]; then
161-
println "Running ${PKG_MGR_CMD} makecache..."
162-
"${PKG_MGR_CMD}" makecache
169+
if ! ("${PKG_MGR_CMD}" makecache); then
170+
print_err "Error: Failed to update package cache."
163171
fi
164172
else
165-
if [ "$(find "/var/cache/${PKG_MGR_CMD}"/* -mindepth 1 -maxdepth 1 -print -quit 2>/dev/null | wc -l)" -eq 0 ]; then
166-
println "Running ${PKG_MGR_CMD} check-update..."
167-
set +e
168-
"${PKG_MGR_CMD}" check-update
169-
rc=$?
170-
if [ $rc -ne 0 ] && [ $rc -ne 100 ]; then
171-
exit 1
172-
fi
173-
set -e
173+
"${PKG_MGR_CMD}" check-update
174+
rc=$?
175+
if [ "${rc}" -ne 0 ] && [ "${rc}" -ne 100 ]; then
176+
print_err "Error: Update failed."
174177
fi
175178
fi
176179

177-
println "Updating ${PKG_MGR_CMD} based packages..."
178180
if ! ("${PKG_MGR_CMD}" update -y &&
179181
"${PKG_MGR_CMD}" upgrade -y &&
180182
"${PKG_MGR_CMD}" autoremove -y); then
181183
print_err "Error: Update failed."
182184
fi
183185
;;
184186
alpine)
185-
if [ "$(find /var/cache/apk/* 2>/dev/null | wc -l)" -eq 0 ]; then
186-
println "Updating ${PKG_MGR_CMD} based packages..."
187-
if ! ("${PKG_MGR_CMD}" update && "${PKG_MGR_CMD}" upgrade); then
188-
print_err "Error: Update failed."
189-
fi
187+
println "Updating ${PKG_MGR_CMD} based packages..."
188+
if ! ("${PKG_MGR_CMD}" update && "${PKG_MGR_CMD}" upgrade); then
189+
print_err "Error: Update failed."
190190
fi
191191
;;
192192
arch)
193-
if [ "$(find /var/cache/pacman/pkg/* 2>/dev/null | wc -l)" -eq 0 ]; then
194-
println "Updating ${PKG_MGR_CMD} based packages..."
195-
if ! ("${PKG_MGR_CMD}" -Syu --noconfirm &&
196-
"${PKG_MGR_CMD}" -Rns "$("${PKG_MGR_CMD}" -Qdtq)"); then
197-
print_err "Error: Update failed."
193+
println "Updating ${PKG_MGR_CMD} based packages..."
194+
if ! ("${PKG_MGR_CMD}" -Syu --noconfirm); then
195+
print_err "Error: Update failed."
196+
fi
197+
# Remove orphaned packages if any exist
198+
ORPHANS=$("${PKG_MGR_CMD}" -Qdtq)
199+
rc=$?
200+
if [ "${rc}" -eq 0 ] && [ -n "${ORPHANS}" ]; then
201+
if ! ("${PKG_MGR_CMD}" -Rns "${ORPHANS}"); then
202+
print_err "Error: Failed to remove orphaned packages."
198203
fi
204+
elif [ "${rc}" -ne 1 ]; then
205+
print_err "Error: Failed to detect orphaned packages (exit code ${rc})."
199206
fi
200207
;;
201208
*)

0 commit comments

Comments
 (0)