Skip to content

Instantly share code, notes, and snippets.

@alextakitani
Created April 16, 2025 13:53
Show Gist options
  • Save alextakitani/9a90464cb6169030e70eaf916ae4a473 to your computer and use it in GitHub Desktop.
Save alextakitani/9a90464cb6169030e70eaf916ae4a473 to your computer and use it in GitHub Desktop.
Install and Update Windsurf Fedora 42
#!/usr/bin/env bash
# Script de instalação/atualização do Windsurf Editor (anteriormente Codeium) para Fedora
# Criado para uso com Fedora 42+
# Versão: 1.0
set -e
# Cores para mensagens
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
msg() { echo -e "${GREEN}==> $1${NC}"; }
warn() { echo -e "${YELLOW}WARN: $1${NC}"; }
err() { echo -e "${RED}ERRO: $1${NC}"; exit 1; }
# Verifica se o script está sendo executado como root
if [ "$EUID" -ne 0 ]; then
err "Execute este script como root: sudo $0"
fi
# Verificar dependências
msg "Verificando dependências necessárias..."
for dep in curl dpkg gpg; do
if ! command -v $dep &> /dev/null; then
msg "Instalando $dep..."
dnf install -y $dep || err "Falha ao instalar $dep"
fi
done
# Criar diretório para configurações se não existir
mkdir -p /etc/apt/keyrings/
# Adicionar/atualizar a chave GPG
msg "Adicionando chave GPG do repositório Windsurf..."
curl -fsSL "https://windsurf-stable.codeiumdata.com/wVxQEIWkwPUEAGf3/windsurf.gpg" | \
gpg --dearmor -o /etc/apt/keyrings/windsurf-stable-archive-keyring.gpg || \
err "Falha ao adicionar chave GPG"
# Criar diretório temporário
TEMP_DIR=$(mktemp -d)
cd "$TEMP_DIR"
# Baixar informações do pacote mais recente
msg "Obtendo informações sobre a versão mais recente..."
if ! curl -s https://windsurf-stable.codeiumdata.com/wVxQEIWkwPUEAGf3/apt/dists/stable/main/binary-amd64/Packages > Packages; then
err "Falha ao baixar informações do pacote"
fi
# Extrair informações do pacote
PACKAGE_URL=$(grep -A 20 "Package: windsurf" Packages | grep "Filename:" | head -1 | awk '{print $2}')
VERSION=$(grep -A 20 "Package: windsurf" Packages | grep "Version:" | head -1 | awk '{print $2}')
if [ -z "$PACKAGE_URL" ] || [ -z "$VERSION" ]; then
err "Erro: Não foi possível encontrar informações sobre o pacote Windsurf"
fi
# Verificar se já está instalado e na versão atual
INSTALLED_VERSION=""
if [ -f "/opt/windsurf/version" ]; then
INSTALLED_VERSION=$(cat /opt/windsurf/version)
fi
if [ -n "$INSTALLED_VERSION" ] && [ "$INSTALLED_VERSION" == "$VERSION" ]; then
msg "Windsurf Editor versão $VERSION já está instalado (atualizado)"
cd / && rm -rf "$TEMP_DIR"
exit 0
fi
if [ -n "$INSTALLED_VERSION" ]; then
msg "Atualizando Windsurf Editor de $INSTALLED_VERSION para $VERSION..."
else
msg "Instalando Windsurf Editor versão $VERSION..."
fi
# Baixar o pacote .deb
FULL_URL="https://windsurf-stable.codeiumdata.com/wVxQEIWkwPUEAGf3/apt/$PACKAGE_URL"
DEB_FILE="${PACKAGE_URL##*/}"
msg "Baixando $FULL_URL..."
if ! curl -fsSL "$FULL_URL" -o "$DEB_FILE"; then
err "Falha ao baixar o pacote Windsurf"
fi
# Extrair o pacote .deb
msg "Extraindo o pacote..."
mkdir -p windsurf-extract
dpkg-deb -x "$DEB_FILE" windsurf-extract || err "Falha ao extrair o pacote"
# Parar o Windsurf se estiver rodando
if pgrep -f windsurf &>/dev/null; then
msg "Parando instância do Windsurf em execução..."
pkill -f windsurf || true
sleep 1
fi
# Instalar/atualizar o programa
msg "Instalando arquivos..."
mkdir -p /opt/windsurf
rm -rf /opt/windsurf/* # Limpar instalação anterior
cp -r windsurf-extract/usr/share/windsurf/* /opt/windsurf/ || err "Falha ao copiar arquivos"
# Salvar a versão
echo "$VERSION" > /opt/windsurf/version
# Criar links simbólicos
msg "Configurando links simbólicos..."
ln -sf /opt/windsurf/windsurf /usr/local/bin/windsurf
# Copiar o arquivo .desktop para integração com o sistema
msg "Configurando integração com o desktop..."
mkdir -p /usr/share/applications/
cp windsurf-extract/usr/share/applications/windsurf.desktop /usr/share/applications/ || warn "Falha ao copiar arquivo .desktop"
# Configurar permissões
msg "Configurando permissões..."
chmod 755 /opt/windsurf/windsurf
chmod 755 /usr/local/bin/windsurf
# Limpar
cd / && rm -rf "$TEMP_DIR"
msg "Windsurf Editor versão $VERSION instalado com sucesso!"
msg "Execute 'windsurf' no terminal ou procure 'Windsurf' no menu de aplicativos."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment