ruvector/crates/ruvector-postgres/install/scripts/setup-rhel.sh
rUv 42952e7fe7 docs: Reorganize documentation and add postgres README
ruvector-postgres:
- Add comprehensive README.md with features, comparison, tutorials
- Create docs/implementation/ and docs/guides/ subdirectories
- Move implementation summaries to organized locations

Root docs reorganization:
- Move HNSW docs to docs/hnsw/
- Move postgres docs to docs/postgres/
- Move zero-copy docs to docs/postgres/zero-copy/
- Move guides to docs/guides/
- Move architecture to docs/architecture/
- Move benchmarks docs to benchmarks/docs/
- Move benchmark source to benchmarks/src/

Cleanup:
- Remove duplicate install/ from root (now in crates/ruvector-postgres/install/)
- Remove stale benchmark results
- Remove duplicate binary files

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 16:45:44 +00:00

114 lines
2.9 KiB
Bash
Executable file

#!/bin/bash
#
# RuVector Setup Script for RHEL/CentOS/Fedora
# Installs all required dependencies for building RuVector
#
set -e
echo "RuVector Dependency Setup for RHEL/CentOS/Fedora"
echo "================================================="
echo ""
# Check if running as root
if [ "$EUID" -ne 0 ]; then
SUDO="sudo"
else
SUDO=""
fi
# Detect distro
if [ -f /etc/os-release ]; then
. /etc/os-release
DISTRO="$ID"
VERSION="$VERSION_ID"
else
DISTRO="unknown"
fi
echo "Detected: $DISTRO $VERSION"
# Determine package manager
if command -v dnf &> /dev/null; then
PKG_MGR="dnf"
elif command -v yum &> /dev/null; then
PKG_MGR="yum"
else
echo "Error: Neither dnf nor yum found"
exit 1
fi
# Install EPEL if needed (for CentOS/RHEL)
if [[ "$DISTRO" == "centos" || "$DISTRO" == "rhel" ]]; then
echo "Installing EPEL repository..."
$SUDO $PKG_MGR install -y epel-release
fi
# Install development tools
echo "Installing development tools..."
$SUDO $PKG_MGR groupinstall -y "Development Tools"
$SUDO $PKG_MGR install -y \
openssl-devel \
clang \
clang-devel \
llvm-devel \
cmake \
git \
curl \
ca-certificates
# Determine PostgreSQL version to install
PG_VERSION="${1:-16}"
echo "Setting up PostgreSQL $PG_VERSION..."
# Add PostgreSQL repository
if ! $PKG_MGR repolist | grep -q pgdg; then
echo "Adding PostgreSQL repository..."
$SUDO $PKG_MGR install -y \
"https://download.postgresql.org/pub/repos/yum/reporpms/EL-${VERSION%%.*}-x86_64/pgdg-redhat-repo-latest.noarch.rpm"
fi
# Disable built-in PostgreSQL module (for RHEL 8+)
if [[ "$VERSION" =~ ^8 || "$VERSION" =~ ^9 ]]; then
$SUDO dnf -qy module disable postgresql 2>/dev/null || true
fi
# Install PostgreSQL
echo "Installing PostgreSQL $PG_VERSION..."
$SUDO $PKG_MGR install -y \
"postgresql${PG_VERSION}-server" \
"postgresql${PG_VERSION}-devel"
# Initialize PostgreSQL if needed
if [ ! -f "/var/lib/pgsql/${PG_VERSION}/data/postgresql.conf" ]; then
echo "Initializing PostgreSQL database..."
$SUDO "/usr/pgsql-${PG_VERSION}/bin/postgresql-${PG_VERSION}-setup" initdb
fi
# Start PostgreSQL
echo "Starting PostgreSQL..."
$SUDO systemctl enable "postgresql-${PG_VERSION}"
$SUDO systemctl start "postgresql-${PG_VERSION}"
# Install Rust if not present
if ! command -v rustc &> /dev/null; then
echo "Installing Rust..."
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
fi
# Install cargo-pgrx
echo "Installing cargo-pgrx..."
cargo install cargo-pgrx --version "0.12.9" --locked
# Initialize pgrx
echo "Initializing pgrx for PostgreSQL $PG_VERSION..."
cargo pgrx init --pg$PG_VERSION "/usr/pgsql-${PG_VERSION}/bin/pg_config"
echo ""
echo "================================================="
echo "Setup complete!"
echo ""
echo "You can now build RuVector with:"
echo " cd /path/to/ruvector"
echo " ./install/install.sh --build-from-source --pg-version $PG_VERSION"
echo ""