494 lines
9.8 KiB
Markdown
494 lines
9.8 KiB
Markdown
# pyPhotoAlbum Installation Guide
|
|
|
|
This guide provides multiple installation methods for pyPhotoAlbum on Linux systems, with specific instructions for Fedora and Arch/CachyOS.
|
|
|
|
## Table of Contents
|
|
|
|
- [Quick Install (Recommended)](#quick-install-recommended)
|
|
- [Manual Installation](#manual-installation)
|
|
- [Distribution-Specific Packages](#distribution-specific-packages)
|
|
- [Fedora (RPM)](#fedora-rpm)
|
|
- [Arch/CachyOS (PKGBUILD)](#archcachyos-pkgbuild)
|
|
- [Development Installation](#development-installation)
|
|
- [Troubleshooting](#troubleshooting)
|
|
|
|
---
|
|
|
|
## Quick Install (Recommended)
|
|
|
|
The easiest way to install pyPhotoAlbum is using the provided installation script:
|
|
|
|
```bash
|
|
# Clone the repository
|
|
git clone https://gitea.tourolle.paris/dtourolle/pyPhotoAlbum.git
|
|
cd pyPhotoAlbum
|
|
|
|
# Run the installation script
|
|
./install.sh
|
|
```
|
|
|
|
The script will:
|
|
1. Detect your distribution (Fedora, Arch, Ubuntu, etc.)
|
|
2. Offer to install system dependencies
|
|
3. Install pyPhotoAlbum
|
|
4. Set up desktop integration (icon and menu entry)
|
|
|
|
### Installation Modes
|
|
|
|
**User installation (default):**
|
|
```bash
|
|
./install.sh
|
|
```
|
|
- Installs to `~/.local/`
|
|
- No root privileges required
|
|
- Only affects current user
|
|
|
|
**System-wide installation:**
|
|
```bash
|
|
sudo ./install.sh --system
|
|
```
|
|
- Installs to `/usr/`
|
|
- Requires root privileges
|
|
- Available to all users
|
|
|
|
---
|
|
|
|
## Manual Installation
|
|
|
|
### Step 1: Install Dependencies
|
|
|
|
**Fedora:**
|
|
```bash
|
|
sudo dnf install python3 python3-pip python3-qt6 python3-pyopengl \
|
|
python3-numpy python3-pillow python3-reportlab python3-lxml
|
|
```
|
|
|
|
**Arch/CachyOS:**
|
|
```bash
|
|
sudo pacman -S python python-pip python-pyqt6 python-pyopengl \
|
|
python-numpy python-pillow python-reportlab python-lxml
|
|
```
|
|
|
|
**Ubuntu/Debian:**
|
|
```bash
|
|
sudo apt install python3 python3-pip python3-pyqt6 python3-opengl \
|
|
python3-numpy python3-pil python3-reportlab python3-lxml
|
|
```
|
|
|
|
**Other distributions:**
|
|
|
|
If your distribution isn't listed, install these Python packages via pip:
|
|
```bash
|
|
pip install --user PyQt6 PyOpenGL numpy Pillow reportlab lxml
|
|
```
|
|
|
|
### Step 2: Install pyPhotoAlbum
|
|
|
|
**For current user only:**
|
|
```bash
|
|
cd pyPhotoAlbum
|
|
pip install --user .
|
|
```
|
|
|
|
**System-wide:**
|
|
```bash
|
|
cd pyPhotoAlbum
|
|
sudo pip install .
|
|
```
|
|
|
|
### Step 3: Desktop Integration (Optional)
|
|
|
|
**User installation:**
|
|
```bash
|
|
# Create directories
|
|
mkdir -p ~/.local/share/applications
|
|
mkdir -p ~/.local/share/icons/hicolor/256x256/apps
|
|
|
|
# Install files
|
|
cp pyphotoalbum.desktop ~/.local/share/applications/
|
|
cp pyPhotoAlbum/icons/icon.png ~/.local/share/icons/hicolor/256x256/apps/pyphotoalbum.png
|
|
|
|
# Update caches
|
|
update-desktop-database ~/.local/share/applications
|
|
gtk-update-icon-cache ~/.local/share/icons/hicolor/
|
|
```
|
|
|
|
**System-wide:**
|
|
```bash
|
|
sudo install -Dm644 pyphotoalbum.desktop /usr/share/applications/pyphotoalbum.desktop
|
|
sudo install -Dm644 pyPhotoAlbum/icons/icon.png /usr/share/icons/hicolor/256x256/apps/pyphotoalbum.png
|
|
sudo update-desktop-database /usr/share/applications
|
|
sudo gtk-update-icon-cache /usr/share/icons/hicolor/
|
|
```
|
|
|
|
---
|
|
|
|
## Distribution-Specific Packages
|
|
|
|
### Fedora (RPM)
|
|
|
|
Build and install an RPM package for Fedora:
|
|
|
|
#### Prerequisites
|
|
|
|
```bash
|
|
sudo dnf install rpm-build rpmdevtools
|
|
```
|
|
|
|
#### Build Source Tarball
|
|
|
|
```bash
|
|
# From the project root
|
|
cd ..
|
|
tar czf pyphotoalbum-0.1.0.tar.gz pyPhotoAlbum/
|
|
mv pyphotoalbum-0.1.0.tar.gz ~/rpmbuild/SOURCES/
|
|
```
|
|
|
|
#### Build RPM
|
|
|
|
```bash
|
|
cd pyPhotoAlbum
|
|
rpmbuild -ba pyphotoalbum.spec
|
|
```
|
|
|
|
The RPM will be created in `~/rpmbuild/RPMS/noarch/`
|
|
|
|
#### Install RPM
|
|
|
|
```bash
|
|
sudo dnf install ~/rpmbuild/RPMS/noarch/pyphotoalbum-0.1.0-1.*.noarch.rpm
|
|
```
|
|
|
|
#### Create Local Repository (Optional)
|
|
|
|
To create a local yum repository:
|
|
|
|
```bash
|
|
# Create repository directory
|
|
sudo mkdir -p /var/local-repo
|
|
|
|
# Copy RPM
|
|
sudo cp ~/rpmbuild/RPMS/noarch/pyphotoalbum-*.rpm /var/local-repo/
|
|
|
|
# Create repository metadata
|
|
sudo createrepo /var/local-repo
|
|
|
|
# Add repository configuration
|
|
sudo tee /etc/yum.repos.d/local.repo << EOF
|
|
[local]
|
|
name=Local Repository
|
|
baseurl=file:///var/local-repo
|
|
enabled=1
|
|
gpgcheck=0
|
|
EOF
|
|
|
|
# Install from local repository
|
|
sudo dnf install pyphotoalbum
|
|
```
|
|
|
|
---
|
|
|
|
### Arch/CachyOS (PKGBUILD)
|
|
|
|
Build and install using the provided PKGBUILD:
|
|
|
|
#### Build Source Tarball
|
|
|
|
```bash
|
|
# From the project root
|
|
cd ..
|
|
tar czf pyphotoalbum-0.1.0.tar.gz pyPhotoAlbum/
|
|
mv pyphotoalbum-0.1.0.tar.gz pyPhotoAlbum/
|
|
cd pyPhotoAlbum
|
|
```
|
|
|
|
#### Build Package
|
|
|
|
```bash
|
|
makepkg -si
|
|
```
|
|
|
|
This will:
|
|
- Build the package
|
|
- Install it automatically (`-i` flag)
|
|
- Sync dependencies (`-s` flag)
|
|
|
|
#### Build Without Installing
|
|
|
|
```bash
|
|
makepkg
|
|
```
|
|
|
|
The package will be created as `pyphotoalbum-0.1.0-1-any.pkg.tar.zst`
|
|
|
|
#### Install Package
|
|
|
|
```bash
|
|
sudo pacman -U pyphotoalbum-0.1.0-1-any.pkg.tar.zst
|
|
```
|
|
|
|
#### Create Local Repository (Optional)
|
|
|
|
To create a local pacman repository:
|
|
|
|
```bash
|
|
# Create repository directory
|
|
mkdir -p ~/local-repo
|
|
|
|
# Copy package
|
|
cp pyphotoalbum-*.pkg.tar.zst ~/local-repo/
|
|
|
|
# Create repository database
|
|
cd ~/local-repo
|
|
repo-add local.db.tar.gz pyphotoalbum-*.pkg.tar.zst
|
|
|
|
# Add repository to pacman.conf
|
|
sudo tee -a /etc/pacman.conf << EOF
|
|
|
|
[local]
|
|
SigLevel = Optional TrustAll
|
|
Server = file:///home/$USER/local-repo
|
|
EOF
|
|
|
|
# Update and install
|
|
sudo pacman -Sy pyphotoalbum
|
|
```
|
|
|
|
---
|
|
|
|
## Development Installation
|
|
|
|
For development work, install in editable mode:
|
|
|
|
```bash
|
|
# Clone repository
|
|
git clone https://gitea.tourolle.paris/dtourolle/pyPhotoAlbum.git
|
|
cd pyPhotoAlbum
|
|
|
|
# Create virtual environment (recommended)
|
|
python -m venv venv
|
|
source venv/bin/activate # On Windows: venv\Scripts\activate
|
|
|
|
# Install in editable mode with development dependencies
|
|
pip install -e ".[dev]"
|
|
|
|
# Run tests
|
|
pytest
|
|
|
|
# Run application
|
|
pyphotoalbum
|
|
# or
|
|
python pyPhotoAlbum/main.py
|
|
```
|
|
|
|
### Development Tools
|
|
|
|
The development installation includes:
|
|
- **pytest** - Testing framework
|
|
- **pytest-qt** - Qt testing support
|
|
- **pytest-cov** - Coverage reporting
|
|
- **pytest-mock** - Mocking utilities
|
|
- **flake8** - Linting
|
|
- **black** - Code formatting
|
|
- **mypy** - Type checking
|
|
|
|
### Running Development Tools
|
|
|
|
```bash
|
|
# Format code
|
|
black pyPhotoAlbum tests
|
|
|
|
# Run linter
|
|
flake8 pyPhotoAlbum tests
|
|
|
|
# Type checking
|
|
mypy pyPhotoAlbum
|
|
|
|
# Run tests with coverage
|
|
pytest --cov=pyPhotoAlbum --cov-report=html
|
|
```
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### Command not found: pyphotoalbum
|
|
|
|
**Issue:** After user installation, the `pyphotoalbum` command is not found.
|
|
|
|
**Solution:** Add `~/.local/bin` to your PATH:
|
|
|
|
```bash
|
|
# Add to ~/.bashrc or ~/.zshrc
|
|
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
|
|
source ~/.bashrc
|
|
```
|
|
|
|
### Application doesn't appear in menu
|
|
|
|
**Issue:** Desktop entry not showing in application menu.
|
|
|
|
**Solution:** Update desktop database:
|
|
|
|
```bash
|
|
# For user installation
|
|
update-desktop-database ~/.local/share/applications
|
|
|
|
# For system installation
|
|
sudo update-desktop-database /usr/share/applications
|
|
```
|
|
|
|
You may need to log out and back in or restart your desktop environment.
|
|
|
|
### Icon not displaying
|
|
|
|
**Issue:** Application icon not showing in menu or taskbar.
|
|
|
|
**Solution:** Update icon cache:
|
|
|
|
```bash
|
|
# For user installation
|
|
gtk-update-icon-cache ~/.local/share/icons/hicolor/
|
|
|
|
# For system installation
|
|
sudo gtk-update-icon-cache /usr/share/icons/hicolor/
|
|
```
|
|
|
|
### PyQt6 import errors
|
|
|
|
**Issue:** `ImportError: cannot import name 'xxx' from 'PyQt6'`
|
|
|
|
**Solution:** Ensure PyQt6 is properly installed:
|
|
|
|
```bash
|
|
# Uninstall and reinstall
|
|
pip uninstall PyQt6 PyQt6-Qt6 PyQt6-sip
|
|
pip install PyQt6
|
|
```
|
|
|
|
### OpenGL errors
|
|
|
|
**Issue:** OpenGL-related errors when starting the application.
|
|
|
|
**Solution:** Install OpenGL libraries:
|
|
|
|
**Fedora:**
|
|
```bash
|
|
sudo dnf install mesa-libGL mesa-libGL-devel
|
|
```
|
|
|
|
**Arch/CachyOS:**
|
|
```bash
|
|
sudo pacman -S mesa libglvnd
|
|
```
|
|
|
|
### Permission denied errors
|
|
|
|
**Issue:** Permission errors during system-wide installation.
|
|
|
|
**Solution:** Use `sudo` or switch to user installation:
|
|
|
|
```bash
|
|
# User installation (no sudo needed)
|
|
pip install --user .
|
|
./install.sh # Without --system flag
|
|
```
|
|
|
|
### Building RPM fails
|
|
|
|
**Issue:** Missing build dependencies for RPM.
|
|
|
|
**Solution:** Install all build requirements:
|
|
|
|
```bash
|
|
sudo dnf install rpm-build rpmdevtools python3-devel python3-setuptools \
|
|
python3-pip desktop-file-utils
|
|
```
|
|
|
|
### Building on Arch fails
|
|
|
|
**Issue:** Missing dependencies when running makepkg.
|
|
|
|
**Solution:** Install build dependencies:
|
|
|
|
```bash
|
|
sudo pacman -S base-devel python-build python-installer python-wheel
|
|
```
|
|
|
|
---
|
|
|
|
## Verifying Installation
|
|
|
|
After installation, verify it works:
|
|
|
|
```bash
|
|
# Check if command is available
|
|
which pyphotoalbum
|
|
|
|
# Check Python package
|
|
python -c "import pyPhotoAlbum; print(pyPhotoAlbum.__file__)"
|
|
|
|
# Run application
|
|
pyphotoalbum --version # If version flag is implemented
|
|
pyphotoalbum
|
|
```
|
|
|
|
---
|
|
|
|
## Uninstallation
|
|
|
|
### User Installation
|
|
|
|
```bash
|
|
pip uninstall pyphotoalbum
|
|
rm ~/.local/share/applications/pyphotoalbum.desktop
|
|
rm ~/.local/share/icons/hicolor/256x256/apps/pyphotoalbum.png
|
|
update-desktop-database ~/.local/share/applications
|
|
```
|
|
|
|
### System Installation
|
|
|
|
```bash
|
|
sudo pip uninstall pyphotoalbum
|
|
sudo rm /usr/share/applications/pyphotoalbum.desktop
|
|
sudo rm /usr/share/icons/hicolor/256x256/apps/pyphotoalbum.png
|
|
sudo update-desktop-database /usr/share/applications
|
|
```
|
|
|
|
### RPM (Fedora)
|
|
|
|
```bash
|
|
sudo dnf remove pyphotoalbum
|
|
```
|
|
|
|
### Pacman (Arch/CachyOS)
|
|
|
|
```bash
|
|
sudo pacman -R pyphotoalbum
|
|
```
|
|
|
|
---
|
|
|
|
## Getting Help
|
|
|
|
If you encounter issues not covered here:
|
|
|
|
1. Check the [README.md](README.md) for general information
|
|
2. Search existing issues: https://gitea.tourolle.paris/dtourolle/pyPhotoAlbum/issues
|
|
3. Create a new issue with:
|
|
- Your distribution and version
|
|
- Installation method used
|
|
- Complete error messages
|
|
- Output of `python --version` and `pip list | grep -i pyqt`
|
|
|
|
---
|
|
|
|
## Next Steps
|
|
|
|
After installation, see:
|
|
- [README.md](README.md) - General usage and features
|
|
- [EMBEDDED_TEMPLATES.md](pyPhotoAlbum/EMBEDDED_TEMPLATES.md) - Template system
|
|
- Examples in the `examples/` directory
|
|
|
|
Enjoy using pyPhotoAlbum!
|