Algo de Linux

lunes, 26 de enero de 2015

Configurar locales y eliminar el aviso "-bash: warning: setlocale: LC_ALL: cannot change locale (es_ES)"

Al conectarme por ssh a un servidor de terminales con la imagen de Debian Wheezy, he visto que me daba los siguientes avisos:
 -bash: warning: setlocale: LC_ALL: cannot change locale (es_ES)
-bash: warning: setlocale: LC_ALL: cannot change locale (es_ES)
Ejecuto el comando locale para ver qué locales tiene configurada la máquina:
# locale
Y compruebo que está definido el locale es_ES pero no lo encuentra. Así que es de suponer que no ha sido generado:
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=es_ES.UTF-8
LANGUAGE=
LC_CTYPE="es_ES"
LC_NUMERIC="es_ES"
LC_TIME="es_ES"
LC_COLLATE="es_ES"
LC_MONETARY="es_ES"
LC_MESSAGES="es_ES"
LC_PAPER="es_ES"
LC_NAME="es_ES"
LC_ADDRESS="es_ES"
LC_TELEPHONE="es_ES"
LC_MEASUREMENT="es_ES"
LC_IDENTIFICATION="es_ES"
LC_ALL=es_ES
Para asegurarme, echo un vistazo al fichero /etc/locale.gen y compruebo que ese locale aparece comentado:
# grep '# es_ES ISO-8859-1' /etc/locale.gen
# es_ES ISO-8859-1
La solución consiste en descomentar la línea en el fichero /etc/locale-gen y reconfigurar el paquete "locales".
 Para simplificar el trabajo de establecer el idioma español en los locales, lo he transformado en un script al que he llamado setlocalesES y lo he colocado en todos los servidores de aula mediante puppet. Como podéis comprobar es muy sencillo:
# cat /usr/local/sbin/setlocalesES
#!/bin/bash
#
# setlocalesES
# Script para establecer los locales en español
# Fecha creación: 26/01/2015
# Fecha última modificación: 27/01/2015

sed -i "s/^#\ es_ES/es_ES/g" /etc/locale.gen
echo "locales locales/locales_to_be_generated multiselect es_ES ISO-8859-1, es_ES.UTF-8 UTF-8, es_ES@euro ISO-8859-15" | debconf-set-selections
echo "locales locales/default_environment_locale select es_ES" | debconf-set-selections
DEBIAN_FRONTEND=noninteractive dpkg-reconfigure locales
Publicado por primera vez en http://enavas.blogspot.com.es

martes, 20 de enero de 2015

Nueva clave gpg para el repositorio de paquetes deb-multimedia

La clave gpg del repositorio de paquetes deb-multimedia ha cambiado. Si lo utilizáis habitualmente, debéis agregar la nueva clave. Para ello no tenéis más que instalar el paquete deb-multimedia-keyring que contiene dicha clave y se encuentra en dicho repositorio.
Publicado por primera vez en http://enavas.blogspot.com.es

jueves, 15 de enero de 2015

Descargar paquetes desde los repositorios de Debian Wheezy

En Debian Wheezy podemos descargar paquetes desde los repositorios utilizando en parámetro download de apt que viene instalada en esta versión.
# apt-get download nombrepaquete
Por ejemplo, si ejcutamos el comando:
# apt-get download iceweasel
Descargaremos el paquete iceweasel en el directorio actual.

Como se trata de descargar paquetes, sin instalarlos, es posible realizar la descarga con usuarios no administradores.
Publicado por primera vez en http://enavas.blogspot.com.es

martes, 6 de enero de 2015

Extraer un archivo scatter de nuestro dispositivo MTK65xx

En un post anterior, vimos cómo reparticionar el almacenamiento interno de nuestro smartphone con chipset MTK65xx.

Si echáis un vistazo al post, veréis que necesitamos tres archivos:
  • El archivo scatter.
  • El archivo EBR1.
  • El archivo EBR2.
Los archivos EBR1 y EBR2 podemos descargarlos desde alguna página como ya vimos en el artículo. En cuanto al archivo scatter, podemos sacarlo de la ROM (si la tenemos descargada) o extraerlo de nuestro dispositivo, utilizando la herramienta MTK Droid Tools.
http://forum.zopomobileshop.com/thread-1412-1-1.html#sthash.PVEy8gEI.dpu


Los archivos scatter contienen información acerca de nuestro procesador. Para obtenerlo a partir de nuestro dispositivo:

Primero.- Habilitamos la depuración USB en nuestro dispositivo y lo conectamos al ordenador.

Segundo.- Abrimos MTK Droid Tools y comprobamos que detecta nuestro dispositivo:


Tercero.- Hacemos clic en el botón "Mapa de Blocks" y se nos abrirá una pantalla como la siguiente:

Cuarto.- Pulsamos el botón "Crear archivo scatter" para crear el archivo scatter de nuestro dispositivo. Nos preguntará en qué ubicación queremos guardarlo. Seleccionamos la ubicación que queramos y guardamos el archivo.

Una vez obtenido, ya podremos utilizarlo para reparticionar el almacenamiento interno del dispositivo.
Publicado por primera vez en http://enavas.blogspot.com.es

sábado, 20 de diciembre de 2014

sed: Insertar una línea antes de un patrón determinado

En el post anterior mostrábamos un ejemplo en el que eliminábamos una línea del script /etc/rc.local para evitar la ejecución de un script en un momento determinado.
Ahora bien, puede que después de terminar la ejecución del procedimiento por el que necesitábamos cancelar la ejecución del script, nos interese volver a añadir la línea que habíamos eliminado.

En este caso, como sabemos que dicha línea debe ir justo antes del texto "exit 0", vamos a utilizar el comando sed para realice precisamente esta acción:
# sed -i '/exit 0 / i\/usr/sbin/sinc_puppet_inst &\n' /etc/rc.local
Publicado por primera vez en http://enavas.blogspot.com.es

sed: Borrar las líneas que contengan un patrón determinado

Una de las cosas para las que utilizo mucho el comando sed es borrar las líneas de un archivo que contienen un patrón determinado. 

Por ejemplo: En nuestras instalaciones tenemos un script sinc_puppet_inst que se ejecuta al final del proceso de arranque y no me interesa que este script se ejecute en una determinada situación. 

Podría utilizar el comando sed en un script que se inicie en uno de los runlevels para evitar la ejecución eliminando la línea y añadiéndola después cuando termine el proceso que quiero realizar.
Para eliminar la línea,  podemos hacer lo siguiente:
# sed -i  '/sinc_puppet_inst/ d' /etc/rc.local
Si os dáis cuenta, lo que va entre las barras "/" es el patrón a buscar. Y "d" le indica a sed que borre las líneas que contengan el patrón.

Otro de las cosas que podemos querer borrar es bloques de texto que contengan una estructura determinada. Por ejemplo:
# sed -i '/BEGIN/,/END/ d' /boot/grub/grub.cfg
El comando anterior borraría el bloque de líneas del fichero /boot/grub/grub.cfg que comienza por la palabra BEGIN y termina con la palabra END.

Publicado por primera vez en http://enavas.blogspot.com.es

martes, 16 de diciembre de 2014

Buscar un patrón con sed

Normalmente utilizamos grep para buscar patrones. Bueno, pues también podemos buscar un patrón utilizando sed. ¿Cómo? De la siguiente manera:
sed -n '/patron/ p'
Con el comando anterior le estamos diciendo a sed que busque el patrón que le indicamos y lo imprima en pantalla. 

Y si queremos buscar todas las líneas que no contienen el patrón, tal y como haríamos con un "grep -v", lo haríamos de la siguiente manera:
sed -n '/patron/ !p'
Publicado por primera vez en http://enavas.blogspot.com.es