From 9a4641b638f2c956247349c8bf4cf54dc188a4b0 Mon Sep 17 00:00:00 2001 From: jjorstad2 Date: Sun, 2 Nov 2025 21:58:04 +0000 Subject: [PATCH] Update install_perccli.sh --- install_perccli.sh | 62 +++++++++++++++++++++++++++------------------- 1 file changed, 37 insertions(+), 25 deletions(-) diff --git a/install_perccli.sh b/install_perccli.sh index 09ce577..8af7e87 100644 --- a/install_perccli.sh +++ b/install_perccli.sh @@ -116,39 +116,51 @@ if [ $INSTALL_SUCCESS -eq 0 ]; then echo "" echo "5. Installation successful. Performing final setup and cleanup." - # NEW DYNAMIC PATH DISCOVERY: Find where dpkg actually put the executable + # NEW DYNAMIC PATH DISCOVERY: Try dpkg, then fall back to filesystem search ACTUAL_EXECUTABLE_PATH=$(dpkg -L perccli 2>/dev/null | grep "/perccli$" | head -n 1) + # If dpkg failed or found path is not a file, search common installation directories + if [ -z "$ACTUAL_EXECUTABLE_PATH" ] || [ ! -f "$ACTUAL_EXECUTABLE_PATH" ]; then + echo "WARNING: dpkg path discovery failed. Performing filesystem search for 'perccli'..." + # Search common paths: /opt, /usr/local/sbin, /usr/sbin, /usr/bin + ACTUAL_EXECUTABLE_PATH=$(find /opt /usr/local/sbin /usr/sbin /usr/bin -name perccli -type f 2>/dev/null | head -n 1) + fi + + # Finalize path or fail if [ -n "$ACTUAL_EXECUTABLE_PATH" ] && [ -f "$ACTUAL_EXECUTABLE_PATH" ]; then EXECUTABLE_PATH="$ACTUAL_EXECUTABLE_PATH" echo "Dynamically found executable at: $EXECUTABLE_PATH" else - echo "WARNING: Could not reliably determine the installed executable path using dpkg. Assuming default: $EXECUTABLE_PATH" - fi - - # CRITICAL FIX: Ensure the executable has permissions (Fixes 'Permission denied') - if [ -f "$EXECUTABLE_PATH" ]; then - chmod +x "$EXECUTABLE_PATH" - echo "Applied execute permission to $EXECUTABLE_PATH." - else - echo "FATAL ERROR: Executable not found at $EXECUTABLE_PATH. Cannot apply permissions or create symlink." - # Keep INSTALL_SUCCESS=0 if files are missing, just report the error and attempt cleanup - fi - - # Add symbolic link to the path (Fixes 'command not found') - if [ ! -L "$SYMLINK_PATH" ] && [ -f "$EXECUTABLE_PATH" ]; then - ln -s "$EXECUTABLE_PATH" "$SYMLINK_PATH" - echo "Created symbolic link at $SYMLINK_PATH." + echo "FATAL ERROR: Could not locate 'perccli' binary after successful package setup." + echo "Please manually run: find / -name perccli -type f" + INSTALL_SUCCESS=1 # Set installation to fail state to skip chmod/symlink fi - rm -f "$ARCHIVE_NAME" - rm -rf "$TEMP_DIR" - echo "PERCCLI tool is installed and configured. Cleaning up temporary files." - - echo "---" - echo "Verification Command:" - echo "perccli /c0 show" - echo "---" + + # Proceed with cleanup and symlinking only if the executable was found + if [ $INSTALL_SUCCESS -eq 0 ]; then + # CRITICAL FIX: Ensure the executable has permissions (Fixes 'Permission denied') + chmod +x "$EXECUTABLE_PATH" + echo "Applied execute permission to $EXECUTABLE_PATH." + + # Add symbolic link to the path (Fixes 'command not found') + if [ ! -L "$SYMLINK_PATH" ]; then + ln -s "$EXECUTABLE_PATH" "$SYMLINK_PATH" + echo "Created symbolic link at $SYMLINK_PATH." + fi + + rm -f "$ARCHIVE_NAME" + rm -rf "$TEMP_DIR" + echo "PERCCLI tool is installed and configured. Cleaning up temporary files." + + echo "---" + echo "Verification Command:" + echo "perccli /c0 show" + echo "---" + else + # If dynamic discovery failed, we skip cleanup and leave temporary files for debugging. + echo "Installation failed due to missing files. Temporary files retained." + fi else echo "" echo "5. Installation failed. The archive '$ARCHIVE_NAME' and temporary directory '$TEMP_DIR' are retained for manual debugging."