mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-03-31 06:34:17 -04:00
[PR #8871] Refactor(tools.func): Add Retry Logic, OS-Upgrade Safety, Smart Version Detection + 10 Critical Bugfixes #7676
Open
opened 2025-11-20 08:06:27 -05:00 by saavagebueno
·
0 comments
No Branch/Tag Specified
main
github-action-update-changelog
pr-update-app-files
add-script-bambuddy-1774853250
MickLesk-patch-1
fix/immich-maintenance-mode-redis-error
fix/npm-unmask-openresty-on-migration
fix/ollama-intel-gpg-error-handling
github-action-archive-changelog
add-script-yourls-1774732133
add-script-matter-server-1774638379
fix/dispatcharr-pg-port
cron_update_lxc
chore/immich-v2.6.3
add-script-geopulse-1774548387
cdn_improvements
add-script-birdnet-1774535320
fix/tools-func-exit-codes
fix/immich-update-db-hostname
update/frigate-0.17.1
fix/use-absolute-path-for-install
fix/pin-npm-version
shell_safe_fixes
remove_booklore
chore/update-url-community-scripts
komodov2
refactor/turnkey-modernize
add-script-nextexplorer-1774344421
add-script-homebrew-1774342032
fix/shell-security-hardening-v2
improve/build-func-performance-cleanup
fix/build-dns-prefix
fix/anytype-mongodb-wait
fix/frigate-cpu-model-path
copilot/fix-installation-failure-isponsorblocktv
fix/reactive-resume-add-git
copilot/scanopy-fix-apt-configuration-error
add-script-isponsorblocktv-1774009652
add-script-alpine-wakapi-1774008954
fix/coder-code-server-existing-config-and-reachability
add-script-teleport-1773928044
CrazyWolf13-patch-wealthfolio-1
refactor/tools-func-qol
fix/stirling-pdf-jdk-reinstall
fix/pinned-version-wording
MickLesk-patch-10
fix/reactive-resume-v5013
fix/tracearr-update-version-oom
copilot/fix-hdd-space-for-owncast
tremor021-patch-6
pocketbase_bot
disp_fix
fix/tdarr-binary-check-curl-retry
MickLesk-patch-9
refactor/podman-quadlets
alpine-ntfy
refactor/jellyfin
CrazyWolf13-patch-11
feature/autousermod_hwaccell
add-script-split-pro-1773677692
fix/frigate-openvino-fallback
fix/paperless-ngx-default-ram
fix/plex-restart-after-update
fix/gluetun-openvpn-env
MickLesk-patch-8
termix_add_guacd
MickLesk-patch-7
fix/tududi-nodejs-in-update
fix/sparkyfitness-npm-peer-deps
docs/website-metadata-workflow
fix-pbs_microcode
remove_jsons
michelroegl-brunner-patch-4
add-script-test-1773325265
cleanup_workflows
feat/remove-frontend
automated/update-github-versions
feat/mode-generated
fix/n8n-build-essential
fix/sparkyfitness-shared-deps
fix/rocm-path-escaping
fix/storage-validation-cross-node
fix/frigate-nvidia-version-regex
arm64-build-support
readme
michelroegl-brunner-patch-3
fix/coder-code-server-backup
copilot/fix-immich-update-dependency-issue
rust
fix/linkwarden-update-playwright
fix/powerdns-sqlite-permissions
fix/duplicate-nameserver-searchdomain
CrazyWolf13-patch-7
feat/ollama-rocm-support
fix/seerr-migration-update-script
preflight_tests
adgu_fix
2026-03-30
2026-03-29
2026-03-28
2026-03-27
2026-03-26
2026-03-25
2026-03-24
2026-03-23
2026-03-22
2026-03-21
2026-03-20
2026-03-19
2026-03-18
2026-03-17
2026-03-16
2026-03-15
2026-03-14
2026-03-13
2026-03-12
2026-03-11
2026-03-10
2026-03-09
2026-03-08
2026-03-07
2026-03-06
2026-03-05
2026-03-04
2026-03-03
2026-03-02
2026-03-01
2026-02-28
2026-02-27
2026-02-26
2026-02-25
2026-02-24
2026-02-23
2026-02-22
2026-02-21
2026-02-20
2026-02-19
2026-02-18
2026-02-17
2026-02-16
2026-02-15
2026-02-14
2026-02-13
2026-02-12
2026-02-11
2026-02-10
2026-02-09
2026-02-08
2026-02-07
2026-02-06
2026-02-05
2026-02-04
2026-02-03
2026-02-02
2026-02-01
2026-01-31
2026-01-30
2026-01-29
2026-01-28
2026-01-27
2026-01-26
2026-01-25
2026-01-24
2026-01-23
2026-01-22
2026-01-21
2026-01-20
2026-01-19
2026-01-18
2026-01-17
2026-01-16
2026-01-15
2026-01-14
2026-01-13
2026-01-12
2026-01-11
2026-01-10
2026-01-09
2026-01-08
2026-01-07
2026-01-06
2026-01-05
2026-01-04
2026-01-03
2026-01-02
2026-01-01
2025-12-31
2025-12-30
2025-12-29
2025-12-28
2025-12-27
2025-12-26
2025-12-25
2025-12-24
2025-12-23
2025-12-22
2025-12-21
2025-12-20
2025-12-19
2025-12-18
2025-12-17
2025-12-16
2025-12-15
2025-12-14
2025-12-13
2025-12-12
2025-12-11
2025-12-10
2025-12-09
2025-12-08
2025-12-07
2025-12-06
2025-12-05
2025-12-04
2025-12-03
2025-12-02
2025-12-01
2025-11-30
2025-11-29
2025-11-28
2025-11-27
2025-11-26
2025-11-25
2025-11-24
2025-11-23
2025-11-22
2025-11-21
2025-11-20
2025-11-19
2025-11-18
2025-11-17
2025-11-16
2025-11-15
2025-11-14
2025-11-13
2025-11-12
2025-11-11
2025-11-10
2025-11-09
2025-11-08
2025-11-07
2025-11-06
2025-11-05
2025-11-04
2025-11-03
2025-11-02
2025-11-01
2025-10-31
2025-10-30
2025-10-29
2025-10-28
2025-10-27
2025-10-26
2025-10-25
2025-10-24
2025-10-23
2025-10-22
2025-10-21
2025-10-20
2025-10-19
2025-10-18
2025-10-17
2025-10-16
2025-10-15
2025-10-14
2025-10-13
2025-10-12
2025-10-11
2025-10-10
2025-10-09
2025-10-08
2025-10-07
2025-10-06
2025-10-05
2025-10-04
2025-10-03
2025-10-02
2025-10-01
2025-09-30
2025-09-29
2025-09-28
2025-09-27
2025-09-26
2025-09-25
2025-09-24
2025-09-23
2025-09-22
2025-09-21
2025-09-20
2025-09-19
2025-09-18
2025-09-17
2025-09-16
2025-09-15
2025-09-14
2025-09-13
2025-09-12
2025-09-11
2025-09-10
2025-09-09
2025-09-08
2025-09-07
2025-09-06
2025-09-05
2025-09-04
2025-09-03
2025-09-02
2025-09-01
2025-08-31
2025-08-30
2025-08-29
2025-08-28
2025-08-27
2025-08-26
2025-08-25
2025-08-24
2025-08-23
2025-08-22
2025-08-21
2025-08-20
2025-08-19
2025-08-18
2025-08-17
2025-08-16
2025-08-15
2025-08-14
2025-08-13
2025-08-12
2025-08-11
2025-08-10
2025-08-09
2025-08-08
2025-08-07
2025-08-06
2025-08-05
2025-08-04
2025-08-03
2025-08-02
2025-08-01
2025-07-31
2025-07-30
2025-07-29
2025-07-28
2025-07-27
2025-07-26
2025-07-25
2025-07-24
2025-07-23
2025-07-22
2025-07-21
2025-07-20
2025-07-19
2025-07-18
2025-07-17
2025-07-16
2025-07-15
2025-07-14
2025-07-11
2025-07-10
2025-07-09
2025-07-08
2025-07-07
2025-07-06
2025-07-05
2025-07-04
2025-07-03
2025-07-02
2025-07-01
2025-06-30
2025-06-29
2025-06-28
2025-06-27
2025-06-26
2025-06-25
2025-06-24
2025-06-23
2025-06-22
2025-06-21
2025-06-20
2025-06-19
2025-06-18
2025-06-17
2025-06-16
2025-06-15
2025-06-14
2025-06-13
2025-06-12
2025-06-11
2025-06-10
2025-06-09
2025-06-08
2025-06-07
2025-06-06
2025-06-05
2025-06-04
2025-06-03
2025-06-02
2025-06-01
2025-05-31
2025-05-30
2025-05-29
2025-05-28
2025-05-27
2025-05-26
2025-05-25
2025-05-24
2025-05-23
2025-05-22
2025-05-21
2025-05-20
2025-05-19
2025-05-18
2025-05-17
2025-05-16
2025-05-15
2025-05-14
2025-05-13
2025-05-12
2025-05-11
2025-05-10
2025-05-09
2025-05-08
2025-05-07
2025-05-06
2025-05-05
2025-05-04
2025-05-03
2025-05-02
2025-05-01
2025-04-30
2025-04-29
2025-04-28
2025-04-27
2025-04-26
2025-04-25
2025-04-24
2025-04-23
2025-04-22
2025-04-20
2025-04-21
2025-04-19
2025-04-18
2025-04-17
2025-04-15
2025-04-16
2025-04-14
2025-04-13
2025-04-12
2025-04-11
2025-04-10
2025-04-09
2025-04-08
2025-04-07
2025-04-06
2025-04-05
2025-04-04
2025-04-03
2025-04-02
2025-04-01
2025-03-31
2025-03-30
2025-03-29
2025-03-28
2025-03-27
2025-03-26
2025-03-25
2025-03-24
2025-03-23
2025-03-22
2025-03-21
2025-03-20
2025-03-19
2025-03-18
2025-03-17
2025-03-16
2025-03-15
2025-03-14
2025-03-13
2025-03-12
2025-03-11
2025-03-10
2025-03-09
2025-03-08
2025-03-07
2025-03-06
2025-03-05
2025-03-04
2025-03-03
2025-03-02
2025-03-01
2025-02-28
2025-02-27
2025-02-26
2025-02-25
2025-02-24
2025-02-23
2025-02-21
2025-02-20
2025-02-19
2025-02-18
2025-02-17
2025-02-16
2025-02-15
2025-02-14
2025-02-13
2025-02-12
2025-02-11
2025-02-10
2025-02-09
2025-02-08
2025-02-07
2025-02-06
2025-02-05
2025-02-04
2025-02-03
2025-02-02
2025-02-01
2025-01-31
2025-01-30
2025-01-29
2025-01-28
2025-01-27
2025-01-26
2025-01-24
2025-01-23
2025-01-22
2025-01-21
2025-01-20
2025-01-19
2025-01-18
2025-01-17
2025-01-16
2025-01-15
2025-01-14
2025-01-13
2025-01-11
2025-01-10
2025-01-09
2025-01-08
2025-01-07
2025-01-06
2025-01-05
2025-01-04
2025-01-03
2025-01-02
2025-01-01
2024-12-31
2024-12-30
2024-12-29
2024-12-28
2024-12-27
2024-12-26
2024-12-25
2024-12-23
2024-12-21
2024-12-20
2024-12-19
2024-12-18
2024-12-17
2024-12-16
2024-12-13
2024-12-12
2024-12-09
2024-12-08
2024-12-07
2024-12-06
2024-12-05
2024-12-04
2024-12-03
2024-12-02
2024-11-30
2024-11-29
2024-11-28
2024-11-27
2024-11-26
2024-11-25
2024-11-24
2024-11-23
Labels
Clear labels
🛑 Failure to comply with the guidelines
breaking change
bug
bug
bugfix
deferred
delete script
dependencies
enhancement
external
feature
github
help wanted
Implemented in VED waiting push to Main
in project pipeline
invalid
investigation
json
maintenance
new script
new script
nice to have
not a script issue
not planned
organization
pull-request
question
refactor
rename script
security
update script
website
wontdo
Mirrored from GitHub Pull Request
No Label
pull-request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
saavagebueno
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: SVI/ProxmoxVE#7676
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Original Pull Request: https://github.com/community-scripts/ProxmoxVE/pull/8871
State: closed
Merged: Yes
✍️ Description
Fixes 10+ bugs: Node.js Debian conflicts, MySQL 8.0 on Debian 13+, PHP-FPM service conflicts, PostgreSQL backup/restore, repository keyring cleanup, GitHub API timeouts, and more.
AI-Summary
Click me
1. Unified Retry Logic for APT Operations
install_packages_with_retry()andupgrade_packages_with_retry()functions2. OS-Upgrade-Safe Repository Management
prepare_repository_setup()function for unified repo cleanup/etc/apt/keyrings,/usr/share/keyrings,/etc/apt/trusted.gpg.d)cleanup_tool_keyrings()helper for multi-tool cleanup3. Smart Version Detection & Upgrade Scenarios
All
setup_*functions now handle 3 scenarios:upgrade_packages_with_retry()This eliminates:
4. Enhanced Error Handling & Validation
setup_deb822_repo()(fail-safe if GPG/repo URLs empty)verify_tool_version()5. Legacy Installation Cleanup
cleanup_legacy_install()function for nvm, rbenv, rustup, etc.6. Service Management Improvements
stop_all_services()with pattern matching (e.g., stops allphp*-fpmservices)7. Comprehensive Documentation
🛠️ Functions Changed (Summary)
🆕 New Helper Functions
cleanup_tool_keyrings()- Remove keyrings from all 3 locationsstop_all_services()- Stop services by patternverify_tool_version()- Validate installed versioncleanup_legacy_install()- Remove nvm, rbenv, rustup, etc.prepare_repository_setup()- Unified repo cleanup + APT validationinstall_packages_with_retry()- Install with 3 retriesupgrade_packages_with_retry()- Upgrade with 3 retriesis_tool_installed()- Check if tool is installed (with version)remove_old_tool_version()- Purge old tool version completelyshould_update_tool()- Determine if update is neededmanage_tool_repository()- Unified repository management_install_uvx_wrapper()- Helper for uvx setup🔧 Refactored Setup Functions
Database Engines:
setup_mariadb()- 3-scenario logic, retry, better version resolutionsetup_mysql()- Debian 13+ libaio1t64 fix, retry logic, fallback to MariaDBsetup_postgresql()- Backup/restore on upgrade, retry logic, module supportsetup_mongodb()- Unified repo management, retry logicsetup_clickhouse()- 3-scenario logic, retry, version detectionProgramming Languages:
setup_nodejs()- Complete rewrite: removes ALL Debian nodejs packages before NodeSource, prevents conflicts, retry logicsetup_php()- Stop all PHP-FPM services, cleanup, retry logicsetup_ruby()- Conditional rbenv/ruby-build download, retry logicsetup_rust()- 3-scenario logic, toolchain updatesetup_go()- Version validation, clean upgrade, retryTools & Utilities:
setup_java()- Temurin JDK upgrade logic, retrysetup_uv()- i686 arch support, uvx wrapper, shell completions, Python version installsetup_yq()- Better error handling, GitHub API timeoutsetup_composer()- Self-update logic for existing installationssetup_ffmpeg()- Binary fallback if source build failssetup_gs()(Ghostscript) - Fallback logic if GitHub API failssetup_hwaccel()- Improved GPU detection, error handlingsetup_imagemagick()- Version tracking, upgrade messagessetup_adminer()- No functional changessetup_local_ip_helper()- Update detection🐛 Bugfixes
Node.js Debian Package Conflicts (Critical Fix)
libnode*,node-*) before adding NodeSourcenode-undici,node-cjs,node-acornconflictsMySQL 8.0 on Debian 13+ (Trixie/Sid)
PHP-FPM Service Conflicts
php*-fpmservices before upgrade (not just old version)PostgreSQL Backup/Restore
Repository Keyring Cleanup
/etc/apt/keyrings)APT Working State Validation
ensure_apt_working()called before all operationsGitHub API Timeouts
curlcalls now have--max-time 15timeoutEmpty Version Variables
setup_deb822_repo()Module Installation Failures
Version Mismatch Warnings
verify_tool_version()warns if installed version differs from expected📊 Statistics
misc/tools.func+1599-769+830 lines12 new helper functions20+ setup functions🧪 Testing Performed
Test Environments
Tested Scenarios
iptablesblocking🔗 Related PR / Issue
Link: #
✅ Prerequisites (X in brackets)
🛠️ Type of Change (X in brackets)
README,AppName.md,CONTRIBUTING.md, or other docs.