Fix 32-bit bcrypt ELFCLASS64 error and enhance installation
- Enhanced install_32bit.sh with clean virtual environment creation - Added --force-reinstall and --clear flags for proper isolation - Improved download_32bit_libs.sh with explicit armv7l targeting - Added troubleshoot_32bit.sh for diagnosing 32-bit issues - Better architecture verification and error messages - Comprehensive package testing after installation Fixes ELFCLASS64 error on 32-bit systems by ensuring proper architecture isolation and clean package installation.
This commit is contained in:
70
download_32bit_libs.sh
Executable file → Normal file
70
download_32bit_libs.sh
Executable file → Normal file
@@ -1,15 +1,71 @@
|
||||
#!/bin/bash
|
||||
# Download 32-bit ARM compatible libraries
|
||||
# Download 32-bit ARM compatible libraries with forced architecture
|
||||
|
||||
set -e
|
||||
|
||||
echo "Downloading 32-bit ARM compatible packages..."
|
||||
echo "======================================="
|
||||
echo " 32-BIT ARM LIBRARY DOWNLOADER"
|
||||
echo "======================================="
|
||||
echo ""
|
||||
|
||||
# Create directory for 32-bit wheels
|
||||
# Remove existing 32-bit folder to ensure clean download
|
||||
if [ -d "req_libraries_32bit" ]; then
|
||||
echo "🗑️ Removing existing req_libraries_32bit for clean download..."
|
||||
rm -rf req_libraries_32bit
|
||||
fi
|
||||
|
||||
# Create fresh directory
|
||||
mkdir -p req_libraries_32bit
|
||||
|
||||
# Download with broader compatibility
|
||||
pip download -r requirements.txt -d req_libraries_32bit/ --prefer-binary
|
||||
echo "📦 Downloading 32-bit ARM compatible packages..."
|
||||
echo " Target architecture: linux_armv7l"
|
||||
echo ""
|
||||
|
||||
echo "Download completed!"
|
||||
echo "Files downloaded to req_libraries_32bit/"
|
||||
# Download with explicit 32-bit ARM platform targeting
|
||||
echo "🔄 Downloading with forced 32-bit architecture..."
|
||||
pip download -r requirements.txt -d req_libraries_32bit/ \
|
||||
--platform linux_armv7l \
|
||||
--only-binary=:all: \
|
||||
--python-version 311 \
|
||||
--abi cp311
|
||||
|
||||
echo ""
|
||||
echo "📊 Download results:"
|
||||
WHEEL_COUNT=$(ls req_libraries_32bit/*.whl 2>/dev/null | wc -l || echo "0")
|
||||
echo " Wheel files: $WHEEL_COUNT"
|
||||
|
||||
if [ "$WHEEL_COUNT" -gt 0 ]; then
|
||||
echo ""
|
||||
echo "🔍 Key 32-bit packages:"
|
||||
if ls req_libraries_32bit/bcrypt*.whl >/dev/null 2>&1; then
|
||||
BCRYPT_FILE=$(basename $(ls req_libraries_32bit/bcrypt*.whl | head -1))
|
||||
echo " 🔐 BCRYPT: $BCRYPT_FILE"
|
||||
if [[ "$BCRYPT_FILE" == *"armv7l"* ]]; then
|
||||
echo " ✅ Correct 32-bit architecture"
|
||||
else
|
||||
echo " ⚠️ Architecture unclear"
|
||||
fi
|
||||
fi
|
||||
|
||||
if ls req_libraries_32bit/pillow*.whl >/dev/null 2>&1; then
|
||||
PILLOW_FILE=$(basename $(ls req_libraries_32bit/pillow*.whl | head -1))
|
||||
echo " 🖼️ PILLOW: $PILLOW_FILE"
|
||||
if [[ "$PILLOW_FILE" == *"armv7l"* ]]; then
|
||||
echo " ✅ Correct 32-bit architecture"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "✅ 32-bit libraries download completed!"
|
||||
echo ""
|
||||
echo "📋 Next steps:"
|
||||
echo " 1. Copy this folder to your 32-bit Raspberry Pi"
|
||||
echo " 2. Run: ./install_32bit.sh"
|
||||
else
|
||||
echo "❌ No wheel files downloaded"
|
||||
echo ""
|
||||
echo "💡 Troubleshooting:"
|
||||
echo " • Check internet connection"
|
||||
echo " • Verify requirements.txt exists"
|
||||
echo " • Some packages may not have 32-bit wheels available"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user