lunes, 28 de abril de 2014
miércoles, 23 de abril de 2014
Actualizar Ubuntu+Cinnamon de 13.10 a 14.04
Para todos aquellos que tengáis Ubuntu 13.10 con Cinnamon instalado, veréis que al mirar de actualizar a Ubuntu 14.04 no podéis. Os saldrá un error en el cálculo de la actualización. Realmente uno puede quedar algo perplejo y no saber que hacer ya que las explicaciones te dejan a tu merced la resolución del problema. Veremos un error que dice algo como esto:
An unresolvable problem occurred while calculating the upgrade.
This can be caused by:
* Upgrading to a pre-release version of Ubuntu
* Running the current pre-release version of Ubuntu
* Unoficial software packages not provided by Ubuntu
* Upgrading to a pre-release version of Ubuntu
* Running the current pre-release version of Ubuntu
* Unoficial software packages not provided by Ubuntu
Pues bien, después de mirar logs y consultar por internet (y reportar el bug) me encuentro con este report: https://bugs.launchpad.net/ubuntu/+source/cinnamon/+bug/1279762
Lo encontré porque dio la casualidad que sospeché de cinnamon cuando el error dijo que mirara si tenia software que no proviniera de Ubuntu.
Así pues que lo que hay que hacer para actualizarnos a 14.04 es primero desinstalar Cinnamon, actualizar, y luego volver a instalar Cinnamon. Así de sencillo, pero a la vez así de poco intuitivo. Como siempre, recomiendo usar los repositorios oficiales para evitar este tipo de problemas.
Resumen
Desinstalar Cinnamon
sudo apt-get install ppa-purge
sudo apt-get purge --auto-remove cinnamon
sudo apt-get autoremove
sudo apt-get purge --auto-remove cinnamon
sudo apt-get autoremove
Actualizar a 14.04
Instalar Cinnamon
La versión que nos va a funcionar con Ubuntu 14.04 a fecha que se edita este artículo es la nightly. Es decir, que no es la versión estable sino una experimental (funciona bien, pero hay algunas cosas a depurar):sudo add-apt-repository ppa:gwendal-lebihan-dev/cinnamon-nightly
sudo apt-get update
sudo apt-get install cinnamon
Si en algún momento sale la versión estable no hay más que cambiar el repositorio e instalar aquella versión que más nos convenga.
jueves, 17 de abril de 2014
Ejecutando en paralelo en bash (ejemplo con rsync)
xargs es un programa incluido en el paquete findutils. Con xargs podemos construir y ejecutar lineas de comando provinientes de la entranda estandard.
xargs nos permite lanzar procesos en paralelo mediante su parámetro -P, el cual nos permite definir el número de procesos paralelos a lanzar al mismo tiempo (equivalente a --max-procs).
Este programa ya viene instalado por defecto en la mayoría de distribuciones y suele resultar muy útil.
Por otro lado tenemos a GNU parallel. La definición de las manpages es muy similar a la de xargs, si bien ya nos deja claro de inicio que es un programa diseñado para ejecutar comandos en paralelo. No vienen instalado por defecto en Ubuntu.
Hay muchas diferencias entre uno y otro pero las más notables las podéis encontrar en el siguiente enlace:
Diferencias entre xargs y parallel
https://www.gnu.org/software/parallel/man.html#differences_between_xargs_and_gnu_parallel
Ahora veamos un ejemplo de como lanzar sincronización de archivos mediante rsync en paralelo con uno y otro programa:
xargs
Para entender mejor el xargs, yo lo veo como un sustituto de :for i in `ls`
do
echo -- $i
done
en el mundo xargs seria el equivalente one-liner:
ls | xargs -I% echo -- %
Script de ejemplo para lanzar rsync en paralelo:
#! /bin/bash
LIST=$1
DEST_DIR=$2
RSYNC_OPTS=$3
#echo "rsyncing From=$SRC_DIR To=$DEST_DIR RSYNC_OPTS=$RSYNC_OPTS"
echo $LIST|xargs -n1 -d, echo|xargs -n1 -P 0 -I% rsync --rsync-path='sudo rsync' ${RSYNC_OPTS} % ${DEST_DIR}
Este script recibe tres argumentos. El primero un listado de directorios a sincronizar separados por comas. El segundo el directorio de destino. El tercer parámetro son las opciones rsync.
El problema que obtengo con este script es que si deseo saber el código de salida de los rsync que lanzo no tengo manera. Como mucho puedo saber mediante pipestatus el código de salida del último xargs. Dicho de otra manera, hace el paralelismo pero pierdo información que me podría ser útil.
GNU parallel
Como parallel no viene instalado por defecto, lo instalamos:
apt-get install parallel
Ahora os aconsejo borrar el flag --tollef del archivo de configuración /etc/parallel/config ya que sino muchas de las 'virtudes' de parallel no os funcionaran y os darán errores como este:
ls | parallel echo # Outputs single new line
ls | parallel echo echo echo # Outputs three new lines.
ls | parallel echo {} # /bin/bash: {}: command not found
ls | parallel echo '{}' # /bin/bash: {}: command not found
ls | parallel 'echo {}' # Outputs: {}
ls | parallel -IMM 'echo MM' # Outputs: MM
(Fuente StackOverflow)
Una vez instalado ya podemos hacer un script para lanzar rsync en paralelo:
parallel -q -d"," --joblog /etc/scripts/rsync_hercules_parallel.log rsync ${OPCIONES[@]} {} ${DEST} ::: `echo "${ORIGENES%?}"`
En donde $OPCIONES $DEST y $ORIGENES son arrays con los argumentos del rsync. Este script es muy similar al que hacemos con xargs pero con una GRAN diferencia: No perdemos los códigos de salida (exitval) del rsync. De esta manera, pese a lanzar todos los rsync en paralelo, tenemos control total de lo que tarda el proceso y su retorno (sequence number, sshlogin, start time as seconds since epoch, run time in seconds, bytes in files transferred, bytes in files returned, exit status, and command)
viernes, 11 de abril de 2014
Auditando Samba con Ubuntu
El módulo Stackable VFS (Virtual File System) inició con Samba3 y se ha hecho muy popular. Samba
pasa cada petición de acceso al sistema de archivos UNIX através the los módulos VFS cargados. Y.... ¿en que no puede ayudar esto? Pues podemos hacer muchas cosas como por ejemplo controlar las quotas de disco o auditar quien crea, modifica o borra un archivo o carpeta (entre muchas más cosas).
Módulos incluídos:
Más info en:
http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/VFS.html
Pues bien, ahora vamos a mirar de auditar nuestro Samba mediante VFS. Para ello nos bastará con añadir unas lineas en nuestro smb.conf:
/etc/samba/smb.conf
# Audit settings
full_audit:prefix = %u|%I|%S
full_audit:failure = connect
full_audit:success = connect disconnect opendir mkdir rmdir closedir open close read pread write pwrite sendfile rename unlink chmod fchmod chown fchown chdir ftruncate lock symlink readlink link mknod realpath
full_audit:facility = local5
full_audit:priority = notice
%u - Usuario
%I - IP del usuario
%S - Nombre del recurso compartido
Tenemos más variables que podemos poner como prefijo de full_audit:prefix que corresponden con las variables de sustitución de :
http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html
Sobre que acciones podemos auditar tenemos un listado extenso que podemos consultar en esta web:
http://www.samba.org/samba/docs/man/manpages-3/vfs_full_audit.8.html
¿Con esto ya abre acabado?. No, ahora tenemos a nuestro Samba preparado para poder auditar, pero le tenemos que decir que queremos que audite. Eso lo haremos en el recurso que deseemos auditar poniendo la directriz vfs object:
[Mi Recurso Samba]
vfs object = full_audit
y ya podremos ver en el /var/log/syslog entradas como esta:
Apr 10 13:00:54 miserver smbd[21816]: ediaz|85.81.69.244|Support|opendir|ok|Prueba/test
Si no queremos que todo el log acabe en syslog y lo que preferimos es tenerlo todo en un archivo separado, podemos hacerlo fácilmente editando los archivos de rsyslog:
sudo vim /etc/rsyslog.d/50-default.conf
Modifica la linia donde aparezca:
*.*;auth,authpriv.none -/var/log/syslog
por esta otra:
*.*;local5,auth,authpriv.none -/var/log/syslog
Insertamos esta linea a continuación de la anterior (ojo!! tiene que estar en /var/log porque sino no funcionará)
local5.* /var/log/samba-audit.log
Y ahora reiniciamos tanto el rsyslog como el samba:
sudo service smbd restart
service rsyslog restart
Con esto ya podremos auditar los accesos al Samba
sudo tail -f /var/log/samba-audit.log
Si aun queremos dejarlo un poco más depurado, lo que deberíamos hacer es un logrotate. Es decir, rotar los logs para que el samba-audit.log no crezca indefinidamente hasta que nos deje sin espacio. Para ello os aconsejo mirar un artículo anterior en donde se explica como hacerlo:
lunes, 7 de abril de 2014
Instalar ia32-libs en Ubuntu 13.10
Como muchos de vosotros sabréis, para instalar muchas aplicaciones en nuestra máquina de 64bits, necesitamos instalar el paquete ia32-libs para darnos compatibilidad con programas diseñados para 32bits (citrix, codewavers, teamviewer, google earth, lmadmin (flexera), etc).
El problema viene con la versión 13.10 de Ubuntu la cual ha dejado de dar soporte a estas librerías.
Si miramos de instalarlas nos saldrá este mensaje:
sudo apt-get install ia32-libs
Reading package lists... Done
Building dependency tree Reading state information... Done
Package ia32-libs is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source
However the following packages replace it:
lib32z1 lib32ncurses5 lib32bz2-1.0
E: Package 'ia32-libs' has no installation candidate
Así pues, como se ha probado que la versión de la distribución anterior (13.04) funciona también bien con la 13.10, podemos instalarla añadiendo los repositorios:
Editamos /etc/apt/sources.list
vim /etc/apt/sources.list
y añadimos la siguiente linea:
deb http://archive.ubuntu.com/ubuntu/ raring main restricted universe multiverse
luego actualizamos el repositorio:
apt-get update
y finalmente ya podemos instalar las librerias (y sus dependencias):
apt-get install ia32-libs
miércoles, 2 de abril de 2014
Particionar disco de más de 2TB con GNU/Parted en una sola linea de comandos
En artículos anteriores os comentaba como manejar particiones de más de 2 TB mediante GNU/parted . Desde como crear una partición de más de 2Tb, a recuperar una partición tras un mklabel o redimensionar una partición:
Hoy simplemente, con el fin de facilitar los automatismos en la creación de particiones (o simplemente para ahorrarnos algunos pasos) os quiero presentar la posibilidad de crear una partición de más de 2TB ejecutando el código en una sóla linea y sin tener en cuenta las posiciones START y END que nos pide el comando parted:
parted -s /dev/sda mklabel gpt mkpart primary 0 100%
Si comparáis esta opción al artículo
Crear una partición de más de 2 Terabytes en Linux
vereis que es mucho más rápido, aunque ciertamente cuando lo hacemos por pasos nos puede quedar mucho más claro lo que estamos haciendo. Como casi siempre en Linux, tenemos muchas maneras de hacer las cosas y todas ellas nos llevan a cumplir nuestras expectativas.
- http://eithel-inside.blogspot.com.es/2011/11/crear-una-particion-de-mas-de-2.html
- http://eithel-inside.blogspot.com.es/2013/12/recuperacion-de-particion-tras-mklabel.html
- http://eithel-inside.blogspot.com.es/2012/08/redimensionar-particion-ext4-sin.html
Hoy simplemente, con el fin de facilitar los automatismos en la creación de particiones (o simplemente para ahorrarnos algunos pasos) os quiero presentar la posibilidad de crear una partición de más de 2TB ejecutando el código en una sóla linea y sin tener en cuenta las posiciones START y END que nos pide el comando parted:
parted -s /dev/sda mklabel gpt mkpart primary 0 100%
Si comparáis esta opción al artículo
Crear una partición de más de 2 Terabytes en Linux
vereis que es mucho más rápido, aunque ciertamente cuando lo hacemos por pasos nos puede quedar mucho más claro lo que estamos haciendo. Como casi siempre en Linux, tenemos muchas maneras de hacer las cosas y todas ellas nos llevan a cumplir nuestras expectativas.
Suscribirse a:
Entradas (Atom)