Archivo

Artículos etiquetados y‘Arch Linux’

Archero! optimiza pacman

Julio 18, 2009 msdark 4 comentarios

Pacman, es el poderoso gestor de paquetes que utiliza ArchLinux.. y hoy nevegando por los foros de archlinux.org me encontre con un script para optimizar la base de datos de pacman.

Ya existe un “optimizador” oficial, el script pacman-optimize, pero este script lo supera bastante.

Puedes ver el post oficial aqui.
Y utilizar el script:
#!/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

gracias a ody por este trabajo

Saludos

Categorías:Arch Linux, Tips Etiquetas:, ,

Finit-arc: Acelerando el inicio de Arch!!!

Abril 10, 2009 msdark 5 comentarios

Siempre me ha gustado que mi S.O sea veloz en todo y obviamente eso incluye el proceso de inicio (BootUp)…

Con Archlinux se puede mejorar bastante esa velocidad, arreglando un poco el archivo /etc/rc.sysinit, los tipicos consejos sobre Udev, etc, etc…

Pero con este post del foro oficial de ArchLinux esa velocidad si que se consigue…

Finit-arc es una reimplementacion de fast-init hecho para la eeepc, puedes encontrar ese paquete en AUR

Para instalarlo:

 $ yaourt -S finit-arc

Y ahora viene el tunning del sistema!!

Primero haz un backup de tu /etc/rc.sysinit y luego crea uno nuevo con el siguiente texto
#!/bin/bash
#
# /etc/rc.sysinit
#

. /etc/rc.conf
. /etc/rc.d/functions

echo " "
printhl "Arch Linux - Speedup boot"
printsep

#**************************** WARNING ******************************
# If you're using initramfs for your kernel, uncomment steps 5 and 17
# To improve boot speed it's recommendend to make a static kernel
# without modules and without initramfs.
#
# MAKE STEP 2
# Type in a term from root: ls -l /dev | grep sda
# you'll receive the list of /dev/sda devices
# make your /dev/sda devices in step 2 like the example
#*******************************************************************

# STEP 1 - mount /proc, /sys and our RAM /dev
/bin/mount -n -t ramfs none /dev
/bin/mount -n -t proc none /proc
/bin/mount -n -t sysfs none /sys

# STEP 2 - make static sda nodes for start udevadm --settle in background
/bin/mknod /dev/sda b 8 0
/bin/mknod /dev/sda1 b 8 1
/bin/mknod /dev/sda2 b 8 2
/bin/mknod /dev/sda3 b 8 3
/bin/mknod /dev/sda4 b 8 4
#...5...6..etc..(from your fdisk -l)

# STEP 3 - copy static device nodes to /dev
/bin/cp -a /lib/udev/devices/* /dev/

# STEP 4 - enable rtc access
/sbin/modprobe rtc-cmos >/dev/null 2>&1
if [ -n "$RTC_MAJOR" ]; then
/bin/mkdir /dev/misc/
/bin/mknod /dev/misc/rtc0 c $RTC_MAJOR 0
/bin/ln -s /dev/misc/rtc0 /dev/rtc
fi

# STEP 5 - Load modules from the MODULES array defined in rc.conf
#if ! [ "$load_modules" = "off" ]; then
# if [ -f /proc/modules ]; then
# stat_busy "Loading Modules"
# for mod in "${MODULES[@]}"; do
# if [ "$mod" = "${mod#!}" ]; then
# /sbin/modprobe $mod
# fi
# done
# stat_done
# fi
# if [ -d /proc/acpi ]; then
# stat_busy "Loading standard ACPI modules"
# ACPI_MODULES="ac battery button fan processor thermal"
# k="$(echo $BLACKLIST ${MOD_BLACKLIST[@]} | /bin/sed 's|-|_|g')"
# j="$(echo ${MODULES[@]} | /bin/sed 's|-|_|g')"
# #add disabled MODULES (!) to blacklist - much requested feature
# for m in ${j}; do
# [ "$m" != "${m#!}" ] && k="${k} ${m#!}"
# done
# # add disablemodules= from commandline to blacklist
# k="${k} $(echo ${disablemodules} | /bin/sed 's|-|_|g' | /bin/sed 's|,| |g')"
# for n in ${ACPI_MODULES}; do
# if ! echo ${k} | /bin/grep "\" 2>&1 >/dev/null; then
# /sbin/modprobe $n > /dev/null 2>&1
# fi
# done
# stat_done
# fi
#fi

# STEP 6 - set hardware clock for fs check
{
HWCLOCK_PARAMS="--hctosys"
if [ "$HARDWARECLOCK" = "UTC" ]; then
HWCLOCK_PARAMS="$HWCLOCK_PARAMS --utc"
else
HWCLOCK_PARAMS="$HWCLOCK_PARAMS --localtime"
fi
if [ "$USEDIRECTISA" = "yes" -o "$USEDIRECTISA" = "YES" ]; then
HWCLOCK_PARAMS="$HWCLOCK_PARAMS --directisa"
fi
if [ -f /etc/localtime ]; then
/sbin/hwclock $HWCLOCK_PARAMS --noadjfile
fi
} &

echo > /proc/sys/kernel/hotplug

# STEP 7 - start udevadm trigger and udevd in background
{
if [ -x /sbin/udevadm -a -d /sys/block ]; then
stat_busy "Starting UDev Daemon"
/sbin/udevd --daemon &
/sbin/udevadm trigger &
stat_done
else
status "Using static /dev filesystem" true
fi
} &

# STEP 8 - start udevadm settle in background
/sbin/udevadm settle &

# STEP 9 - make lo interface
{
if [ -d /sys/class/net/lo ]; then
stat_busy "Bringing up loopback interface"
/sbin/ifconfig lo 127.0.0.1 up
if [ $? -ne 0 ]; then
stat_fail
else
stat_done
fi
fi
} &

# STEP 10 - mounting root read-only
status "Mounting Root Read-only" /bin/mount -n -o remount,ro / &

# STEP 11 - filesystem check
FORCEFSCK=
[ -f /forcefsck ] && FORCEFSCK="-- -f"
NETFS="nonfs,nonfs4,nosmbfs,nocifs,nocodafs,noncpfs,nosysfs,noshfs,nofuse,nofuseblk"
fsck_reboot() {
echo "Automatic reboot in progress..."
/bin/umount -a
/bin/mount -n -o remount,ro /
/sbin/reboot -f
exit 0
}
if [ -x /sbin/fsck ]; then
stat_busy "Checking Filesystems"
FSCK_OUT=/dev/stdout
FSCK_ERR=/dev/null
/sbin/fsck -A -T -C -a -t $NETFS $FORCEFSCK >$FSCK_OUT 2>$FSCK_ERR
fsckret=$?
if [ ${fsckret} -gt 1 ]; then
stat_fail
fi
if [ $((${fsckret}&2)) -eq 2 ]; then
echo
echo "********************** REBOOT REQUIRED *********************"
echo "* *"
echo "* The system will be rebooted automatically in 15 seconds. *"
echo "* *"
echo "************************************************************"
echo
/bin/sleep 15
fsck_reboot
fi
if [ ${fsckret} -gt 1 -a ${fsckret} -ne 32 ]; then
echo
echo "***************** FILESYSTEM CHECK FAILED ****************"
echo "* *"
echo "* Please repair manually and reboot. Note that the root *"
echo "* file system is currently mounted read-only. To remount *"
echo "* it read-write type: mount -n -o remount,rw / *"
echo "* When you exit the maintenance shell the system will *"
echo "* reboot automatically. *"
echo "* *"
echo "************************************************************"
echo
/sbin/sulogin -p
fsck_reboot
fi
stat_done
fi

# STEP 12 - remount root and mount local file system
stat_busy "Mounting Local Filesystems"
/bin/mount -n -o remount,rw /
/bin/rm -f /etc/mtab*
/bin/mount -o remount,rw /
if [ -e /proc/mounts ]; then
/bin/grep -e "/proc " -e "/sys " -e "/dev " /proc/mounts >> /etc/mtab
fi
/bin/mount -a -t $NETFS
stat_done

# STEP 13 - activating swap partition
status "Activating Swap" /sbin/swapon -a &

# STEP 14 - set urandom
{
RANDOM_SEED=/var/lib/misc/random-seed
if [ -f $RANDOM_SEED ]; then
stat_busy "Initializing Random Seed"
/bin/cat $RANDOM_SEED > /dev/urandom
stat_done
fi
} &

# STEP 15 - removing temp files
stat_busy "Removing Leftover Files"
/bin/rm -f /etc/nologin &>/dev/null
/bin/rm -f /etc/shutdownpid &>/dev/null
/bin/rm -f /var/lock/* &>/dev/null
/bin/rm -rf /tmp/* /tmp/.* &>/dev/null
/bin/rm -f /forcefsck &>/dev/null
(cd /var/run && /usr/bin/find . ! -type d -exec /bin/rm -f -- {} \; )
: > /var/run/utmp
/bin/chmod 0664 /var/run/utmp
/bin/mkdir /tmp/.ICE-unix && /bin/chmod 1777 /tmp/.ICE-unix
/bin/mkdir /tmp/.X11-unix && /bin/chmod 1777 /tmp/.X11-unix
stat_done

# STEP 16 - set rc.conf hostname
if [ "$HOSTNAME" != "" ]; then
status "Setting Hostname: $HOSTNAME" /bin/hostname $HOSTNAME &
fi

# STEP 17 - load modules depends
#status "Updating Module Dependencies" /sbin/depmod -A &

# STEP 18 - set lang
{
: >/etc/profile.d/locale.sh
/bin/chmod 755 /etc/profile.d/locale.sh
[ -z "$LOCALE" ] && LOCALE="it_IT@euro"
stat_busy "Setting Locale: $LOCALE"
echo "export LANG=$LOCALE" >>/etc/profile.d/locale.sh
stat_done
} &

# STEP 19 - Save our dmesg output from this boot
if [ -f /var/log/dmesg.log ]; then
/bin/rm /var/log/dmesg.log &
fi
/bin/dmesg > /var/log/dmesg.log &

Luego edita tu /boot/grub/menu.lst agregando una entrada para utilizar finit

#(0) Arch Linux
title Arch Linux SpeedBoot
kernel /boot/vmlinuz26 root=/dev/sda2 ro vga=791 splash resume=/dev/sda1 init=/sbin/finit-arc
initrd /boot/kernel26.img

Ojo!!! finit no funciona con los UUID de los discos por lo que debes cambiar tambien tu archivo /etc/fstab para que monte los discos como /dev/sdaX (X es el numero de tu disco)

No olvides darle permisos de ejecución a tu nuevo /etc/rc.sysinit

Finalmente edita el archivo /etc/finit.conf (este es el mio)

##Set user on "login_manager" if you want access
##in a console login manager or GDM,KDM
#user login_manager

##mountdevices before udev (DONT REMOVE IT!)
mountdev

##modules that you want load
#module intel_agp
#module agpgart

##filesystem device that you want check
check /dev/sda2
check /dev/sda3

##hostname
host arch_msdark

##startx command
startx /bin/bash --login -c /usr/bin/startx

y el archivo /usr/sbin/services.sh

#!/bin/sh

#Starts udev events
/sbin/udevd --daemon &>/dev/null &
/sbin/udevadm trigger &>/dev/null &
/sbin/udevadm settle &>/dev/null &

#Make swap (not for ssd)
/sbin/swapon -a &

#Starting background daemons
/etc/rc.d/syslog-ng start &>/dev/null &
/etc/rc.d/hal start &>/dev/null &
/etc/rc.d/laptop-mode start &>/dev/null &
/etc/rc.d/alsa start &>/dev/null &
/etc/rc.d/wicd start &>/dev/null &
/etc/rc.d/fam start &>/dev/null &
/etc/rc.d/klogd start &>/dev/null &
/etc/rc.d/crond start &>/dev/null &

Y listo!!! reinicia y veras como mejoras la velocidad!!!

Saludos!!!

Categorías:Arch Linux, Tips Etiquetas:,

Comunidad ArchLinux Chile..!!!!!

Febrero 6, 2009 msdark Deja un comentario

Recuerdan un post de hace un tiempo en donde hacia un llamado a los archero chilenos para conformar una comunidad?… y que les comete que habia un intento pero que estaba estancado?…

Bueno el resultado es que nos hemos reunido todos y hemos comenzado a trabajar… y ya tenemos todo organizado y listo!!!

Muchas gracias a Saint, Erf, Phifo, ydossow y varios que se me olvidan aún sus nicks por todo el trabajo que hemos hecho… vamos que se puede…

Ahora estan todos invitados a participar y colaborar en y con la nueva comunidad ArchLinux-CL

ArchLinux Chile

Shift Linux se pasa a Arch….

Diciembre 7, 2008 msdark Deja un comentario

Shift Linux, es una distribución en formato LiveCD creada principalmente con el bojetivo de mostrarle a los WinUsers que Linux es Fácil de Usar.

Recientemente el proyecto de la comunidad Neowin.net anunció un cambio en el desarrollo. Decidierons cambiarse de Ubuntu a ArchLinux… por que??? por varios motivos.

Los desarrolladores de Shift Linux quierene una distribución completamente personalizable, rápida, etc. Además aparentemente, es muy dificil desarrollar para Ubuntu, por la cantidad de componentes y su gran integracion (sin contar la cantidad de “extras” que trae instalado….. harina de otro costal). Muchas cosas no pueden ser cambiadas (en Ubuntu) por el uso de los meta paquetes, que a pesar de facilitar la vida del usuario normal, a veces dan muchos dolores de cabeza a otros, como por ejemplo cuando quieres remove evolution y te pide eliminar la mita de tu escritorio Gnome. Per Arch no tiene es problema, ofrenciendo su gran administrador pacman y la cantidad de wrappers que hay para el como yaourt.

Obviamente esta es una señal de los dioses que no debe ser ignorada… algo esta pasando…..

Technorati Tags: , ,

Categorías:Arch Linux, Distros Etiquetas:,

Pacman… el poder de arch

Agosto 24, 2008 msdark 1 Comentario

Así como para los chicos de Debian y derivados existe APT para facilitar el manejo de los paquetes de software que instalan (y desinstalan), Arch Linux cuenta con una excelente herramienta para esta administración… Pacman

Este es una de las grandes ventajas de Arch, ya que combina el poder de una fácil instalación de paquetes precompilados listos para usar, junto con una simplicima forma de compilar paquetes fuentes (ABS).

Pacman usa ideas de Gentoo (y portage), Debian (apt) y SlackWare para lograr un  poderoso gestor de paquetes que permite tener un sistema actualizado ya sea de los repositorios oficiales o de los aportes de la comunidad de usuarios de Arch.

Pacman puede bajar, instalar y actualizar paquetes ya sea de repositorios locales o remotos, con un manejo completo de dependencias, mediante herramientas fáciles de entender para crear tus propios paquetes.

…. Vamos al grano… veamos su modo de uso…

INSTALACIÓN DE PAQUETES

  1. pacman -S paquete1 … paqueteN: Con este simple comando en consola puedes instalar N paquetes (como argumentos del comando) que se encuentran en los repositorios configurados.
  2. pacman -Sy [paquete1... paqueteN]: Si se ocupa sin argumentos (lo que está entre corchetes) se sincronizará nuestra base de datos con los servidores externos, si pones algún argumento, además instalará esos paquetes.
  3. pacman -S repositorio/paquete: Igual que el primero, pero esta vez explicitamos desde que repositorio queremos instalar dicho paquete (ejemplo: pacman -S extra/openbox )

ELIMINACION DE PAQUETES:

  1. pacman -R paquete: Elimina el paquete indicado, dejando todas sus dependencias instaladas
  2. pacman -Rs paquete: Elimina el paquete junto con sus dependencias, sin romper a otros paquetes.
  3. pacman -Rc paquete: Elimina el paquete junto con sus dependencias.

ACTUALIZACION DEL SISTEMA

  1. pacman -Su: Actualiza todo el sistema
  2. pacman -Syu: Sincroniza la base de datos y actualiza el sistema

INSTALACION MANUAL DE PAQUETES

  1. pacman -U paquete.pkg.tar.gz: Actualiza el paquete especificado (que se encuentra en nuestro disco, como dpkg -i paquete.deb para los Debianitas)
  2. pacman -A paquete.pkg.tar.gz: Instala el paquete desde una ruta local

BUSQUEDA

  1. pacman -Ss paquete: Busca un paquete en particular dentro de los repositorios
  2. pacman -Qs paquete: Busca solo dentro de los paquetes instalados
  3. pacman -Si paquete: Muestra información sobre el paquete
  4. pacman -Ql paquete: Lista los archivos contenidos en el paquete
  5. pacman -Qo /ruta/archivo/cualquiere: Te muestra a que paquete pertenece el archivo

OTROS

  1. pacman -Sw paquete: Descarga el paquete pero no lo instala
  2. pacman -Sc: Borra los paquetes de versiones antiguas
  3. pacman -Scc: Borra la cache de pacman

CONFIGURACION

Como todo en Arch… es simple, la configuración de pacman se encuentra en un archivo de texto plano /etc/pacman.conf que tiene 2 secciones.

Seccion 1: Configuraciones generales (bajo [options] ) Desde aqui se puede especificar que archivos no quieres que sean actualizados, simplemente:

NoUpgrade   = etc/fstab
NoUpgrade   = etc/rc.conf etc/rc.local
NoUpgrade   = etc/modprobe.conf etc/modules.conf
NoUpgrade   =  boot/grub/menu.lst

O usar IgnorePkg, (que usa la misma sintaxis) que te permite decirle a pcamn que no actualice cierto paquete, pero que si te informe que la nueva versión podría cambiar dicho paquete para que tu decidas que hacer.

Seccion 2: Repositorios
Desed aquí defines desde donde quieres descargar tus archivos, puedes escribir los repositorios directamente desde ahí, o usar un archivo externo (como viene por defecto en Arch) ya que muchas veces los repos tienen muchos mirrors.

Y eso!!… con esta simple herramienta tendrás tu sistema limpio, ordenado y actualizado…
Ahora, claro está que como todo en el mundo del Software Libre, tienes opciones!!!… si por que existen varios frontend para pacman que te pueden ayudar aún, más… mi favorito yaourt, que básicamente es lo mismo que pacman (con algunas cosillas más), manteniendo la misma sintaxis, pero que te permite acceder directmante a AUR que es el repositorio de los usuarios de Arch!!!.. (para el próximo post)

Otras herramientas son: gtkpacman (su nombre lo dice todo), jacman (hecho en java).

Saludos!!!

Categorías:Arch Linux Etiquetas:

Comenzando a usar Arch

Agosto 21, 2008 msdark Deja un comentario

Iba a escribir un post sobre la instalación de Arch, que a pesar de lo que lean por ahi, no es tán dificil como la pintan. Iba a escribirlo pero me arrepenti, por que ya existe suficiente material de como hacerlo en toda la red y en varios idiomas, comenzando por el Wiki de Arch (español, otra en español y en ingles y oficial), que es donde encontrarás solución a muchas de tus dudas.

Así que de aquí en adelante supondremos que tienes Arch instalado en tu máquina y que usaste alguno de estos post, articulos, tutoriales y/o manuales.

  1. Guía Instalación Oficial Español
  2. Guía Oficial y actualizada en ingles
  3. Tutorial de Instalación

Ahora que ya tienes instalado Arch, puedes comenzar a descubrir sus grandes posibilidades…

Para el siguiente post… PACMAN…

Categorías:Arch Linux Etiquetas: