HowTo: Identi.ca/Twitter/Laconi.ca en Fedora 18

Bueno, es muy fácil integrar identi.ca/twitter/laconi.ca en empathy/telepathy. Solo instala purple-microblog.

yum install purple-microblog

De esta manera, tendrás disponibles las tres cosas en tu “accounts” en Empathy; o cualquier cliente que use telepathy. Es lo más chido y sencillo.

La neta, esta no es una lista exhaustiva. Si te interesa ver qué onda, usa:


yum search all identi.ca
yum search all laconi.ca
yum search all twitter

HowTo: Fix Google Chrome’s slowness on Fedora

Well, if you; like me, hate Google Chrome recently; because it gets slow as a turtle, here’s a solution:

google-chrome %U --disable-accelerated-compositing

I dunno what the %U does, but the other one is self explanatory. This solved my slowness problems.

My symptoms:

  • Impossible to view flash videos (choppy most of the time)
  • Some websites were just slow (javascript maybe?)

BTW, I have kmod-catalyst installed. Maybe that is causing me to suffer. I also did some testing with OpenCL so I installed some drivers from AMD. I have an AMD v4900.

# Reference

http://peter.sh/experiments/chromium-command-line-switches/

HowTo: Regenerate tmpfiles without restarting

Ok, I’m playing around with thin and nginx now. I am into sinatra and padrino and stuff.

So, I am creating sockets for thin so nginx can read them. I need a directory in /run

I’ve decided to create a directory called thin; with 2770 permissions and owner/group would be renich/nginx (for now; when done, I’ll create the app’s own user).

There is a standard way to do this. Just create a file:


# /etc/tmpfiles.d/thin.conf
d /run/thin 2770 renich nginx -

Now, how do I make the tmpfiles regenerate without restarting? Fairly easy:


su -c 'systemd-tmpfiles --create'

# References
man 8 systemd-tmpfiles

http://www.freedesktop.org/software/systemd/man/systemd-tmpfiles.html

HowTo: Cómo monto un SMB share en Fedora 18?

Bueno, hoy, en lo particular, tube un poco de problemas al querer montar mi disco duro de películas en Fedora.

No tuve problemas antes, pero, imagino, han de ser algunas ondas relacionadas con la edad de mi router TP-Link; el cual comparte mi disco duro de películas en la red.

La neta, usa GNU & Linux internamente. Lo que pasa es que tiene una versión de samba medio viejita. El caso es que necesité una opción especial, ya que me estaba dando el siguiente error:

CIFS VFS: cifs_mount failed w/return code = -5

Bueno, ya no la hago más de emoción. Así lo pude montar:

mount -t cifs //router1/volume1 hdd -o username=renich,guest,nounix,cache=none,sec=ntlmv2

La opción mágica fue la “sec=ntlmv2″. No estoy seguro pero, imagino, samba o mount.cifs utiliza un protocolo de seguridad diferente; más nuevo probablemente.

HowTo: Como reinstalar grub2-efi @ Fedora 18

Hoy hice una actualización de EFI; antes BIOS, y se cargó a la chingada mi booteo en Fedora. Porqué? Bueno, con eso del UEFI, ahora, en Fedora (y varias otras distros), el booteo es manejado por el EFI. Hay que registrar tu booteador en el EFI.

En todo caso, batallé bastante porque, para variar, el pendejo de Yo creía que solo había que hacer un grub2-install en /dev/sda y no fue así.

Estuve buscando un rato y la que me funcionó es esta. Por favor, comenta si no te funciona o si quieres sugerir otro método.

Ahí va la receta:


# Insertas el DVD de Fedora 18 (o el rescue cd)

# Bootéalo en modo UEFI. Mi tarjeta madre ofrece bootear el cd-rom en standard y UEFI. Ésto es muy importante.

# Una vez en Grub2, antes de seleccionar Fedora 18 del menú de inicio, tienes que editar la entrada. Presiona 'e' para editarla.

# En la línea que dice efilinux, agrega la palabra "rescue" al final de la línea.

# El sistema te ofrecerá montar el sistema que encontró. Móntalo y ve a /mnt/sysimage
cd /mnt/sysimage

# Una vez ahí, haz un chroot al sistema
chroot .
su -

# Primero que nada, lee bien el comando. Si no instalaste Fedora en /dev/sda y/o cambiaste la partición EFI (diferente a /boot/efi, entonces cambia los valores presentados
# Ahora, hay que agregar la entrada con el grub2 install
grub2-install --target=x86_64-efi --root-directory=/boot/efi --boot-directory=/boot/efi/EFI --bootloader-id=Fedora --no-floppy

# Regenerar el grub2-efi.cfg
grub2-mkconfig -o /boot/efi/EFI/Fedora/grub.cfg

# reinicia

# Referencias

https://vennard.org.uk/blog/post/35

https://fedoraproject.org/wiki/GRUB_2

Rescatando a gtick

Bueno, recientemente, necesité un metrónomo para Fedora y descubrí gtick.

Primero, descubrí que no funcionaba con pulseaudio; había que usarlo con aoss. La cosa es que, en los repos, estaba medio abandonado el paquete.

Luego, chequé el sitio del autor y lo sigue manteniendo. Y, para mi sorpresa, ya soportaba Pulseaudio sin problemas.

Qué me quedaba? Pues ver si lo podía actualizar. Y si; fue fácil. De hecho, ya le mandé mi SRPM y SPEC al mantenedor del paquete y me hice co-mantenedor.

Un paquete más para el grupo de mantenedores de Fedora, hehe.

Bueno, ahora a seguir con más paquetes!

HowTo: Get rid of mosquitoes with FOSS

Well, this is kind of an experiment so, please, be skeptic and question this before believing nonsense, ok?

Recently, I downloaded an android app that claimed to make mosquitoes begone! I think it reproduces a 20 kHz sine wave and this, effectively; after ~25 minutes, scares away all mosquitoes.

So, good for us; FOSSers, that we have SoX; which even has a synth!

So, the command for it to generate this same frequency is:

play -n synth sine 20k

So, my petition is: please try this out. It should start working after 25 min of play. Maybe less if you turn up the volume. Don’t worry; you won’t hear a thing.

Now some things to do in order to ensure you’re doing things the right way:

- Be sure to try it out with 2k first, so you can hear it. Set the volume to a level that is audible in your “affected area”. Turn it up a bit loud in fact.
- Use good quality speakers. Most speakers claim to have a 20 Hz – 20 kHz response. This is partly true; they respond to higher/lower frequencies but in a decayed volume.
- Try it a few times. Stop; try again.
- Be observant of the mosquitoes behavior.

This is important to me. This is a major solution for me; in my area.

So, let me know your findings. Comments are open to all.

HowTo: Cómo instalar MariaDB en Fedora 17

Bueno, ahí va el cotorreo:

# te haces dios
su -

# remover MySQL a la chingada. Si tienes el plugin para remover leaves, agrega --remove-leaves
yum remove mysql*

# Instalar el repo de MariaDB
cat < < 'EOF' > /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/5.5/fedora17-amd64
gpgkey=http://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF

# Instalar el cliente y el servidor
yum install -y MariaDB-client MariaDB-server

# Iniciar el servicio. 
# Si, ya sé, usan systemd. Voy a ver si lo puedo contribuir al paquete. Además, no me equivoqué, es mysql sin la 'd'
service mysql start

# Cálalo. Espero que hayas corrido el mysql_secure_installation; si no, es muy buen momento para correrlo.
mysql -u root -p 

Bueno, ahí les va el origen del HowTo: https://kb.askmonty.org/en/installing-mariadb-with-yum/

Gracias a Don Monty!

p.d. Por cierto, no crees que Fedora debería apoyar a MariaDB mucho más que a MySQL de Oracle?

HowTo: Cómo respaldo mi servidor de DB remoto?

Mucha gente usa phpMyAdmin para hacer estas cosas cuando no es necesario. De hecho, les recomiendo usar Adminer en vez de phpMyAdmin; pero, eso, es otro rollo.

Muchos usarían:

Solución 1: la más pendeja…

mysqldump -h miservidor.tld -u root -p -A > myservidor.com.sql

Problemas:

- No es seguro para nada. Permites acceso público desde internet para root? Estás loco(a)?!
- Tu conexión es transparente. Si hay algún sniffer por ahi, ya le pasaste tu DB.
- Si tu DB tiene datos… bastantes datos… tus recursos de red van a sobre-usarse en tu servidor.
- Si pagas ancho de banda, ve ahorrando…
- Si tienes uno de esos Internet más rápido que tanto anuncian, ya valiste, vas a tardar toda la semana….

Solución 2: No tan pendeja… pero algo…

ssh -t usuario@miservidor.tld "mysqldump -u root -p -A > miservidor.com.sql"

Problemas:
- Tu dump se hace a local y, como no hay compresión, espero que tengas suficiente espacio en disco para ésto.
- Si tu DB tiene datos… bastantes datos… tus recursos de red van a sobre-usarse en tu servidor.
- Si pagas ancho de banda, ve ahorrando…
- Si tienes uno de esos Internet más rápido que tanto anuncian, ya valiste, vas a tardar toda la semana….

Solución 3: La del pendejo con iniciativa

ssh -t usuario@miservidor.tld "mysqldump -u root -p -A" | gzip -9 > miservidor.com.sql.gz

Problemas:
- Como, por no pensarla bien, aplicaste la compresión después del comando SSH, se está transfiriendo el archivo sin comprimir… doh!
- Si tu DB tiene datos… bastantes datos… tus recursos de red van a sobre-usarse en tu servidor.
- Si pagas ancho de banda, ve ahorrando…
- Si tienes uno de esos Internet más rápido que tanto anuncian, ya valiste, vas a tardar toda la semana….

Solución 4: La del webón (pero no tan pendejo)

ssh -t usuario@miservidor.tld 'mysqldump -u root -p -A | gzip -c -9' > miservidor.com.sql.gz

Problemas:
- Vas a terminar con un archivo que contiene toda la info. Si quieres reestablecer solo una DB; como dice Richard Couture: “Buen suerte!”
- Si tus DB son muy grandes (16 GB o más), no creo que puedas abrir tu archivo con algún editor de texto. Vim si puede… pero se tarda años!

Solución 5: La mera chida (según Yo)

# Pon el script en miservidor.com:/root/bin/DbBackup y dale permisos 700 al dir y al archivo
#!/usr/bin/env bash

# hacer que los archivos creados solo sean legibles por mí
uname 077

# definir fecha
fecha=$( date +%Y%d%m-%H%M%S )

# leemos, silenciosamente, el password de root de MySQL
echo -n 'Dame el password de root de MySQL: '
read -s password

# creamos el directorio donde vamos a guardar las DB
locacion='/var/backup/mysql'
mkdir -p -m 700 ${locacion}

# listamos todas las DB
mysql -u root --password="${password}" -B -N -e 'show databases' | while read db; do
    # respaldamos DB por DB; en su propio archivo
    echo "Respaldando ${db}..."
    mysqldump -u root --password="${password}" ${db} | gzip -c -9 > ${locacion}/${fecha}-${db}.gz
done

exit 0

# ejecútalo cada vez que quieras un respaldo (como root o usa su -c o sudo)

ssh -t root@miservidor.tld "/root/bin/DbBackup"

# te podrás traer cualquier generación de respaldo que quieras a tu compu

rsync -auvP root@miservidor.com:/var/backup/mysql/201209* /var/backup/mysql/

¿Cómo se puede mejorar esta solución?

- crear un grupo para hacer los respaldos en remoto y no usar root para ésto. Usa los permisos 2770 para los directorios de respaldo si haces ésto.
- poniendo un switch en el script remoto para respaldar todo o solo la DB que especifiques
- hacer que el default del comando sea mostrar la ayuda (default en el switch)
- hacer una función que muestre la ayuda
- usando xz en lugar de gzip (mucho mejor compresión)

Con estas mejoras, pudieras, incluso, generar un respaldo bajo demanda de una DB específica y copiarla a local; incluso sin generar el archivo remoto (y ahorramos espacio).

Porqué no lo proveo? Bueno, pienso que son features fáciles de hacer y tu puedes hacerlas solito(a). Además, te sirve para aprender.

Todos los scripts se coparten con GPLv3 para todo eh? Comparte tus adecuaciones o muere!

Fuse mount options

Today, I had a hard time figuring out these. I had to compile it myself since Fedora doesn’t provide the example directory.

So, I hope you can find this if you’re looking for it. It is the output of fusexmp -h and it shows all module and mount options. Very useful if you’re into glusterfs, ceph, xtreemfs, sshfs or any other fuse-based filesystem.

The fuse version in which I did this is: fuse-2.8.7

]$ ./fusexmp -h
usage: /home/renich/rpmbuild/SOURCES/fuse-2.8.7/example/.libs/lt-fusexmp mountpoint [options]

general options:
    -o opt,[opt...]        mount options
    -h   --help            print help
    -V   --version         print version

FUSE options:
    -d   -o debug          enable debug output (implies -f)
    -f                     foreground operation
    -s                     disable multi-threaded operation

    -o allow_other         allow access to other users
    -o allow_root          allow access to root
    -o nonempty            allow mounts over non-empty file/dir
    -o default_permissions enable permission checking by kernel
    -o fsname=NAME         set filesystem name
    -o subtype=NAME        set filesystem type
    -o large_read          issue large read requests (2.4 only)
    -o max_read=N          set maximum size of read requests

    -o hard_remove         immediate removal (don't hide files)
    -o use_ino             let filesystem set inode numbers
    -o readdir_ino         try to fill in d_ino in readdir
    -o direct_io           use direct I/O
    -o kernel_cache        cache files in kernel
    -o [no]auto_cache      enable caching based on modification times (off)
    -o umask=M             set file permissions (octal)
    -o uid=N               set file owner
    -o gid=N               set file group
    -o entry_timeout=T     cache timeout for names (1.0s)
    -o negative_timeout=T  cache timeout for deleted names (0.0s)
    -o attr_timeout=T      cache timeout for attributes (1.0s)
    -o ac_attr_timeout=T   auto cache timeout for attributes (attr_timeout)
    -o intr                allow requests to be interrupted
    -o intr_signal=NUM     signal to send on interrupt (10)
    -o modules=M1[:M2...]  names of modules to push onto filesystem stack

    -o max_write=N         set maximum size of write requests
    -o max_readahead=N     set maximum readahead
    -o async_read          perform reads asynchronously (default)
    -o sync_read           perform reads synchronously
    -o atomic_o_trunc      enable atomic open+truncate support
    -o big_writes          enable larger than 4kB writes
    -o no_remote_lock      disable remote file locking

Module options:

[iconv]
    -o from_code=CHARSET   original encoding of file names (default: UTF-8)
    -o to_code=CHARSET	    new encoding of the file names (default: UTF-8)

[subdir]
    -o subdir=DIR	    prepend this directory to all paths (mandatory)
    -o [no]rellinks	    transform absolute symlinks to relative

# Reference

http://fuse.sourceforge.net/