MariaDB-server-compat:
- Remove MariaDB-server-compat* in main() before any MariaDB install
- Use dnf remove then rpm -e --nodeps loop in main(), installMySQL, fix_almalinux9
- Prevents transaction conflicts when installing MariaDB 10.11
mysql command not found:
- install_utils.call: detect mysql/mariadb commands, use shell=True and full path
- Replace leading mysql/mariadb with /usr/bin/mariadb or /usr/bin/mysql
- Fixes FileNotFoundError when changeMYSQLRootPassword runs
OpenLiteSpeed:
- Create /usr/local/lsws and /usr/local/lsws/bin before installing custom binary
- Fixes 'No such file or directory: /usr/local/lsws/bin/openlitespeed'
- Detect mysql/mariadb commands and find binary path automatically
- Replace mysql/mariadb with full path (/usr/bin/mysql or /usr/bin/mariadb)
- Use shell=True for mysql commands to handle complex SQL properly
- Fixes FileNotFoundError when executing mysql commands
- Works with both mysql and mariadb binaries
- Remove MariaDB-server-compat* packages that conflict with MariaDB 10.11
- Fixes transaction test errors when installing MariaDB 10.11
- Removes compat packages from previous MariaDB 12.1 installation attempts
- Ensures clean MariaDB 10.11 installation without conflicts
- Also remove sudo from curl command (not needed when running as root)
- Temporarily adjust dnf exclude to allow mariadb-devel installation
- Only exclude MariaDB-server, not development packages
- Ensures mariadb-devel can be installed even when server is excluded
- Critical for Python mysqlclient package compilation
- Remove silent redirects to show actual errors
- Add explicit success/failure messages
- Show pip installation output for debugging
- Better OS detection with fallback
- Verify MySQLdb availability with version check
- Add diagnostic output if installation fails
- Ensures dependencies are installed before install.py runs
- Detect AlmaLinux 10 in detect_os() function
- Treat AlmaLinux 10 same as AlmaLinux 9 for package installation
- Update supported OS list to include AlmaLinux 10
- Ensures installer works on AlmaLinux 9.x and 10.x
- Install MariaDB/MySQL development headers (mariadb-devel/mysql-devel)
- Install mysqlclient Python package (provides MySQLdb)
- Support for AlmaLinux 9/10, Rocky Linux, CentOS, RHEL, Ubuntu, Debian
- Verify MySQLdb is available before running installer
- Fixes ModuleNotFoundError: No module named 'MySQLdb'
- Verify install directory exists after extraction
- Show archive contents if extraction fails
- Ensures install/install.py is available for direct execution
- Patches install.py (not just wrapper script) to add --exclude=MariaDB-server*
- Handles both shell commands and Python string commands
- Ensures MariaDB exclude is applied to all installation commands
- Works in conjunction with dnf.conf excludes
- Get server IP address automatically
- Pass publicip as required positional argument
- Set default options (OpenLiteSpeed, Full install, Local MySQL)
- Ensures install.py runs in non-interactive mode
- Fixes issue where old interactive installer was being used
- install/install.py is the actual installer with our fixes
- cyberpanel_installer.sh is old v2.4.4 wrapper that doesn't support auto-install
- This ensures auto-install mode works and uses our fixed installer
- Falls back to cyberpanel_installer.sh if install.py not found
- Uses python3 -c instead of heredoc for better compatibility
- Simplified regex patterns for more reliable matching
- Better error handling and fallback to sed
- Properly adds --exclude=MariaDB-server* to dnf/yum install commands
- Uses Python to properly parse and modify installer script
- Handles multiple patterns for dnf/yum install commands
- Adds --exclude=MariaDB-server* to all relevant commands
- Falls back to sed if Python fails
- More robust than simple sed replacements
- Modifies installer script after download but before execution
- Adds --exclude=MariaDB-server* to all dnf/yum install commands
- Prevents MariaDB upgrade attempts in Pre_Install_Required_Components
- Works even if repository is set up and enabled
- Uses Python for more reliable repository file parsing
- Handles MariaDB 12.1 repository sections correctly
- Falls back to renaming repository files if Python fails
- More robust than sed for complex repository file formats
- Simplified repository disabling logic
- Ensures enabled=0 is set in all MariaDB repository sections
- Handles cases where enabled line doesn't exist
- More robust file detection using find command
- Creates function to disable MariaDB repository files
- Starts background process to monitor and disable repos as they're created
- Calls disable function right before installer runs
- Stops monitor after installation completes
- Prevents MariaDB upgrade attempts even if repository is set up
- Use MariaDB-server* with wildcard for better matching
- Ensure exclude is in [main] section of dnf.conf
- Also add exclude to yum.conf for compatibility
- Better handling of existing exclude lines
- Checks for existing MariaDB 10.x installation
- Adds MariaDB-server to dnf excludes BEFORE Pre_Install_Setup_Repository
- Prevents upgrade attempts in Pre_Install_Required_Components
- Runs early in install_cyberpanel_direct() function
- Called immediately after apply_os_specific_fixes()
- Runs before Pre_Install_Required_Components attempts MariaDB installation
- Ensures dnf exclude is set before any package operations
- Prevents MariaDB upgrade attempts
- Ensures MariaDB 12.1 repository is disabled early in the process
- Called before Pre_Install_Required_Components runs
- Prevents upgrade attempts when MariaDB 10.x is already installed
- Prevents upgrade attempts in Pre_Install_Required_Components
- Called early in installation process before repository setup
- Disables MariaDB 12.1 repository files if MariaDB 10.x is detected
- Fixes 'PREIN scriptlet failed' error during installation
- Check if MariaDB is already installed before setting up 12.1 repository
- Skip repository setup if MariaDB 10.x is installed to avoid upgrade conflicts
- Prevents 'PREIN scriptlet failed' error when installer tries to upgrade
- Uses existing MariaDB installation if detected
- Check for existing MariaDB before attempting installation
- Prevents upgrade errors when MariaDB 10.x is already installed
- Skips installation if MariaDB is already present
- Fixes 'PREIN scriptlet failed' error during installation
- Change installer URL from usmannasir/cyberpanel to master3395/cyberpanel
- Update archive URL to use master3395 fork
- This ensures our fixes (bash execution, permission handling) are used
- Fixes issue where old version without fixes was being downloaded
- Use bash to execute cyberpanel_installer.sh instead of relying on execute bit
- Verify file exists before execution
- Use absolute path to ensure correct file location
- Improve chmod error handling with verification
- Fixes 'Permission denied' error when cyberpanel.sh tries to execute installer
- Replace exec with direct bash execution followed by exit
- This allows cyberpanel.sh to properly execute ./cyberpanel_installer.sh
- Add fallback directories for cd command
- Preserve exit codes from cyberpanel.sh execution
- cyberpanel.sh uses #!/bin/bash so should be executed with bash
- Change to /tmp directory before execution to ensure writable location
- Fixes permission issues when cyberpanel.sh tries to execute other scripts
- Execute with 'sh' instead of relying on exec permissions
- More reliable in process substitution context
- Handles cases where chmod might not work properly
- Use absolute path (/tmp/cyberpanel-96375.sh) instead of relative path
- Use exec instead of ./ to execute the script
- Ensures proper permissions and execution in process substitution context
- Clean up script file after execution
- Remove complex modular architecture that was causing variable persistence issues
- Use simple OS detection like stable branch
- Download cyberpanel.sh directly for v2.5.5-dev branch
- Add disk space checking (10GB minimum)
- Support both yum and dnf for RHEL-based systems
- Fallback to standard cyberpanel.sh if branch-specific download fails
- Much simpler and more reliable approach
- Always call detect_os() and get_os_info() in install_dependencies()
- This ensures variables are fresh and properly captured
- Add confirmation message showing captured values
- Fixes issue where variables were detected but empty when passed to manage_dependencies
- Remove debug output that wasn't showing
- Use eval with get_os_info() to properly capture OS variables
- Add better error messages showing actual variable values
- Ensure variables are properly exported before calling manage_dependencies
- Fix missing 'fi' closing the TEMP_DIR check block
- Add check_disk_space() function to verify minimum 10GB available
- Display disk space requirements and available space
- Warn if insufficient space but allow continuation
- Use eval with get_os_info() to capture OS variables
- Ensures variables are properly set in current shell scope
- Fixes issue where variables were detected but not available to install_dependencies()
- Temporarily disable set -e when trying to create temp directories
- Prevents script from exiting when /tmp is full
- Allows fallback to alternative directories or fallback installer
- Try multiple temp directory locations (/tmp, /var/tmp, /root, /root)
- Clean up old temporary directories before creating new ones
- Skip git clone if no temp directory can be created
- Try multiple locations for fallback installer download
- Better error messages for disk space issues
- Use flag-based approach to track git clone success
- Verify repository structure (install.sh and modules/) before using
- Fix fallback execution path
- Support both yum and dnf for package installation
- Better error messages
- Add timeout for git clone (180 seconds)
- Better error messages showing actual git errors
- Verify repository structure before using cloned repo
- Improve fallback installer download with better error handling
- Support both yum and dnf for RHEL-based systems
- FTPUsers: use domain__domain__in (FK to Websites) not domain__in
- Session: use session.get('userID'), return JSON when missing
- ACL: use currentACL.get('admin',0) to avoid KeyError
- /proc: resilient parsing for net/dev, diskstats, stat
- Log errors via CyberCPLogFileWriter; generic user-facing messages
- Prevents intermittent 500s that zero out insights (Users, Sites, etc.)