Durante algum tempo me aventurei em compilar os pacotes do KDE para o Slackware64. Não chegava a ser um grande trabalho pois a maior parte do serviço já estava feito nos SlackBuilds oficiais. Mas na ocasião Eric Hameleers (AlienBOB) passo a manter uma atualização quase em sincronismo com o lançamento da nova versão do KDE, e com o Alien não dava para competir. Como resultado abandonei a compilação dos pacotes e passei a utilizar o trabalho de AlienBOB.

Perdi um pouco da diversão, confesso, mas o importante estava assegurado, poderia continuar utilizando a última versão do KDE, tão logo saísse do forno. Até então não me decepcionei com a escolha.

Os pacotes do AlienBOB são anunciados em seu site Alien Pastures, geralmente poucos dias após o lançamento das fontes pelo site oficial. O problema é que estes são construídos, geralmente, sobre a versão current do Slackware. Pessoalmente não vejo isto como um problema, uma vez que o current tem se mostrado muito estável nos últimos anos (o uso a pelo menos uns 5 anos em meu notebook de trabalho). A menos de alguns probleminhas pequenos não tenho nada a reclamar (o último incômodo que percebi foi a falta de um --login na linha de comando do konsole).

O artigo que lança a compilação do KDE 4.10.0 para o Slackware64-current foi o “KDE SC 4.10.0 released”, do dia 8 de fevereiro de 2013, apenas dois dias depois do lançamento do 4.10.0. Em 10 de fevereiro o AlienBOB lançou o segundo build dos pacotes kde-workspace e nepomuk-core, “Two fix-packages for KDE SC 4.10.0”, referentes a aplicação de um patch aos pacotes.

Instalando

Os pacotes podem ser baixados dos espelhos:

Willysr (Willy Sudiarto Raharjo) é um grande colaborador do AlienBOB, até onde pude entender. Recentemente adicionei seu site a minha lista de links para acompanhar, assim espero conhecê-lo melhor.

No espelho tem um README.txt bem claro, com os passo para a instalação dos pacotes que em linhas gerais se resume em executar os comando abaixo, com a máquina em modo 3 e modo texto:

Baixar os pacotes:

rsync -av rsync://alien.slackbook.org/alien/ktown/14.0/4.10.0 .
[prompt]cd 4.10.0

Instalar os pacotes 32bits:

upgradepkg --reinstall --install-new x86/deps/*.t?z
[prompt]upgradepkg --reinstall --install-new x86/kde/*.t?z
[prompt]removepkg kdegames
[prompt]removepkg kdemultimedia
[prompt]removepkg ksecrets
[prompt]removepkg printer-applet

ou em 64Bits:

upgradepkg --reinstall --install-new x86_64/deps/*.t?z
[prompt]upgradepkg --reinstall --install-new x86_64/kde/*.t?z
[prompt]removepkg kdegames
[prompt]removepkg kdemultimedia
[prompt]removepkg ksecrets
[prompt]removepkg printer-applet

Por fim, atualizar os pacotes de linguagem e os novos arquivos de configuração em /etc.

upgradepkg x86/kdei/*.t?z

ou

upgradepkg x86_64/kdei/*.t?z

e por fim

slackpkg new-config

Automatizando a Instalação

Para deixar alguma contribuição, fiz um pequeno script para automatizar todo o processo para os mais acomodados ou menos experientes.

O script baixa os pacotes da arquitetura do Slackware que estiver usando (32Bits ou 64Bits) e instala, se executado em modo 3. Ele ainda permite manter uma cópia dos pacotes, fontes e scripts de construção localmente.

Chamei o script de kde_rsync, pois inicialmente a ideia era apenas fazer o download dos pacotes. Fique a vontade para renomeá-lo como desejar.

#!/bin/bash
#
# by Rudson R. Alves
#
VERSION=${VERSION:='4.10.0'}
SVERSION=${SVERSION:=`cat /etc/slackware-version | awk '{ print $2 }'`}
KDE_DIR=${KDE_DIR:='/home/ftp/linux/kde46'}
SRC_DIR="$KDE_DIR/source"
URL_BASE=${URL:="taper.alienbase.nl/mirrors/alien-kde"}
URL="$URL_BASE/$SVERSION"

ACTION="fast"
VERBOSE=false
GETSRC=false

UPGRADE="upgradepkg"
INSTALL="installpkg"
REMOVE="removepkg"

if [ ! -e $KDE_DIR ]; then
  mkdir -p $KDE_DIR
fi

if [ ! -e $SCR_DIR ]; then
  mkdir -p $SRC_DIR
fi

# Automatically determine the architecture we're building on:
ARCH=$( uname -m )
case "$ARCH" in
  i?86|x86)
    ARCH=x86
    NOARCH=x86_64
  ;;
  x86_64)
    ARCH=x86_64
    NOARCH=x86
  ;;
  *)
    exit 1
    ;;
esac


function last_kde_version {
  lynx --dump http://$URL | awk '/^ +[0-9]+.*$/ { print $2 }' | tail -1 | sed 's/^.*\/\([0-9]\.[0-9]\+\.[0-9]\+\)\/$/\1/'
}


function fast_rsync {
  echo -e "\nGet Packages to $ARCH:"
  if $VERBOSE; then
    echo "rsync -av --delete --progress --exclude $NOARCH rsync://$URL/$VERSION/ $KDE_DIR/$VERSION/"
  fi

  cd $VERSION
  rsync -av --delete --progress --exclude $NOARCH rsync://$URL/$VERSION/ $KDE_DIR/$VERSION/
  cd ..

  if $GETSRC; then
    get_source
  fi
}


function all_rsync {
 echo -e "\nGet Packages to $ARCH:"
  if $VERBOSE; then
    echo "rsync -av --delete --progress rsync://$URL/$VERSION/ $KDE_DIR/$VERSION/"
  fi

  rsync -av --delete --progress rsync://$URL/$VERSION/ $KDE_DIR/$VERSION/

  get_source
}


function get_source {
  if [ ! -e $SRC_DIR/ ]; then
    mkdir -p $SRC_DIR
  fi

  echo -e "\nGet Source files:"
  if $VERBOSE; then
    echo "rsync -av --delete --progress rsync://$URL_BASE/source/$VERSION/ $SRC_DIR/$VERSION/"
  fi
  rsync -av --delete --progress rsync://$URL_BASE/source/$VERSION/ $SRC_DIR/$VERSION/
}

function help {
  echo "Use:"
  echo "  `basename $0` [option]"
  echo "   Where option is:"
  echo "   -f|--fast  to fast download in $ARCH packages, without source files"
  echo "   -a|--all   to download all files and arquiterures"
  echo "   -l|--last  get kde build last version"
  echo "   -d|--destiny    set a source destiny"
  echo "   -D|--debug enable debug mode"
  echo "   -i|--install install packages"
  echo "   -u|--upgrade  to small upgrades"
  echo "   -s|--source   to down sources in fast download"
  echo "   -h|--help  to show help"
  exit 0
}


function print_head {
  echo ""
  echo "KDE rsync script"
  echo ""
  echo "KDE VERSION:   $VERSION"
  echo "repo DIR:      $KDE_DIR"
  echo "repo URL:      $URL"
  echo "System Arch:   $ARCH"
  echo "Slack Version: $SVERSION"
  echo ""
}


function install_kde {
  fast_rsync
  if ! check_mode; then 
    cd $CWD
    exit 1
  fi

  cd $VERSION

  echo

  if $VERBOSE; then
    echo "$UPGRADE --reinstall --install-new $ARCH/deps/*.t?z"
  fi
  $UPGRADE --reinstall --install-new $ARCH/deps/*.t?z 

  if $VERBOSE; then
    echo "$UPGRADE --reinstall --install-new $ARCH/kde/*.t?z"
  fi
  $UPGRADE --reinstall --install-new $ARCH/kde/*.t?z

  remove_old_pkgs

  slackpkg new-config
  cd ..
}


function upgrade_kde {
  fast_rsync
  if ! check_mode; then 
    cd $CWD
    exit 1
  fi

  cd $VERSION

  echo

  if $VERBOSE; then
    echo "$UPGRADE --install-new $ARCH/deps/*.t?z"
  fi
  $UPGRADE --install-new $ARCH/deps/*.t?z 

  if $VERBOSE; then
    echo "$UPGRADE --install-new $ARCH/kde/*.t?z"
  fi
  $UPGRADE --install-new $ARCH/kde/*.t?z

  remove_old_pkgs

  slackpkg new-config
  cd ..
}


function remove_old_pkgs {
  if [ $VERSION != "4.9.5" ]; then
    if $VERBOSE; then
      echo "$REMOVE kdegames"
    fi
    $REMOVE kdegames 2>/dev/null

    if $VERBOSE; then
      echo "$REMOVE printer-applet"
    fi
    $REMOVE printer-applet 2>/dev/null
  fi

  if $VERBOSE; then
    echo "$REMOVE kdemultimedia"
  fi
  $REMOVE kdemultimedia 2>/dev/null

  if $VERBOSE; then
    echo "$REMOVE ksecrets"
  fi
  $REMOVE ksecrets 2>/dev/null

  if $VERBOSE; then
    echo "$REMOVE printer-applet"
  fi
  $REMOVE printer-applet 2>/dev/null

  if $VERBOSE; then
    echo "$UPGRADE $ARCH/kdei/*.t?z"
  fi
  $UPGRADE $ARCH/kdei/*.t?z

  if $VERBOSE; then
    echo "slackpkg new-config"
  fi
}


function set_parameters {
  while [ "$1" ]; do
    case $1 in
      "-l"|"--last")
        echo "Get last kde build version..."
        VERSION=`last_kde_version`
      ;;
      "-f"|"--fast")
        echo "Fast RSync to $ARCH Binaries..."
        ACTION="fast"
      ;;
      "-a"|"--all")
        echo "RSync All..."
        ACTION="all"
      ;;
      "-i"|"--install")
        echo "Install..."
        ACTION="install"
      ;;
      "-u"|"--upgrade")
        echo "Upgrade..."
        ACTION="upgrade"
      ;;
      "-v"|"--verbose")
        echo "Verbose On..."
        VERBOSE=true
      ;;
      "-d"|"--destiny")
        echo "Set destiny..."
        KDE_DIR=$2
        shift
      ;;
      "-D"|"--debug")
        set -x
      ;;
      "-s"|"--source")
        echo "Down source..."
        GETSRC=true
      ;;
      *)
        help
        cd $CWD
        exit 0
      ;;
    esac

    shift
  done
}


function check_mode {
  # Check root user
  echo "Check root user..." 
  if [ "$USER" != "root" ]; then
    echo "\nERROR: Use this application as root user only!\n"
    return 1
  fi

  # Check single-user mode
  echo "Check single-user mode..."
  LEVEL=(`runlevel`)
  if [ ${LEVEL[1]} -eq 4 ]; then
    echo -e "\nERROR: Put yout machine in mode 1 or 3:\ntelinit 1/3\n"
    return 1
  fi
  return 0
}


# Start Program
CWD=$PWD
cd $KDE_DIR/

# set input
set_parameters "$@"

print_head

if [ -z $VERSION ]; then
  echo "Version Error..."
  exit 1
elif [ ! -e $VERSION ]; then
  if $VERBOSE; then
    echo "Create $VERSION directory..."
  fi
  mkdir $VERSION
fi

if [ $ACTION == "fast" ]; then
  fast_rsync
elif [ $ACTION == "all" ]; then
  all_rsync
elif [ $ACTION == "install" ]; then
  install_pkg
elif [ $ACTION == "upgrade" ]; then
  upgrade_kde
fi

cd $CWD

O script tem um help simples com as suas opções:

  • -f | --fast – download rápido, somente os pacotes de sua arquitetura;
  • -a | --all – para baixar tudo;
  • -l | --last – para baixar a última versão do KDE compilada;
  • -d | --destiny – para mudar o destino de download dos pacotes;
  • -D | --debug – habilita o modo debug do bash
  • -i | --install – para instalar os pacotes;
  • -u | --upgrade – para atualizar uma instalação;
  • -s | --source – para baixar as fontes no modo --fast
  • -h | --help – para help

A opção de -i, instalação, primeiro executa um download rápido (--fast) e depois instala os pacotes, se o sistema estiver no modo 3. A opção -d simplesmente altera o valor da variável KDE_DIR, no script (veja a linha 244). Pode ser uma boa ideia alterar isto definitivamente no próprio scripts, na linha 7, para evitar surpresas.

A opção -u, upgrade, deve ser usada somente em atualizações pequenas, como correções de bug apresentadas no artigo “Two fix-packages for KDE SC 4.10.0”, citado acima.

As linhas abaixo apresentam dois exemplos típicos de uso do script:

Com o sistema em modo 3, baixa e instala a última versão do KDE do espelho do AlienBOB:

./kde_rsync --last --install

Baixar todos os pacotes e fontes:

./kde_rsync --all