Skip to content

Commit adab472

Browse files
committed
fix: resolve ffmpeg conflict and add dnf cache refresh
1 parent 66f1d52 commit adab472

1 file changed

Lines changed: 60 additions & 11 deletions

File tree

install.sh

Lines changed: 60 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -435,10 +435,21 @@ setup_third_party_repos() {
435435
# Google Chrome
436436
if [ ! -f /etc/yum.repos.d/google-chrome.repo ]; then
437437
print_step "Adding Google Chrome repository..."
438-
sudo dnf config-manager addrepo --from-repofile=https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome.repo || {
438+
# Import Google's signing key first
439+
sudo rpm --import https://dl.google.com/linux/linux_signing_key.pub 2>/dev/null || true
440+
# Create repo file manually (more reliable than addrepo)
441+
if ! cat << 'EOF' | sudo tee /etc/yum.repos.d/google-chrome.repo > /dev/null
442+
[google-chrome]
443+
name=Google Chrome
444+
baseurl=https://dl.google.com/linux/chrome/rpm/stable/x86_64
445+
enabled=1
446+
gpgcheck=1
447+
gpgkey=https://dl.google.com/linux/linux_signing_key.pub
448+
EOF
449+
then
439450
print_warning "Failed to add Google Chrome repo"
440451
FAILED_ITEMS+=("chrome-repo")
441-
}
452+
fi
442453
fi
443454

444455
# VS Code
@@ -517,10 +528,28 @@ EOF
517528
print_step "Adding ueberzugpp OBS repository..."
518529
local fedora_ver
519530
fedora_ver=$(rpm -E %fedora)
520-
sudo dnf config-manager addrepo --from-repofile="https://download.opensuse.org/repositories/home:justkidding/Fedora_${fedora_ver}/home:justkidding.repo" || {
521-
print_warning "Failed to add ueberzugpp repo"
522-
FAILED_ITEMS+=("ueberzugpp-repo")
523-
}
531+
local obs_url="https://download.opensuse.org/repositories/home:justkidding/Fedora_${fedora_ver}/home:justkidding.repo"
532+
533+
# Check if repo exists for this Fedora version
534+
if curl -sfI "$obs_url" &>/dev/null; then
535+
sudo dnf config-manager addrepo --from-repofile="$obs_url" || {
536+
print_warning "Failed to add ueberzugpp repo"
537+
FAILED_ITEMS+=("ueberzugpp-repo")
538+
}
539+
else
540+
# Try Fedora 41 as fallback
541+
local fallback_url="https://download.opensuse.org/repositories/home:justkidding/Fedora_41/home:justkidding.repo"
542+
if curl -sfI "$fallback_url" &>/dev/null; then
543+
print_step "Using Fedora 41 repo as fallback for ueberzugpp..."
544+
sudo dnf config-manager addrepo --from-repofile="$fallback_url" || {
545+
print_warning "Failed to add ueberzugpp repo (fallback)"
546+
FAILED_ITEMS+=("ueberzugpp-repo")
547+
}
548+
else
549+
print_warning "ueberzugpp repo not available for Fedora $fedora_ver (optional)"
550+
FAILED_ITEMS+=("ueberzugpp-repo")
551+
fi
552+
fi
524553
fi
525554

526555
# Post-verification: check repos are usable
@@ -561,6 +590,12 @@ EOF
561590
else
562591
print_success "Third-party repositories configured (verified)"
563592
fi
593+
594+
# Refresh DNF cache after adding repos (critical for new repos to work)
595+
print_step "Refreshing package cache..."
596+
if ! sudo dnf makecache --refresh 2>&1 | tee -a "$LOG_FILE"; then
597+
print_warning "DNF cache refresh had issues, continuing anyway..."
598+
fi
564599
}
565600

566601
# Save current package state (for clean uninstall later)
@@ -661,8 +696,7 @@ install_packages() {
661696

662697
# yazi file manager (COPR)
663698
yazi
664-
# ueberzugpp for yazi image preview (OBS)
665-
ueberzugpp
699+
# Note: ueberzugpp installed separately (OBS repo may not be available)
666700

667701
# Media
668702
torbrowser-launcher
@@ -686,13 +720,28 @@ install_packages() {
686720

687721
print_step "This may take a few minutes..."
688722

689-
# DNF install with error handling
690-
# Use PIPESTATUS to capture dnf exit code, not tee's
691-
sudo dnf install -y "${PACKAGES[@]}" --skip-unavailable --setopt=install_weak_deps=False 2>&1 | tee -a "$LOG_FILE"
723+
# Handle ffmpeg conflict (ffmpeg-free vs ffmpeg from RPMFusion)
724+
# RPMFusion's ffmpeg has more codecs, so prefer it
725+
if rpm -q ffmpeg-free &>/dev/null; then
726+
print_step "Replacing ffmpeg-free with full ffmpeg from RPMFusion..."
727+
sudo dnf swap -y ffmpeg-free ffmpeg --allowerasing 2>&1 | tee -a "$LOG_FILE" || true
728+
fi
729+
730+
# Install all packages with --allowerasing to handle conflicts
731+
print_step "Installing packages (this may take several minutes)..."
732+
sudo dnf install -y "${PACKAGES[@]}" --skip-unavailable --allowerasing --setopt=install_weak_deps=False 2>&1 | tee -a "$LOG_FILE"
692733
if [ "${PIPESTATUS[0]}" -ne 0 ]; then
693734
print_warning "Some packages may have failed. Continuing anyway..."
694735
fi
695736

737+
# Try to install ueberzugpp separately (optional, for yazi image preview)
738+
if [ -f /etc/yum.repos.d/home:justkidding.repo ]; then
739+
print_step "Installing ueberzugpp (optional)..."
740+
sudo dnf install -y ueberzugpp 2>/dev/null || {
741+
print_warning "ueberzugpp not available (yazi image preview disabled)"
742+
}
743+
fi
744+
696745
# Verify critical packages are installed
697746
print_step "Verifying critical packages..."
698747
local CRITICAL_PACKAGES=(

0 commit comments

Comments
 (0)