Buenas. Como lo prometido es deuda, a continuación les entrego el post que pondrá a trabajar los cores de sus máquinas.
¿Qué es MakePKG?
MakePKG es un script que automatiza la construcción de paquetes. Estos sirven al gestor de paquetes Pacman, que los instala. Es decir, así como, por ejemplo, apt-get o aptitude instalan paquetes «.deb», Pacman instala paquetes «.pkg.tar.xz». MakePKG es aquel script que usamos para que mediante un PKGBUILD generemos un «.pkg.tar.xz» para luego instalarlo con Pacman.
¿Para qué acelerar el funcionamiento de MakePKG?
Bien, ahora uno se preguntaría, ¿para qué hacer lo que describe el post? La respuesta es sencilla. Ya sea desde AUR, CCR, KCP, o similares, o desde ABS, lo que manejamos son PKGBUILDs. Usualmente, en vez de utilizar directamente MakePKG, interactuamos mediante Yaourt, Pacaur, etc, por lo que, al acelerar la velocidad de MakePKG, aceleraremos la velocidad con la que instalamos software desde esos repositorios.
Acelerando makepkg
Para lograrlo, lo que vamos a hacer es que MakePKG utilice todos los núcleos de nuestro procesador para las tareas que realiza, entonces:
1) Editamos el archivo makepkg.conf:
sudo nano /etc/makepkg.conf
2) Especificamos que MakePKG use más threads para compilar
MAKEFLAGS="-j< Número de núcleos (con Hyper Threading <HT> en caso de tenerlo) + 1 >"
En mi caso hice las pruebas sobre un FX-8320 el cual posee 8 núcleos, con lo que MAKEFLAGS quedaría así:
MAKEFLAGS="-j9"
3) Especificamos que MakePKG use más threads para la compresión
Ahora buscamos la linea correspondiente a la compresión en .xz y le agregamos el parámetro “–threads=<Numero>” siguiendo exactamente la misma lógica del paso anterior, en mi caso queda así:
COMPRESSXZ=(xz -c -z - --threads=9)
4) Finalmente guardamos el archivo tocando Ctrl + x. Nos preguntará si deseamos guardar el archivo, a lo que le decimos que si, y con el mismo nombre que tenia al abrirlo.
Resultados finales
A continuación les mostraré un video comparativo entre ambas configuraciones, pero antes voy a explicar el contexto en el que se realizó dicho video.
Yo poseo un procesador i3-5005U en mi notebook, el cual dispone de 2 núcleos + HyperThreading. Si bien la diferencia entre configurar el MakePKG para que use todos los núcleos, vs la configuración por defecto, que usa un solo núcleo, era apreciable, no era abismal, por lo que preferí hacerlo sobre la PC de sobremesa más «gamer» de mi hermano. Tiene una pequeña partición de GNU/Linux para aquellos momentos en que revienta el Windows y se necesita usar la máquina sí o sí, o recuperarla. Mi hermano es un usuario «normal», por lo que no podía instalarle un Archlinux. Está corriendo un Ubuntu. Entonces, lo que hice fue instalar Docker y me armé un pequeño dockerfile de un Archlinux, en el cual compilé SimpleScreenRecorder mediante MakePKG. Me evité así varias capas de virtualización y aproveché el procesador mejor. Aquí tenéis el resultado:
[archiveorg MakePKGFuncionando width=640 height=480 frameborder=0 webkitallowfullscreen=true mozallowfullscreen=true]
La imagen de cabecera se llama Makepkg-Not-War-Wallpaper-Series, y se licencia bajo Attribution-ShareAlike 3.0 Unported. Incluye el logotipo de Arch Linux, que disfruta de la licencia CC-BY-SA, cortesía de Ubuntu Project, especificada en este sitio web.
La canción se llama «Aggressor» y ha sido recogida de Free Stock Music. Su licencia permite ser usada sin ninguna limitación y puede verse aquí.
El vídeo ha sido grabado por el autor y es su propietario. Ha licenciado el vídeo con la misma licencia que ofrece el blog, Creative Commons Attribution-ShareAlike 4.0 International License. Esta licencia viene a decir que puedes usar el archivo para cualquier cometido siempre que indiques quién es su autor y aportes el nombre de esta licencia, para que las personas que lo vean sepan cómo compartirlo con otras correctamente.
LOL…
Llevo bastante tiempo usando pacman y no sabía donde se podían configurar y modificar los parametros de MakePKG.
Muchas Gracias 🙂
PD: Le falta una barra a:
sudo nano /etc makepkg.conf
sería
sudo nano /etc/makepkg.conf
Llevo usando este truco desde aquellos tiempos que lo dejaste en el otro lado. Buen tutto tete…
che, te pregunto desde mi «ignorancy»…
Esto de poner todos los nucleos en la config a laburar no es bueno si queres hacer mientras tanto alguna otra tarea que requiera un CPU considerable no?
Digo, es una opción dedicada totalmente al momento de compilacion no?
P.D.: buena info, pero como tengo un mononucleo AMD atholn.. pues lo usare dios sabra cuando!! jajaja!!
Soy usuario de Linux desde hace unos años pero solo he usado sistemas basados en Debian y paqutería .deb, pero ahora estoy pensando en cambiar a a Manjaro, y al leer el artículo me ha surgido unas dudas:
Según lo que he entendido ¿makepakg solo sirve si compilamos paquetes desde el código fuente, no?
Los paquetes de los repositorios oficiales de una distro basada en Arch como Majaro supongo que solo tendrán paquetes binarios, no?
Si es así, y solo instalamos software mediante pacman de esosrepositorios oficiales, no tendría porque utilizarse makepkg, no?
Perdón por estas preguntas de novato, pero al leer este artículo he intentado encontrar las respuestas a estas preguntas en la wiki de Arch y no me he quedado seguro de como funcionaba…
Hola,buen tuto!! Yo también poseo un ocho núcleos y la duda que me surge es, en vez de los ocho podría poner, por ejemplo la mitad o seis? Si es así, esto sería: MAKEFLAGS=»-j5″ y COMPRESSXZ=(xz -c -z – –threads=5) para la mitad? Gracias.