SyntaxHighlighter

miércoles, 16 de septiembre de 2015

Crear un nuevo item en el menú de Aplicaciones de Fedora 22

En el último post hablé sobre la instalación de Packet Tracer en Fedora. Tenemos el programa y funciona, pero aún no tenemos esa nueva aplicación en el menú de aplicaciones ni tampoco aparece como aplicación en el menú contextual cuando hacemos clic derecho sobre un fichero. Vamos a configurarlo.

Lo más fácil es instalar "alacarte", que es un gestor de menús para Gnome y añadir el programa. Alacarte nos creará un fichero en ~/.local/share/applications/ con extensión .desktop en el que podremos ver una información como esta:


[Desktop Entry]
Comment=
Terminal=false
Name=Packet Tracer
Exec=/opt/pt/bin/PacketTracer6
Type=Application
Categories=Application;Network;
Icon=/opt/pt/art/app.png

Sólo con esto ya tenemos la aplicación en el menú. Pero si además queremos que aparezca en el menú contextual cuando pinchamos encima de un fichero del tipo Packet Tracer, debemos añadir algunas opciones más para que quede como sigue:


[Desktop Entry]
Comment=
Terminal=false
Name=Packet Tracer
Exec=/opt/pt/bin/PacketTracer6 %f
Type=Application
Categories=Application;Network;
Icon=/opt/pt/art/app.png
MimeType=application/octet-stream


Necesitamos asociar un tipo Mime que se corresponda con el tipo del fichero y además añadir el "%f" al final de la línea del ejecutable para que Gnome interprete que es una aplicación que puede abrir fichero y, por tanto, lo muestre en el menú contextual en los ficheros que coincidan con su tipo mime.

miércoles, 26 de agosto de 2015

CISCO Packet Tracer 6.2 en Fedora 22

Cambio de portátil y cambio de sistema operativo también... Dejo mi antiguo MacBook de plastiquete blanco y lo cambio por un Mountain donde poder ejecutar Linux sin complicaciones.

Como últimamente empiezo a empacharme de Ubuntu, he decidido darle una oportunidad a Fedora, confiando en que la gente de RedHat lo haga lo mismo de bien que en sus productos para empresas.

El sistema se instala rápido y GNOME 3 me gusta un poco más que Unity. A priori parece que la comunidad de Fedora es menos numerosa y la variedad de paquetes de sus repositorios es menor ya que Fedora sólo admite paquetes OpenSource. Esperemos que sean suficientes para las tareas diarias, entre ellas la simulación de redes con Packet Tracer.

Packet Tracer se dejaba instalar en MacOS usando Wineskin, pero la verdad es que no funcionaba todo lo rápido que se podría es
perar. Los sistemas que CISCO recomienda son Windows y Ubuntu Linux.

Para instalar Packet Tracer en Fedora 22 he seguido algunos pasos de este blog, con algunas modificaciones.

Primero descargamos, descomprimimos e instalamos Packet Tracer 6.22. Aunque el programa se instala no se ejecutará ya que necesita algunos ajustes
Primero descargamos libopenssl.

wget ftp://fr2.rpmfind.net/linux/opensuse/update/12.2/x86_64/libopenssl1_0_0-32bit-1.0.1e-2.8.1.x86_64.rpm

Necesitamos satisfacer las dependencias (glibc.i686 y zlib) para poder continuar:

sudo dnf install glibc.i686
sudo dnf install zlib.i686

Ahora sí podemos instalar libopenssl y ejecutar Packet Tracer.

sudo rpm -Uvh libopenssl1_0_0-32bit-1.0.1e-2.8.1.x86_64.rpm
/opt/pt/bin/PacketTracer


miércoles, 25 de marzo de 2015

Buscando y moviendo ficheros a un punto de montaje (script bash)

Supongamos que tenemos una máquina que va almacenando ficheros constantemente, por ejemplo, una máquina que hace copia de seguridad de otras remotamente y almacena los ficheros de forma indefinida. Habrá un momento en el que consumiremos todo el espacio. La solución sería plantearnos una política de borrado de ficheros o mover esos ficheros a unidades fuera del almacenamiento local de la máquina.

Los ficheros podrían ser copiados a otro servidor con rsync o scp, pero en este caso voy suponer que tenemos una unidad de red o un disco USB montado de forma permanente en un directorio de la máquina.

El problema con los puntos de montaje es que el directorio sobre el que se monta el dispositivo siempre está creado y si por algún motivo el dispositivo se desmonta, escribiremos sobre ese mismo directorio pero en el almacenamiento local del servidor. Esto puede hacer que acabemos con el espacio del servidor en una operación de copia fácilmente. Para evitar ese problema el script primero comprobará que efectivamente estamos escribiendo sobre un punto de montaje activo.

El script está programado de manera que se pueda ejecutar desde cron, no recibe parámetros, toda la configuración se realiza modificando las variables de las primeras líneas.  La variable TEXT_IN_FILEPATH, en realidad es una expresión con wildcards que se buscará en el path completo del fichero, por lo que podemos usar cualquier subcadena del path del fichero para realizar la búsqueda.


#!/bin/bash
#This script perform a find command to look for files path in "SOURCE_DIRECTORY" containing "TEXT_IN_FILEPATH" substring RECURSIVELY, then move to a target mount point path.
#The script checks the target directory is a mount point to ensure that the files will be written to an external device.
SOURCE_DIRECTORY=/var/backups/
TARGET_MOUNT_POINT=/media/NAS
TARGET_PATH=/db_backup
TEST_MODE=0
TEXT_IN_FILEPATH='*monthly*bz2'
#********************************************************************************************************************************

MOVED_FILES=0
DIRECTORIES_CREATED=0
if ! mountpoint -q $TARGET_MOUNT_POINT
then
 echo "Not a Mount Point"
 exit 1;
fi

if [ ! -e "$TARGET_MOUNT_POINT$TARGET_PATH" ] 
then
 echo "Target directory not created"
 exit 1;
fi

for i in `find $SOURCE_DIRECTORY -wholename "$TEXT_IN_FILEPATH" -type f` 
do 
# Build target filename: target mount point + target directory inside mountpoint + file without source_directory path begining
 TARGET_FILE=$TARGET_MOUNT_POINT$TARGET_PATH${i/"$SOURCE_DIRECTORY/"//}
 TARGET_FILE_PATH=`dirname $TARGET_FILE`

 
 if [ ! -d $TARGET_FILE_PATH ]
 then
  if [ $TEST_MODE -gt 0 ]
  then
   #TEST MODE
   echo "TEST MODE: mkdir -p $TARGET_FILE_PATH" 
  else
   echo "Creating folder: $TARGET_FILE_PATH"
   mkdir -p $TARGET_FILE_PATH   
   ((DIRECTORIES_CREATED++))
  fi
 fi

 if [ $TEST_MODE -gt 0 ]
 then
  #TEST MODE
  echo "TEST MODE: mv $i $TARGET_FILE_PATH"
 else
  echo "Moving $i"
  mv $i  $TARGET_FILE_PATH
  ((MOVED_FILES++))
 fi
done

echo "Moved backups files summary"
echo "$DIRECTORIES_CREATED directories created"
echo "$MOVED_FILES moved"

martes, 3 de febrero de 2015

Ubuntu 14.04 LTS + MACOSX Lion en MacBook

Desde 2008 mi viejo MacBook 4.1 de plastiquete blanco lleva dando guerra... Una ampliación de memoria (a 4GB), después un cambio de disco duro (un WD de 500GB 7200rpm). Durante algún tiempo tuve arranque dual SnowLeopard+Linux 12.04, pero con mi antiguo disco de 120GB estaba un poco escaso de espacio así decidí dejar sólo MACOSX.

La gran mayoría de las herramientas que uso tienen su equivalente en OSX: LibreOffice, terminal, editores de texto, Dropbox... Pero siempre hay momentos en los que echas de menos algunos programas que no tienen equivalente o que te ves obligado a ejecutar de forma precaria usando "trucos" como Wineskin, VirtualBox, un emulador de X11...
Dispuesto a hacer una pequeña limpieza y reinstalar el entorno Linux+OSX, os cuento como lo he hecho.

Cada cosa en su lugar

Vamos a cargarnos todo, así que una copia de seguridad en dispositivo externo es OBLIGATORIA.
El esquema de particionado del disco sería:
  • OSX
  • Linux
  • Linux-swap
  • DatosCompartidos
Estas son las particiones que recomiendo. Una partición para OSX el sistema de archivos hfsplus. Una partición para la raíz (/) de Linux, elegid vuestro filesystem preferido, ext4 por ejemplo. Linux-swap, la partición de intercambio. Una partición de Datos que usaremos de comodín, para que sea accesible tanto por OSX como por Linux.

En mi ordenador tenía ya dos particiones hechas: OSX y Datos. Reduciré la partición de OSX y en el espacio que gane crearé las particiones de Linux. Después explicaré como se puede conseguir acceder a la partición de datos con formato hfsplus desde Linux, que tiene su aquel. Si no queréis complicaros mucho elegid FAT32, pero tened en cuenta que tenéis un techo de 4GB en el tamaño de fichero; o NTFS, que os obligará a instalar macfuse/osxfuse o similar en OSX.

Instalar los Sistemas Operativos y el gestor de arranque

El orden que yo he seguido ha sido OSX -> Gestor de Arranque -> Linux -> Reinstalar Gestor de Arranque. Posiblemente instalando primero Linux podría haberme ahorrado la reinstalación del Gestor de Arranque.

Instalar OSX no tiene ninguna ciencia. Se introduce el disco y se siguen las instrucciones, con cuidado de instalarlo en la partición correcta.

Tras OSX, podemos instalar rEFInd, un gestor de arranque sucesor de rEFIt. La instalación es muy sencilla. Sólamente hay que abrir un terminal y hacer un

sudo ./install.sh

La próxima vez que arranquemos saltará un gestor de arranque. Aprovechamos ahora para introducir el disco de Ubuntu 14.04 LTS, importante que sea de 64 bits. El arranque de Ubuntu 32 bits no es compatible con la EFI de MAC.

Instalamos Ubuntu. También trivial, ojo con las particiones! Cuando Ubuntu pregunta dónde instala grub (su propio gestor de arranque) elegimos el disco que ofrece por defecto.

El problema de esto es que habremos sobreescrito rEFInd. Para recuperarlo, podemos iniciar el ordenador pulsando el botón de "opción" (alt), para elegir el disco de arranque y elegimos de nuevo OSX, para arrancar el sistema y volver a instalar rEFInd usando install.sh.

Arreglar cosas que no funcionan en Ubuntu

Y una vez Unbuntizados, vemos que hay cosas que no van bien. En mi caso el panel táctil no funciona. Busco en el cajón un ratón USB y le hago caso a los amigos de la página de ayuda de ubuntu. Reviso que synaptics-input esté instalado en el sistema, busco el archivo /usr/share/X11/xorg.conf.d/51-synaptics-quirks.conf y añado las siguientes líneas:

Section "InputClass"
        Identifier "Apple Macbook 4,1"
        MatchProduct "appletouch"
        MatchDevicePath "/dev/input/event*"
        Driver "synaptics"
        Option "JumpyCursorThreshold" "20"
        Option "FingerLow" "10"
        Option "FingerHigh" "20"
        Option "FingerPress" "200"
        Option "MaxTapTime" "0" 
EndSection

MaxTapTime = 0 desactiva el molesto "tap to click", que interpreta que hacemos clic cuando tocamos el touchpad. Más información sobre el significado de las opciones aquí.
Reinicio el servidor X saliendo de la sesión y entrando otra vez y arreglado, ya tengo ratón. Funcionan los gestos (arrastrar con dos dedos para simular la rueda de scroll).

Un sistema de archivos compartido por un León y un pingüino. 

Si optamos por FAT32 o NTFS. No tendremos mayores problemas. Solo hay que instalar el soporte correspondiente y montar el sistema en Linux con permisos de escritura. En cambio, para hacer que un usuario "no root" de Linux sea capaz de escribir en hfsplus, el id de usuario Linux debe coincidir con el id del propietario del fichero en hfsplus, que normalmente es 501 para MACOSX, así ambos sistemas no entrarán en conflicto y creerán que los ficheros están siendo modificados por el mismo usuario.

Para conseguirlo debemos cambiar el uid del usuario de Linux al que queremos permitir la escritura en el sistema de archivos hfsplus... Y esto es un poco delicado: en Ubuntu, por defecto no podemos entrar como root. Entramos con un usuario sin privilegios y utilizamos la orden sudo para tareas de administración. Pues bien, si intentamos cambiar el uid del usuario con el que hemos iniciado la sesión el sistema informa que ese usuario tiene una sesión abierta y no es posible. Sin problema, creamos un usuario adicional, y ejecutamos la orden de cambio del uid.

sudo usermod --uid 501 emilio

Reiniciamos la sesión X y... oh, sorpresa!! El usuario emilio no está entre los disponibles para el inicio de la sesión. El motivo es que Linux empieza a numerar los usuarios regulares por el número 1000 y no muestra los que tienen uid menores ya que suelen ser usuarios del sistema. Pero en Linux casi siempre podemos arreglar cosas tocando en el correspondiente fichero de texto, en este caso: /etc/login.defs. Buscamos la opción UID_MIN y la cambiamos a 500.

Y listo, ya tenemos todo configurado. MACOSX Lion + (X)Ubuntu 14.04 en mi viejo MacBook 4.1.

Felices y contentos, ahora sólo me falta encontrar una pegatina de Tux para pegarla encima de la manzanita... Donde podré encontrar una de estas??




Referencias:
Instalación y configuración del arranque dual con rEFInd
Configuración de hfs en ubuntu
Configuración del touchpad