Noticias: "Programa en .Net desde linux, pero sin instalarlo"

"Una de las cosas en las que se puede decir que Microsoft acertó de pleno, fue a la hora de liberar la plataforma .Net, al contrario que el lenguaje y entorno de programación Java de Sun.

Diversos desarrolladores de la talla de Miguel de Icaza fundaron el Proyecto Mono: por un lado la plataforma Mono, que no es más que una implementación propia de lo que Microsoft denominó .NET Framework en Windows, y MonoDevelop, que hace la misma función que el Visual Studio .Net, pero libre y gratuito."


Noticia completa en: Programacion.com

Linux: ¿Como hago para saber el paquete rpm de un archivo cualquiera?

Cuantas veces, estando en nuestra distribución favorita de Linux ;-), quisimos saber cual fue el paquete rpm que instaló un archivo determinado? Supongamos que queremos saber el paquete origen del ejecutable ipop3d, que se encuentra en el directorio /usr/sbin.

Ejecutando: rpm -qf /usr/sbin/ipop3d, nos devuelve el nombre del paquete rpm:imap-2001a-18

Si ejecutáramos : rpm -qif /usr/sbin/ipop3d, nos devolvería la información completa del paquete "imap" (fecha de creación, nombre del equipo que lo creó, proveedor, descripción, etc).

Los parámetros son:

  • -q consulta

  • -f archivo

  • -i información (completa)


Tips:
para que funcione esta sintaxis, debemos darle la ruta exacta de donde se encuentra el ejecutable (en este caso, podría perfectamente ser cualquier archivo no ejecutable). Si lo que queremos es buscar únicamente un ejecutable (no funciona para los demás casos), podemos usar el comando which:

which ipop3d nos devolverá /usr/sbin/ipop3d.


También podemos combinar los dos comandos haciendo:

rpm -qif `which ipop3d`

Donde las comillas (esas, no otras) le devuelven al comando rpm la salida del which, como si hubiéramos digitado la ruta completa a mano.


Que lo disfruten!

Linux: ¿Como acceder a un pen-drive?

Hace poco que soy el feliz poseedor de un pen-drive de 1 Giga (con solo repetirlo, se me empañan los lentes ;-), y habiendo probado que funcionaba en Windows (estaba muy apurado ;-), mi deseo era disfrutarlo en Linux (donde pasaré la mayor parte de mi vida adulta ;-).

Actualmente uso Red Hat 9 (si, cuando tenga tiempo me actualizo), pero por toda la documentación que tuve que leer para lograr "entender" como funciona, cualquier distribución con kernel de versión superior a 2.4.10 es apta.

Digo "entender", porque muchas veces pensamos que algo es "complicado" en Linux, o directamente decimos "no anda", y el problema es que nosotros no entendimos ni el problema, ni la solución.

A pesar que no soy nuevo en Linux (8 años de experiencia, aproximadamente) soy nuevo en el tema "pen-drive", y como todo "novato" mi desconocimiento del tema y mi emoción hizo que demorara unas horas antes de lograrlo.

Luego me di cuenta que era muy sencillo (esa es una de las ventajas del conocimiento ;-):
  • Generalmente los kernels de las distribuciones vienen preconfigurados para soportar USB, lo cual simplifica mucho las cosas.
  • El otro tema a tener en cuenta es como se representa el pen-drive en Linux. Como todo Unix, este hardware será un "archivo que representa un dispositivo" y para este caso la nomenclatura será la misma que si fuera un disco scsi (no me pregunten porqué hace la emulación scsi para llegar al pen-drive): /dev/sda1
  • Como todo dispositivo, hay que "montarlo" (si, algo que hace Windows, pero de forma automática). Para eso debemos primero crear un subdirectorio dentro del directorio donde deberíamos montar todos los dispositivos (si somos ordenados): /mnt
  • Luego de tener el directorio destino, ejecutamos el comando para montar: mount /dev/sda1 /mnt/pendrive
  • Luego de usarlo, hay que "desmontarlo" (si, lo opuesto a "montarlo" ;-): umount /mnt/pendrive
Posibles problemas:
  • También (aquí es donde perdí el mayor tiempo) hay que controlar que todos los "módulos" del kernel encargados de "soportar" este tipo de hardware se encuentren "activados". Ejecutando el comando "lsmod" nos listará los módulos que actualmente están ejecutándose. Entre muchos, estarán los que nos importan: usb-ohci, usbcore, scsi_mod y usb-storage
  • Si tienen poca suerte, les faltará algún módulo, y si este no se levantara automáticamente cuando se ejecute el "mount", deberán hacerlo a mano. En mi caso, el módulo "usb-storage" no se encontraba corriendo y tuve que ejecutarlo usando el siguiente comando: modprobe usb-storage


Recomendación Final
Para que el dispositivo tenga toda la información grabada *SI o SI* hay que desmontarlo antes de retirarlo, de lo contrario, podrán no tener los datos actualizados en el pen-drive.

Que lo disfruten!

Linux: ¿Cómo hacer respaldos rotativos de una base de datos?

Antes de empezar, voy a repetir lo que siempre repito: los respaldos son 50% propiamente dicho "el respaldo", y el otro 50%, recuperarlos.

Con respecto a las formas, siempre es recomendable hacerlos a través de varios medios, como ser: cintas, discos, discos distribuidos, Raid, y nunca olvidar de hacer una versión (o más) que no se encuentre físicamente en la misma instalación de los servidores (si hay un incendio, o un robo, como hacemos para reconstruir el servidor?). Hasta se podría aprovechar alguna de las famosas cuentas de Gmail.

En este caso, el ejemplo que voy a comentar desarrolla otra forma de sentirnos un poco más seguros: las "versiones" y la "rotación" del respaldo ;-)

La idea es hacer "respaldos rotativos", es decir, respaldar nuestra base de datos rotando los días de la semana, donde por día podremos respaldar varias veces, y vamos acumulando "versiones" a través de toda la semana. Una vez que cumplamos un ciclo, es decir, si iniciamos un Lunes y luego de una semana, volvemos a caer en el Lunes, borramos los respaldos antiguos y realizamos los del día corriente.

Otro de los beneficios, además de tener respaldos de todos los días, y varias veces por semana, es que podemos dejarlo trabajar *casi* automáticamente, porque nunca correríamos peligro de quedarnos sin espacio de disco (aunque, volvemos al inicio, si se rompe el disco, se pierden todos los respaldos rotativos).

La idea es la siguiente:

Creamos una estructura como:

/var/respaldos/rotativos (en "var", porque es información "variable", como los "logs", "cache", etc).
/var/respaldos/scripts (es bueno ser ordenado, ahí van los scripts de respaldos)

Y dentro del directorio "rotativos", directorios con los nombres de los días de la semana (en este caso, en inglés y abreviados):

Fri Mon Sat Sun Thu Tue Wed

Y tenemos el primer scripts, llamado "respaldo_base.sh" (en este caso usaremos la base de datos PostgreSQL, pero perfectamente se puede cambiar los comandos para MySQL):


#!/bin/bash

DB="nombre_base_datos"
DIR_RESP="/var/respaldos/rotativos"

DIA_ACTUAL=`date +%a`
FECHA_ACTUAL=`date +%Y%m%d`
HORA_ACTUAL=`date +%H_%M`

FECHA=`date +%Y%m%d-%H:%M`
ARC_RESP="$FECHA_ACTUAL-$HORA_ACTUAL"

DESTINO=$DIR_RESP/$DIA_ACTUAL/$ARC_RESP.tar.bz2

DUMP=`which pg_dump`
GZIP=`which gzip`
PAR_DUMP=" "
PAR_GZIP="-f -q --best"

echo "Dia Actual: $DIA_ACTUAL"

$DUMP $PAR_DUMP -U root $DB | $GZIP -f -q --best >
$DIR_RESP/$DIA_ACTUAL/$DB-$ARC_RESP.sql.gz


Sugerencias, bienvenidas ;-)

Entradas populares