Instalar paquetes AUR en Archlinux

Logo de Archlinux

Neste post explicarei cómo instalar un paquete AUR (Arch User Repository ).

Estos paquetes son “extraoficiáis” polo que non están garantidos pola propia comunidade, mais a súa utilidade é a de cubrir necesidades que os paquetes oficiáis non cobren.

Preciso instalar make na su aversión 3.81 por temas de compatibilidade na compilación do Firefox OS, xa que Android usa esta versión de make, e en Archlinux actualmente ( Novembro do 2015 ) usan a versión 4.XX.

Atopalo paquete

O primeiro é procurar no repo o paquete que queremos, no meu caso sería:

https://aur.archlinux.org/packages/make-3.81/

Descargalo paquete

Na parte dereita verémolo menú:

opcións aur

Coas entradas:

Package Actions
    View PKGBUILD / View Changes
    Download snapshot
    Search wiki
    Flag package out-of-date
    Vote for this package
    Notify of new comments
    File Request

Copiámola url da opción “Download snapshot”: https://aur.archlinux.org/cgit/aur.git/snapshot/make-3.81.tar.gz

Creámolo directorio para traballar co paquete que descargaremos con curl:
mkdir -v AUR_BUILD
cd AUR_BUILD
curl -L -O https://aur.archlinux.org/cgit/aur.git/snapshot/make-3.81.tar.gz
Unha vez descargado o descomprimimos e accedemos ao directorio que nos crea o paquete:
tar -xvf make-3.81.tar.gz
cd make-3.81
É convinte revisar o código do “PKGBUILD” para evitar que fagan cambios indesexados no noso sistema:
less PKGBUILD
Debería amosarnos algo parecido a isto:
# $Id$
# Maintainer: Allan McRae <allan@archlinux.org>
# Contributor: judd <jvinet@zeroflux.org>

pkgname=make-3.81
pkgver=3.81
pkgrel=1
pkgdesc="GNU make utility to maintain groups of programs (3.81 version)"
arch=('i686' 'x86_64')
url="http://www.gnu.org/software/make"
license=('GPL')
depends=('glibc' 'sh')
install=$pkgname.install
source=(ftp://ftp.gnu.org/gnu/make/${pkgname}.tar.gz)
md5sums=('a4e9494ac6dc3f6b0c5ff75c5d52abba')

build() {
  cd ${srcdir}/${pkgname}
  ./configure --prefix=/usr --program-suffix=-$pkgver
  make
}

package() {
  cd ${srcdir}/${pkgname}
  make DESTDIR=${pkgdir} install-exec
}

Se ves todo ben, revisa o ficheiro “<nome_paquete>.install

less make-3.81.install
less nos debería amosar unha saída coma esta:
infodir=/usr/share/info
filelist=(make.info make.info-1 make.info-2)

post_install() {
  [ -x usr/bin/install-info ] || return 0
  for file in ${filelist[@]}; do
    install-info $infodir/$file.gz $infodir/dir 2> /dev/null
  done
}

post_upgrade() {
  post_install $1
}

pre_remove() {
  [ -x usr/bin/install-info ] || return 0
  for file in ${filelist[@]}; do
    install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
  done
}
Unha vez confirmado que os dóus arquivos non parecen dañinos, procederemos como usuario normal a executar:
makepkg -sri
Parámetro: Descripción:
-s, -syncdeps Instalar ás dependencias que faltan con pacman.
-r, -rmdeps Eliminalas dependencias instaladas tras construir o paquete correctamente.
-i, -install Instalalo paquete despóis de construilo correctamente.

Comenzará a compilar o paquete a descargalas dependencias necesarias, e logo nos pedirá o contrasinal para o sudo, para poder instalar o paquete no sistema.

Unha vez conclua se todo vai ben soe ser moi estable o proceso, a min nunca me rompeu ningunha dependencia, quedará instalado no noso sistema.

Ó podemos comprobar con:
$ make --version

GNU Make 4.1
Compilado para x86_64-unknown-linux-gnu
Copyright (C) 1988-2014 Free Software Foundation, Inc.
Licenza GPLv3+: GNU GPL versión 3 ou posterior <http://gnu.org/licenses/gpl.html>
Isto é software libre: pode modificalo e redistribuílo.
Non hai NINGUNHA GARANTÍA, ata onde o permita a lei.

No meu caso veremos que o make é máis recente sendo ó 4.1 que é o que está no meu sistema, agora nos toca crear un enlace brando a versión make antiga.

Igual que se ten que facer para usar python2 en lugar do 3.

Primeiro comprobamos se o actual make é un enlace ou un binario, no meu caso é un binario:
$ ls -l /usr/bin/make*
-rwxr-xr-x 1 root root 211824 Out  6  2014 /usr/bin/make
-rwxr-xr-x 1 root root 170168 Nov 12 12:21 /usr/bin/make-3.81
-rwxr-xr-x 1 root root   2564 Set  6 19:26 /usr/bin/makealias
-rwxr-xr-x 1 root root  44368 Nov  1 10:07 /usr/bin/makeconv
-rwxr-xr-x 1 root root  18992 Set  1 19:09 /usr/bin/makedb
-rwxr-xr-x 1 root root  43432 Ago 20  2014 /usr/bin/makehrtf
lrwxrwxrwx 1 root root      8 Out 21 23:45 /usr/bin/makeinfo -> texi2any
-rwxr-xr-x 1 root root  35480 Nov  6 11:21 /usr/bin/makekdewidgets
-rwxr-xr-x 1 root root  96813 Out  2 13:41 /usr/bin/makepkg
-rwxr-xr-x 1 root root   6352 Out  2 13:41 /usr/bin/makepkg-template
Agora movémolo make máis recente para darlle outro nome:
# mv -v /usr/bin/make /usr/bin/make_4.1_original
Creámolo enlace brando para que cada vez que se use make no sistema se use a vella versión do make:
# ln -sv /usr/bin/make-3.81 /usr/bin/make
Comprobamola versión de make que se nos executa ao executar make:
# make --version

GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for x86_64-unknown-linux-gnu

E xa está, con isto temolo noso vello make e podremos continuar coa compilación de Firefox OS, Android ou Cyanogenmod.