Pacman ademas de ser un archi-conocido juego de los 80`s es el gestor de paquetes de nuestro Arch Linux.
Conserva el espíritu de sistemas como yum o apt-get, sin embargo podemos hacerle algunos tweaks para que mejore su rendimiento al momento de actualizar o descargar paquetes para su instalación.
Para hablarnos como amigos con pacman, necesitamos conocer algunas cosas como las siguientes:
Archivos de configuracion
Archivo de configuracion de pacman (repositorios y configuraciones varias)
/etc/pacman.conf
Directorio de cache: /var/cache/pacman/pkg/
Archivo de Mirrors. Todos los espejos donde se descargan paquetes.
/etc/pacman.d/mirrorlist
Comandos y uso
Sincroniza la base de datos con los repositorios.
pacman -Sy
Actualiza el sistema completo.
pacman -Su
Instala un paquete.
pacman -S Paquete
Desinstala un paquete.
pacman -R paquete
Desinstala un paquete junto a las dependencias no utilizadas por otros paquetes.
pacman -Rs paquete
Permite buscar a un paquete específico
pacman -Ss Paquete
Descarga el paquete pero no lo instala
pacman -Sw paquete
Muestra información sobre un paquete no instalado
pacman -Si paquete
Muestra información sobre un paquete ya instalado
pacman -Qi paquete
Instala solamente las dependencias del paquete.
pacman -Se paquete
Muestra todos los archivos pertenecientes al paquete.
pacman -Ql Paquete
Muestra los paquetes del sistema que pueden ser actualizados, pero no los instala.
pacman -Qu
Muestra una lista de todos los paquetes instalados en el sistema.
pacman -Q
Muestra a cual paquete pertenece un archivo en especial.
pacman -Qo /ruta/del/archivo
Borra todos los paquetes antiguos guardados en la caché de pacman.
pacman -Sc
Borra todos los paquetes guardados en la cache de pacman ubicado en /var/cache/pacman/pkg.
pacman -Scc
Instala un paquete guardado en una carpeta local.
pacman -A
Ahora bien, como podemos mejorar el rendimiento:
Para ello podemos usar el siguiente scrip:
#!/bin/bash
#
# pacman-cage
#
# Copyright (c) 2002-2006 by Andrew Rose
# I used Judds pacman-optimise as a framework.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
# USA.
#
myver='2.9.8'
dbroot="/var/lib/pacman"
pacmandb="/var/lib/pacman.db"
usage() {
echo "pacman-cage $myver"
echo "usage: $0 [pacman_db_root]"
echo
echo "pacman-cage creates a loopbacked filesystem in a contigious file."
echo "This will give better response times when using pacman"
echo
}
die() {
echo "pacman-cage: $*" >&2
exit 1
}
die_r() {
rm -f /tmp/pacman.lck
die $*
}
if [ "$1" != "" ]; then
if [ "$1" = "-h" -o "$1" = "--help" ]; then
usage
exit 0
fi
dbroot=$1
fi
if [ "`id -u`" != 0 ]; then
die "You must be root to cage the database"
fi
# make sure pacman isn't running
if [ -f /tmp/pacman.lck ]; then
die "Pacman lockfile was found. Cannot run while pacman is running."
fi
# make sure pacman.db hasnt already been made
if [ -f $pacmandb ]; then
die "$pacmandb already exists!."
fi
if [ ! -d $dbroot ]; then
die "$dbroot does not exist or is not a directory"
fi
# don't let pacman run while we do this
touch /tmp/pacman.lck
# step 1: sum the old db
echo "==> md5sum'ing the old database..."
find $dbroot -type f | sort | xargs md5sum >/tmp/pacsums.old
echo "==> creating pacman.db loopback file..."
dd if=/dev/zero of=$pacmandb bs=1M count=150 > /dev/null 2>&1
echo "==> creating ext2 -O dir_index -b 1024 -m 0 on $pacmandb..."
yes | mkfs.ext2 -O dir_index -b 1024 -m 0 $pacmandb > /dev/null 2>&1
echo "==> creating temporary mount point /mnt/tmp-pacman.."
mkdir /mnt/tmp-pacman
echo "==> mounting pacman.db to temporary mount point..."
mount -o loop $pacmandb /mnt/tmp-pacman
echo "==> copying pacman database to temporary mount point..."
cp -a /var/lib/pacman/. /mnt/tmp-pacman
echo "==> unmounting temporary mount point..."
umount /mnt/tmp-pacman
echo "==> removing temporary mount point..."
rmdir /mnt/tmp-pacman
echo "==> moving old /var/lib/pacman to /var/lib/pacman.bak..."
mv /var/lib/pacman /var/lib/pacman.bak
echo "==> createing new pacman db mount point @ $dbroot..."
mkdir $dbroot
echo "==> Mounting new pacman db..."
mount -o loop $pacmandb $dbroot
echo "==> md5sum'ing the new database..."
find $dbroot -type f | sort | xargs md5sum >/tmp/pacsums.new
echo "==> checking integrity..."
diff /tmp/pacsums.old /tmp/pacsums.new >/dev/null 2>&1
if [ $? -ne 0 ]; then
# failed, move the old one back into place
umount $dbroot
rm $pacmandb
mv $dbroot.bak $dbroot
die_r "integrity check FAILED, reverting to old database"
fi
echo "==> Updating /etc/fstab to reflect changes..."
echo "$pacmandb $dbroot ext2 loop,defaults 0 0" >> /etc/fstab
rm -f /tmp/pacman.lck /tmp/pacsums.old /tmp/pacsums.new
echo
echo "Finished. Your pacman database has been caged!. May the speedy pacman be with you."
echo
exit 0
Para hacer uso del scrip, todo lo que tenes que hacer es abrir tu editor de textos, nano, pico, joe, vi o tu preferido en X, pegar el texto anterior, salvarlo en tu /home, darle permisos de ejecución con chmod a+x y ejecutarlo con ./nombre_del_script.
Cuando termine la ejecución del script, actualiza o instalá algo y contame si no mejoro? Je je je


