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:


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.

avatar
6 Comment threads
5 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
7 Comment authors
el_MetalfrontierTete PlazaEnrique Bravoalunado Recent comment authors

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

  Subscribe  
más nuevo más antiguo más votado
Notificarme de
OdnetninI
Suscriptor
OdnetninI

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

Enrique Bravo
Lector
Enrique Bravo

Muchas gracias, ya está corregido

trackback

[…] Visitar la fuente original […]

Yoyo Fernández
Lector

Llevo usando este truco desde aquellos tiempos que lo dejaste en el otro lado. Buen tutto tete…

alunado
Suscriptor

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!!

frontier
Suscriptor
frontier

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…

Enrique Bravo
Lector
Enrique Bravo

Entendiste bien, en los repositorios de Manjaro hay paquetes binarios. La compilación se utiliza con paquetes de AUR (y no con todos).

frontier
Suscriptor
frontier

Muchas gracias por la respuesta, Enrique

el_Metal
Lector
el_Metal

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.