En este Tip, presentaremos los atajos de teclado mediante los cuales podremos bloquear la pantalla de nuestro ordenador en nuestra ausencia, protegiendo así nuestro trabajo de curiosos y miradas indiscretas.

En este Tip, presentaremos los atajos de teclado mediante los cuales podremos bloquear la pantalla de nuestro ordenador en nuestra ausencia, protegiendo así nuestro trabajo de curiosos y miradas indiscretas.
Una de las cosas que más me gustan de los sistemas operativos de tipo «Unix» es la posibilidad de personalizar el prompt de la terminal. Esta personalización incluye tanto la información que se mostrará en el prompt, como los colores en los que se mostrará dicha información.
En la mayoría de distribuciones Linux, el shell o interprete de comandos que se utiliza es bash, y aunque esta preferencia se puede cambiar, en este post se explicará como personalizar el prompt de bash, que es el interprete de órdenes por defecto en Debian 7.
Para el interprete de comandos Bash existen tres ficheros importantes en el directorio de cada usuario. Estos ficheros son los siguientes:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
#/bin/bash
[/sourcecode]
Si no existe en el directorio del usuario ninguno de estos ficheros, el sistema cogerá la configuración del fichero \etc\profile.
Nosotros trabajaremos sobre el fichero .bashrc que se encunetra en el directorio home de cada usuario.
En bash, la configuración del prompt es una cadena de formato que se almacena en una variable de entorno llamada PS1. Esta variable suele definirse en el fichero .bashrc. Si escribimos en la terminal la siguiente orden, obtendremos la configuración actual del prompt.
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
#echo $PS1
[/sourcecode]
El resultado será similar a:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
${debian_chroot:+($debian_chroot)}\u@\h:\w\$
[/sourcecode]
¿Qué significan todos estos símbolos? Veámolos uno a uno:
[sourcecode language=»bash» gutter=»false» wraplines=»false» highlight=»1″]
${var:+valor}
[/sourcecode]
significa : Si la variable var está definida, entonces usa valor, en caso contrario no hagas nada.
Generalmente la variable de entorno $debian_chroot estará vacía, por lo que esta expresión no mostrará ninguna información en el prompt.
Por lo tanto, la expresión :
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
${debian_chroot:+($debian_chroot)}\u@\h:\w\$
[/sourcecode]
generará un prompt con la siguiente forma:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
usuario@maquina:/dir/trabajo$
[/sourcecode]
si se trata de un usuario normal, o bien
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
usuario@maquina:/dir/trabajo#
[/sourcecode]
Si se trata del usuario root.
A parte de los caracteres especiales ya comentados en el apartado 2 existe toda una colección de caracteres especiales que podemos usar para personalizar nuestra variable de entorno. Son los siguientes:
Además de elegir que elementos se mostrarán en el prompt, tambien se puede escoger de que color se mostrará cada uno de los elementos. Para ello, se seguirá la siguiente sintaxis:
\[\e[x;ym\]$X\[\e[0m\]
donde:
Nota : Es muy importante recordar que una vez establecido un color, todos los caracteres que se impriman a continuación, aparecerán de dicho color.Por ello una vez escrito el texto que se desea colorear, debemos restaurar el color por defecto (Código de color 0).
El listado de colores disponibles es el siguiente:
Código | Color |
---|---|
0;30 | Negro |
1;30 | Gris |
0;31 | Rojo |
1;31 | Rojo Claro |
0;32 | Verde |
1;32 | VerdeClaro |
0;33 | Marron |
1;33 | Amarillo |
0;34 | Azul |
1;34 | Azul Claro |
0;35 | Violeta |
1;35 | Violeta Claro |
0;36 | Cian |
1;36 | Cian Claro |
0;37 | Gris Claro |
1;37 | Blanco |
0 | Color por defecto |
Veamos como se mostraría la siguiente variable prompt:
\[\e[01;32m\]\u\[\e[0m\]@\[\e[1;33m\]\h\[\e[0m\]:\$
Si coloreamos el texto en función de sus partes:
\[\e[1;32m\]\u\[\e[0m\]@\[\e[1;33m\]\h\[\e[0m\]\$
Para verlo mejor, colorearemos cada sección del color en el que se mostrará finalmente:
\[\e[01;32m\]\u\[\e[0m\]@\[\e[1;33m\]\h\[\e[0m\]:\$
Eliminado los códigos de color y sustituyendo cada caracter especial por su significado nos quedaría:
usuario@host:$
A continuación se muestran los enlaces de descarga para los ficheros bashrc tanto para un usuario normal, como para el usuario root:
[sdm_show_dl_from_category category_slug=»ficheros-bashrc» fancy=»1″ button_text=»Descargar» new_window=»1″]
Si por alguna razón deseamos cambiar la distribución del teclado de nuestro sistema Debian, esto es, cambiar el idioma para que por ejemplo reconozca la tecla ñ, lo podemos hacer en dos sencillos pasos:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
#dpkg-reconfigure keyboard-configuration
[/sourcecode]
Para hacer que los cambios sean efectivos inmediatamente usaremos el siguiente comando:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
#setupcon
[/sourcecode]
Una de las características disponibles en el sistema operativo de la manzana desde la última versión de Mac OSX Lion (Versión 10.7.5) es GateKeeper. Mediante esta funcionalidad, el sistema operativo restringe la ejecución de programas procedentes de fuentes «dudosas», interponiendo de este modo una barrera más entre nuestro equipo y el software malicioso.
Hasta aquí todo perfecto, el problema surge cuando deseamos ejecutar algún software que los chicos de Cupertino consideran dudoso, aunque nosotros sepamos perfectamente que está libre de toda sospecha, por ejemplo aplicaciones GPL que no se encuentran disponibles en la App Store, ya que la configuración por defecto de GateKeeper sólo permite ejecutar aplicaciones descargadas de la tienda oficial de Apple o de «desarrolladores identificados».
Así, es probable que tras descargar una aplicación desde internet y tratar de ejecutar el instalador de dicha aplicación el sistema no te lo permita mostrándote un aviso similar al de la siguiente captura:
Para solucionarlo, tenemos dos opciones, bien cambiar la configuración general del sistema, bien habilitar la ejecución especifica de la aplicación que queremos descargar. En los siguientes apartados, se revisarán ambas opciones.
Mediante esta solución permitiremos que se ejecute exclusivamente la aplicación que acabamos de descargar, por lo que es la solución mas recomendable. Para ello, localizaremos en Finder el archivo que queremos ejecutar, y en vez de hacer doble click sobre el, haremos click con el botón derecho del ratón de manera que el sistema nos muestre el menú contextual. En este menú seleccionaremos la opción Abrir con …
Al hacerlo, el sistema nos mostrará un cuadro de diálogo de advertencia, informado de que el archivo que deseamos ejecutar puede no ser seguro, similar al que se muestra en la siguiente captura:
Al pulsar sobre el botón Abrir, el sistema ejecutará el programa, y ya no volverá a bloquearnos su ejecución a próxima vez que deseemos ejecutarlo haciendo doble click sobre el.
Mediante esta opción, cambiaremos la forma en que actúa GateKeeper para todos los ficheros descargados de Internet, con lo que nunca más nos volvería a aparece el aviso de seguridad.
Para cambiar las preferencias generales del sistema, deberemos hacer click en el icono de preferencias del Dock:
A continuación seleccionamos la opción de Seguridad y privacidad :
En la mitad inferior sección General de la pantalla que nos muestra el sistema, podemos ver las opciones de configuración de la sección «Permitir aplicaciones descargadas de:». Sin embargo, para poder cambiar dichas opciones deberemos hacer click en el icono del candado situado en la esquina inferior izquierda de la pantalla.
Una vez que hemos hecho click en el icono del candado, el sistema nos pedirá la contraseña del usuario con el que hemos iniciado sesión. Tras introducirla, podremos modificar libremente las Preferencias de Seguridad y Privacidad del sistema:
Al seleccionar la opción Cualquier Sitio el sistema no volverá a bloquear la ejecución de ningún programa que descarguemos de Internet y no volveremos a ver el molesto aviso de seguridad. Sin embargo, debo insistir en que esta opción no es la mas recomendable, siendo el mejor método de ejecutar aplicaciones descargadas de Internet el explicado en el punto 1 de este artículo.
Existe un Bug al menos desde la versión 10.6 de Mac OS X, y que sigue estando presente en la versión 10.8.3 lanzada el 14 de Marzo de 2013, que hace que si ejecutamos el asistente de configuración del teclado y no cambiamos nada de la configuración, el botón «Cambiar Tipo de Teclado…» desaparecerá de la pantalla de configuración del teclado. En los siguientes puntos, describiremos con detalle el problema y su solución:
Las siguientes capturas ilustran el problema:
Accedemos a la pantalla de configuración del teclado a través de las preferencias del sistema:
Acceso a la configuración del teclado
Tras pulsar sobre la opción «Teclado», acedemos a la pantalla de configuración del mismo:
Botón «Cambiar tipo de teclado…»
Pulsando el botón «Cambiar tipo de teclado…» accedemos al asistente de configuración:
Acceso a la configuración del teclado
Pulsamos el botón continuar, y el sistema tratará determinar nuestro tipo de teclado:
Asistente de configuración del teclado I
Finalmente el sistema nos muestra los resultados de la detección:
Asistente de configuración del teclado II
Si llegados a este punto, pulsamos el botón «Aceptar» y no hemos cambiado el tipo de teclado, el botón «Cambiar tipo de teclado…» de la pantalla de preferencias del teclado desaparecerá, tal y como se puede ver en la siguiente captura:
Botón «Cambiar tipo de teclado…» desaparecido
La solución a este problema es sencilla, y pasa por eliminar desde la consola todos los perfiles de teclado almacenados, para que el sistema los regenere. Para ello, lo primero que debemos hacer es acceder a una terminal. La forma más sencilla de hacer esto es mediante Launchpad, pulsando sobre su icono en el Dock:
En el campo de búsqueda de Launchpad escribiremos la palabra Terminal, tal y como aparece en la la siguiente captura:
Una vez abierta la consola, deberemos escribir el siguiente comando:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# sudo rm /Library/Preferences/com.apple.keyboardtype.plist
[/sourcecode]
El sistema nos pedirá una contraseña, y deberemos introducir la contraseña del usuario actual.
Finalmente, si nuestro teclado es externo, lo desconectaremos y lo volveremos a conectar.
Si nuestro teclado fuera interno (el caso de un portátil, por ejemplo) deberemos reiniciar el sistema.
En ambos casos, el botón «Cambiar Tipo de teclado…» volverá a estar disponible.
Uno de los grandes puntos a favor de Mate (el fork de Gnome 2 desarrollado por el equipo de Linux Mint) es la posibilidad de instalar y ejecutar el gestor de ventanas Compiz-Fusion. Para quienes no lo hayan visto o usado nunca, solamente diré que en cuanto a efectos visuales, está a años luz de cualquier otra cosa, incluyendo Windows Aero y su contrapartida en MAC OS X Exposé.
Para instalar Compiz-Fusion en nuestro sistema seguiremos los siguientes pasos:
Abriremos una terminal y escribiremos lo siguiente:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
$ sudo apt-get install compizconfig-settings-manager fusion-icon compiz-plugins-extra libdecoration0-dev
[/sourcecode]
Ejecutaremos el gestor de configuraciones de Mate para lo cual escribiremos en una terminal:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
$ sudo mateconf-editor
[/sourcecode]
Una vez abierta la herramienta buscaremos la siguiente ruta:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
desktop -> mate -> session -> required_components
[/sourcecode]
tal y como se muestra en la siguiente captura:
Dentro de esta ruta localizaremos la clave windowmanager y sustituiremos su valor marco por compiz, para lo cual, pulsaremos con el botón derecho sobre la clave, y seleccionaremos la opción Editar clave….
Una vez hechos el cambio, la configuración debe quedar así:
Para reemplazar Marco, el gestor de ventanas por defecto de Mate, por Compiz, abriremos una terminal y escribiremos lo siguiente:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
$compiz –replace
[/sourcecode]
con ello, Compiz debería empezar a ejecutarse y reemplazar por completo a Marco.
Parece ser que debido a un bug aún no resuelto, el comando del paso 3 no reemplaza por completo a Marco, por lo que tendremos que ejecutarlo en cada inicio de sesión.
Para ello, abriremos el dialogo de «Aplicaciones al inicio» localizado dentro del menu de preferencias tal y como muestra la siguiente captura:
Una vez abierta la aplicación, pulsaremos sobre el botón Añadir y en el dialogo que nos aparece, escribiremos los siguientes datos:
de forma que el dialogo se parezca a la siguiente captura:
para finalizar pulsamos sobre el botón añadir y cerramos la herramienta «Aplicaciones al inicio».
Una vez hecho esto, Compiz-fusion se ejecutará en casa inicio de sesión reemplazando a Marco.
El ultimo paso será configurar Compiz-Fusion para activar aquellas características que deseemos. Para ello abriremos la herramienta CompizConfig cuya localización en el menú se puede ver en la siguiente captura:
Desde esta aplicación podremos configurar todas aquellas características de Compiz-Fusion que deseemos. En este artículo configuraremos el famoso Cubo 3d
para lo cual activaremos las opciones:
tal y como se muestra en la siguiente captura:
Una vez hecho esto, configuraremos el número de escritorios que deseamos, es decir el número de caras de nuestro cubo. Para ello iremos a «Opciones Generales» y en la última pestaña «Tamaño de Escritorio» pondremos el número de escritorios que deseamos:
En este punto ya tendremos activo el plugin Cubo 3D, por lo que si pulsamos la combinación de teclas Control+ Alt+ Botón Izquierdo ratón y movemos el ratón, obtendremos un efecto tan espectacular como el de la siguiente captura:
También podemos pasar de una cada a otra del cubo con las teclas Control+Alt+Flecha (Izquierda o Derecha) lo que nos permitirá girar el cubo en una dirección u otra.
Este fin de semana, he decidido instalar en mi máquina el sistema operativo Linux Mint 14 «Nadia», y una de las cosas que he echado de menos nada más empezar ha sido la herramienta «Ubunut Tweak», que permite instalar fácilmente software de terceros, así como configurar un montón de características ocultas de los sistemas operativos basados en Ubuntu.
En este post, se instalará la versión 0.8.4 de «Ubuntu Tweak» en Linux Mint 14 «Nadia», para lo cual seguiremos los siguientes pasos:
Abriremos una terminal, y escribiremos lo siguiente:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# sudo add-apt-repository ppa:tualatrix/ppa
[/sourcecode]
Lo haremos con le clásico comando:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# sudo apt-get update
[/sourcecode]
A continuación instalaremos la herramienta con:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# sudo apt-get install ubuntu-tweak
[/sourcecode]
Por último ejecutaremos la aplicación a través del menú de Linux Mint, tal y como se muestra en la siguiente captura:
Haciendo click sobre el icono accederemos a la aplicación cuyo aspecto será similar a la siguiente captura:
Install Ubuntu Tweak 0.8.4 in Linux Mint 14
Recientemente en el trabajo, he tenido que desarrollar un triger para PostgresSQL algo complejo, así que la posibilidad de depurarlo paso a paso era muy desaeable. Sin embargo al intentar acceder al depurador desde pgAdminIII, resulta que la mayoría de las versiones de PostgreSQL para linux no disponen de esta funcionalidad.
Así pues, la única solución es compilar el plugin pldebugger desde las fuentes y añadirlo a PostgresSQL.
Sin embargo, para compilar este plugin es necesario disponer del código fuente de PostgreSQL, así que.. una vez metidos en faena… ¿porque que no aprovechar para instalar desde las fuentes la base de datos también?
Las versiones del software que se usaran en el articulo son las siguientes:
Para lograr nuestro objetivo, y partiendo de una instalación limpia de Debian 6 NetInstall seguiremos los siguientes pasos:
Lo primero que debemos hacer es instalar los paquetes esenciales para poder compilar en nuestra distribución. En el caso de Debian 6, deberemos ejecutar la siguiente instrucción:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# apt-get install build-essential
[/sourcecode]
Además debemos bajarnos algunas bibliotecas extra que necesitaremos para realizar la compilación de PostgreSQL con éxito:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# apt-get install libreadline5 libreadline5-dev zlib1g zlib1g-dev openssl libssl-dev
[/sourcecode]
Las bibliotecas instaladas y su propósito son las siguientes:
También necesitaremos el cliente Git para poder descargar directamente del repositorio de pldebugger los fuentes del plugin:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# apt-get install git
[/sourcecode]
El siguiente paso es obtener el código fuente de PostgreSQL, para lo cual usaremos el comando wget:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# wget http://ftp.postgresql.org/pub/source/v9.2.4/postgresql-9.2.4.tar.gz
[/sourcecode]
A continuación descomprimimos el fichero tar.gz que nos hemos descargado con la instrucción:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# tar xvzf ./postgresql-9.2.4.tar.gz
[/sourcecode]
Obtendremos el código fuente del plugin pldebugger desde los repositorios del proyecto con el comando git:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# git clone git://git.postgresql.org/git/pldebugger.git
[/sourcecode]
Siguiendo las instrucciones de instalación del plugin, copiamos el directorio que acabamos de descargar al directorio /comtrib del arbol de directorios del código fuente de PostgresSQL:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# cp ./pldebugger/ ./postgresql-9.2.4/contrib/ -R
[/sourcecode]
El siguiente paso es establecer las opciones de compilación. Para ello entraremos en el directorio donde están las fuentes de PostgreSQL:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# cd ./postgresql-9.2.4
[/sourcecode]
y escribiremos el siguiente comando:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# ./configure -with-openssl -enable-thread-safety
[/sourcecode]
Las opciones de configuración establecidas son las siguientes:
Una vez establecidas las opciones de configuración sin errores, procedemos a compilar el código fuente de PostgresSQL, para lo cual bastara llamar al comando make:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# make
[/sourcecode]
Si la compilación se ha completado sin errores, procederemos a instalar los binarios de la aplicación:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# make install
[/sourcecode]
Con ello ya tenemos instalado PostgreSQL en nuestra máquina.
Para continuar , debemos compilar el pluging pldebugger. Para ello debemos ingresar en el directorio dentro del árbol de fuentes de PostgreSQL donde copiamos el código fuente del pluging. Si hemos seguido al pie de la letra las instrucciones de este articulo, deberíamos estar en el directorio ./postgresql-9.2.4, por lo que continuaremos ejecutando los siguientes comandos:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# cd ./contrib/pldebugger/
[/sourcecode]
y compilamos el plugin.
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# make
[/sourcecode]
Instalar el plugin es tan sencillo como ejecutar el siguiente comando:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# make install
[/sourcecode]
El siguiente paso es editar el fichero de configuración de bash /etc/profile para añadir la ruta de los binarios de PostgresSQL a la variable PATH del sistema.Para ello añadiremos al fichero la línea:
[sourcecode language=»text» gutter=»false» wraplines=»false»]
PATH="/usr/local/pgsql/bin":$PATH
[/sourcecode]
dejándolo de forma parecida a este:
[sourcecode language=»text» gutter=»true» wraplines=»false» highlight=»9″]
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), …).
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
PATH="/usr/local/pgsql/bin":$PATH
export PATH
if [ "$PS1" ]; then
if [ "$BASH" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1=’\h:\w\$ ‘
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "`id -u`" -eq 0 ]; then
PS1=’# ‘
else
PS1=’$ ‘
fi
fi
fi
# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
[/sourcecode]
Si todo ha ido bien, al cerrar sesión y volver a entrar con nuestro usuario, el comando :
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# echo $PATH
[/sourcecode]
nos debe retornar algo parecido a esto:
[sourcecode language=»text» gutter=»false» wraplines=»false»]
/usr/local/pgsql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[/sourcecode]
donde vemos que en primer lugar esta incluida la ruta a los binarios de PostgresSQL.
A continuación creamos el usuario postgres<+/em> que será el usuario bajo el cual se ejecute la base de datos:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# adduser postgres
[/sourcecode]
Cuando se nos pregunte la contraseña le podremos la que deseemos, pero deberemos recordarla, ya que se nos pedirá en un futuro.
El siguiente paso será crear e inicializar el directorio de datos, donde PostgreSQL guardará la información:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# mkdir /usr/local/pgsql/data
[/sourcecode]
Hacemos propietario de este directorio al usuario postgres:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# chown postgres /usr/local/pgsql/data
[/sourcecode]
A continuación asumimos la identidad del usuario postgres para inicializar el directorio de datos:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# su – postgres
[/sourcecode]
y finalmente inicializamos el directorio de datos:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
$ initdb -D /usr/local/pgsql/data
[/sourcecode]
Llegados a este punto, y si todo ha ido bien, el deberemos ver en nuestra terminal algo parecido a esto
[sourcecode language=»text» gutter=»false» wraplines=»false»]
Success. You can now start the database server using:
postgres -D /usr/local/pgsql/data
or
pg_ctl -D /usr/local/pgsql/data -l logfile start
[/sourcecode]
En este momento, tal y como indica el sistema podremos arrancar la base de datos en primer plano con:
[sourcecode language=»text» gutter=»false» wraplinec=»false» highlight=»1″]
# postgres -D /usr/local/pgsql/data
[/sourcecode]
y detenerla simplemente pulsando la combinación de teclas Ctr-C
Si deseamos arrancar la base de datos en segundo plano, lo haremos usando la segunda opción:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# pg_ctl -D /usr/local/pgsql/data -l logfile start
[/sourcecode]
y la detendremos con el siguiente comando:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
$ pg_ctl -D /var/pgsql/data stop -m fast
[/sourcecode]
Para configurar la contraseña de acceso del usuario postgres a la base de datos, lo primero que habrá que hacer lógicamente es iniciar el servidor:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# pg_ctl -D /usr/local/pgsql/data -l logfile start
[/sourcecode]
Una vez iniciado el servidor, y manteniendo en el sistema la identidad del usuario postgres, accederemos al interprete de ordenes de PostgreSQL:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
$psql
[/sourcecode]
Una vez dentro, escribiremos:
[sourcecode language=»sql» gutter=»false» wraplines=»false»]
postgres=# alter user postgres with password ‘passwd’;
[/sourcecode]
donde passwd es la nueva contraseña que deseamos poner.El sistema debe responder con un:
[sourcecode language=»sql» gutter=»false» wraplines=»false»]
ALTER ROLE
postgres=#
[/sourcecode]
Salimos del cliente de linea de ordenes con la orden:
[sourcecode language=»text» gutter=»false» wraplines=»false»]postgres=#\q [/sourcecode]
Y salimos de la cuenta en el sistema del usuario postgres con un simple:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]$exit [/sourcecode]
Para hacer que PostgreSQL se ejecute automáticamente al iniciar el sistema, debemos copiar desde el directorio /contrib/start-scripts del arbol del código fuente de postgreSQL, el fichero denominado linux al directorio /etc/init.d. En este punto de la instalación, deberíamos estar en el directorio ./postgresql-9.2.4/contrib/pldebugger, por lo que ejecutaremos el siguiente comando:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# cp ../start-scripts/linux /etc/init.d/postgresql
[/sourcecode]
Una vez copiado el script, debemos editarlo para añadirle las etiquetas LSB. Para ello, añadiremos al comienzo del fichero /etc/init.d/posgresql, justo debajo de #! /bin/sh las siguientes líneas:
[sourcecode language=»text» gutter=»true» wraplines=»false» firstline=»2″]
### BEGIN INIT INFO
# Provides: PostgreSQL
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start Postgresql at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
[/sourcecode]
Además, debemos dar permisos de ejecución al script, con el siguiente comando:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# chmod 755 /etc/init.d/postgresql
[/sourcecode]
Con ello, podremos arrancar y parar postgresql con el tipico comando:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# /etc/init.d/postgresql accion
[/sourcecode]
donde accion representa alguna de las siguientes posibles acciones:
Por último, debemos añadir el script de inicio de PostgreSQL a los scripts de arranque del sistema, para lo cual ejecutaremos el siguiente comando:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# update-rc.d postgresql defaults
[/sourcecode]
Si por alguna razón deseamos eliminar el script de la secuencia de arranque, deberemos ejecutar el comando:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# update-rc.d -f postgresql remove
[/sourcecode]
El siguiente paso es editar el fichero /usr/local/pgsql/data/postgresql.conf para, por un lado permitir que el servidor escuche por todas las interfaces de red, y por otro lado, indicarle que cargue el plugin pldebugger.
Para permitir que el servidor escuche por todas las interfaces de red, buscaremos la línea:
[sourcecode language=»text» gutter=»true» wraplines=»false» firstline=»59″]#listen-addresses = ‘localhost’ [/sourcecode]
(suele ser la línea 59), la copiamos debajo, la descomentamos, y la modificamos quedando :
[sourcecode language=»text» gutter=»true» wraplines=»false» firstline=»60″]listen-addresses = ‘*’ [/sourcecode]
Si se quisera que PostgreSQL escuchase sólo las peticiones de determinadas IPs, bastaría con poner estas IPs separadas por comas, y todo el conjunto entre comillas simples. Por ejemplo:
[sourcecode language=»text» gutter=»true» wraplines=»false» firstline=»60″]
listen-addresses = ‘192.168.0.2,192.168.0.3’
[/sourcecode]
Nota: por custiones de seguridad no se recomienda permitir el acceso desde cualquier máquina.
Para indicarle a PostgreSQL que cargue el plugin pldebugger al arrancar, buscaremos la línea:
[sourcecode language=»text» gutter=»true» wraplines=»false» firstline=»127″]
#shared_preload_libraries = » # (change requires restart)
[/sourcecode]
(suele ser la línea 127), la copiamos debajo, la descomentamos, y la modificamos quedando :
[sourcecode language=»text» gutter=»true» wraplines=»false» firstline=»128″]
shared_pbeload_libraries = ‘$libdir/plugin_debugger’ # (change requires restart)
[/sourcecode]
Al compilar desde las fuentes, PostgreSQL es muy poco restrictivo a la hora de gestionar permisos, ya que por defecto, permite a todos los usuarios del sistema el acceso sin contraseña. Por ello deberemos restringir ciertos permisos locales.
Para ello debemos editar el fichero /usr/local/pgsql/data/pg_hba.conf
Buscaremos la línea cuyo contenido es:
[sourcecode language=»text» gutter=»true» wraplines=»false» firstline=»84″]local all all trust[/sourcecode]
y la modificamos de forma que quede:
[sourcecode language=»text» gutter=»true» wraplines=»false» firstline=»84″]local all all md5[/sourcecode]
Con ello permitimos el acceso a cualquier cuenta de usuario desde la maquina local siempre que se especifique una contraseña encriptada mediante md5. Ello implica que al reinicar el servidor podremos acceder al cliente de linea de ordenes de PostgreSQL desde cualquier cuenta de usuario con la cuenta de postgres, escribiendo:
[sourcecode language=»text» gutter=»false» wraplines=»false»]$psql -U postgres -W [/sourcecode]
Por último, debemos configurar los permisos de acceso remoto. Se trata de responder a las siguientes preguntas:
En este post, daremos permisos a todos los usuarios de la base de datos, para conectarse a todas las bases de datos, desde cualquier IP, usando una contraseña encriptada con MD5.
Esto lo lograremos editando de nuevo el fichero /usr/local/pgsql/data/pg_hba.conf y localizando la línea:
[sourcecode language=»text» gutter=»true» wraplines=»false» firstline=»86″]
host all all 127.0.0.1/32 trust
[/sourcecode]
y la modificandola forma que quede:
[sourcecode language=»text» gutter=»true» wraplines=»false» firstline=»86″]
host all all 0.0.0.0 0.0.0.0 md5
[/sourcecode]
Una explicación sencilla de esta regla de permisos del fichero /etc/postgresql/9.2/main/pg_hba.conf seria:
Para una mayor información sobre como funciona el fichero /etc/postgresql/9.2/main/pg_hba.conf se puede consultar la documentación oficial en castellano en la dirección: http://www.postgresql.org/docs/9.2/interactive/auth-pg-hba-conf.html
Finalmente inhabilitaremos las conexiones locales a través de IP6, para lo cual, localizaremos la línea:
[sourcecode language=»text» gutter=»true» wraplines=»false» firstline=»88″]
host all all ::1/128 trust
[/sourcecode]
y la comentaremos de forma que quede:
[sourcecode language=»text» gutter=»true» wraplines=»false» firstline=»88″]
#host all all ::1/128 trust
[/sourcecode]
Para comprobar que todo ha ido bien, que el script de autoarranque esta correctamente instalado, y que las configuraciones definidas en la base de datos son correctas, Debemos reiniciar la máquina servidora. Para ello, ejecutaremos las siguiente instrucción:
[sourcecode language=»text» gutter=»false» wraplines=»false» highline=»1″]
# reboot
[/sourcecode]
Para probar el depuraror, lo primero que hemos de hacer es crear una base de datos de prueba,con una tabla de prueba, y con un procedimiento almacenado de prueba que podamos depurar.
Accedemos al interprete de comandos de PostgresSQL con la siguiente instrucción:
[sourcecode language=»text» gutter=»false» wraplines=»false» highline=»1″]
$ psql -U postgres -W
[/sourcecode]
Una vez dentro del interprete de comandos de PostgresSQL creamos la base de datos con el siguiente comando:
[sourcecode language=»sql» gutter=»false» wraplines=»false»]
postgres=# CREATE DATABASE prueba_debugger WITH ENCODING=’UTF8′;
[/sourcecode]
Nos conectamos a la base de datos que acabamos de crear:
[sourcecode language=»sql» gutter=»false» wraplines=»false»]
postgres=# \c prueba_debugger
[/sourcecode]
y el sistema responde con:
[sourcecode language=»sql» gutter=»false» wraplines=»false»]
You are now connected to database "prueba_debugger".
[/sourcecode]
A continuación creamos la la tabla de pruebas
[sourcecode language=»sql» gutter=»false» wraplines=»false»]
prueba_debugger=# CREATE TABLE tabla_prueba (
Id BIGSERIAL PRIMARY KEY ,
Valor VARCHAR (255) default »
);
[/sourcecode]
y el sistema responde con:
[sourcecode language=»sql» gutter=»false» wraplines=»false»]
NOTICE: CREATE TABLE will create implicit sequence "tabla_prueba_id_seq" for serial column "tabla_prueba.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "tabla_prueba_pkey" for table "tabla_prueba"
CREATE TABLE
[/sourcecode]
Seguimos creando objetos en la base de datos de prueba. En este punto crearemos un procedimiento almacenado:
+
[sourcecode language=»sql» gutter=»false» wraplines=»false»]
prueba_debugger=#
CREATE OR REPLACE FUNCTION tabla_prueba_trigger() RETURNS TRIGGER AS $tabla_prueba_trigger$
DECLARE
sValor VARCHAR (255):= NEW.Valor;
iId INTEGER:= NEW.Id;
iCalculo INTEGER:= 0;
BEGIN
RAISE NOTICE ‘———- INICIO prueba_debugger.tabla_prueba_trigger() ———-‘;
RAISE NOTICE ‘———- => El nuevo registro tiene un Id: %’,iId;
RAISE NOTICE ‘———- => El nuevo registro tiene un Valor: %’,sValor;
iCalculo=iId +5;
RAISE NOTICE ‘———- => El Id del nuevo registro +5 es igual a: %’,iCalculo;
RAISE NOTICE ‘———- FIN prueba_debugger.tabla_prueba_trigger() ————-‘;
NEW.Id= iCalculo;
RETURN NEW;
END;
[/sourcecode]
Nota: para introducir el procedimiento almacenado desde la consola de PostgreSQL copiaremos todo el procedimiento almacenado y pulsaremos la tecla Enter.
A continuación le indicamos a PostgreSQL el lenguaje en el que está escrito el procedimiento almacenado:
[sourcecode language=»sql» gutter=»false» wraplines=»false»]
prueba_debugger=# $tabla_prueba_trigger$ LANGUAGE plpgsql;
[/sourcecode]
Despues de introducir el comando anterior y pulsar la tecla Enter, el sistema debe responder con:
[sourcecode language=»sql» gutter=»false» wraplines=»false»]
CREATE FUNCTION
[/sourcecode]
Crearemos un disparador que lanzará el procedimiento almacenado después de cada inserción:
[sourcecode language=»sql» gutter=»false» wraplines=»false»]
prueba_debugger=# CREATE TRIGGER update_tabla_prueba AFTER INSERT
ON tabla_prueba FOR EACH ROW EXECUTE PROCEDURE tabla_prueba_trigger();
[/sourcecode]
y el sistema responde con:
[sourcecode language=»sql» gutter=»false» wraplines=»false»]
CREATE TRIGGER
[/sourcecode]
Para poder depurar los procedimientos almacenados, es necesario que antes hayamos ejecutado en la base de datos donde queremos hacer la depuración el siguiente comando:
[sourcecode language=»sql» gutter=»false» wraplines=»false»]
prueba_debugger=# CREATE EXTENSION pldbgapi;
[/sourcecode]
el sistema responderá con:
[sourcecode language=»sql» gutter=»false» wraplines=»false»]
CREATE EXTENSION
[/sourcecode]
Una vez ejecutado el comando, ya podemos conectarnos a la base de datos desde pgAdminIII y usar la función de depuración.
Nota: Debemos ejecutar este comando en cada base de datos donde deseemos usar la funcionalidad de depuración.
&ld;/p>
Finalmente, obtendremos la recompensa a nuestro esfuerzo, al abrir pgAdminIII, abrir la base de datos de prueba que hemos creado, abrir el esquema public, abrir la tabla tabla_prueba desplegar la sección Trigger-Functions, y sobre nuestra función, hacer click con el boton derecho, y seleccionar la opción «Set breakpoint»
En la siguiente captura podemos ver el depurador en acción:
Así, si antes teníamos eth0, al sustituir la tarjeta por una nueva, esta pasa a ser eth1. Este comportamiento tiene la ventaja de que permite añadir varias interfaces de red de forma fácil, pero en el caso de la sustitución de una interfáz de red por otra, rompe la configuración de red, ya que las directivas definidas en el fichero /etc/networt/interfaces
dejan de ser aplicables.
Para solucionar este inconveniente, debemos editar el fichero acabado en persistent-net.rules del directorio /etc/udev/rules.d/
En él, se asocia a cada dirección MAC un nombre de dispositivo (del tipo ethx), por lo que deberemos eliminar la línea que hacia referencia a eth0, y editar la línea que hace referencia a eth1, para que haga erferencia a eth0.
Así, si nuestro fichero de reglas tiene un aspecto como este:
[sourcecode language=»text» gutter=»true» wraplines=»false» highlight=»7,8″]
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM==»net», ACTION==»add», DRIVERS==»?*», ATTR{address}==»08:00:27:65:9a:9f», ATTR{dev_id}==»0x0″, ATTR{type}==»1″, KERNEL==»eth*», NAME=»eth0″
# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM==»net», ACTION==»add», DRIVERS==»?*», ATTR{address}==»08:00:27:37:bd:91″, ATTR{dev_id}==»0x0″, ATTR{type}==»1″, KERNEL==»eth*», NAME=»eth1″
[/sourcecode]
deberemos elminar las líneas 7, y 8, y modificar la línea 10, para dejar nuestro fichero como sigue:
[sourcecode language=»text» gutter=»true» wraplines=»false» highlight=»8″]
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM==»net», ACTION==»add», DRIVERS==»?*», ATTR{address}==»08:00:27:37:bd:91″, ATTR{dev_id}==»0x0″, ATTR{type}==»1″, KERNEL==»eth*», NAME=»eth0″
[/sourcecode]
Finalmente reiniciamos la máquina con el típico
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# restart
[/sourcecode]
Con ello, nuestra configuración de red, debería quedar restablecida.
Una de las cosas más comunes que se hacen en cualquier ordenador es configurar sus interfaces de red. En Debian 6 podemos configurar nuestras interfaces de red mediante los siguientes pasos:
Lo primero que debemos hacer es decidir que tipo de configuración vamos a implementar. Básicamente tenemos dos formas de configurar nuestras interfaces de red en Debian 6:
Con esta configuración la interfaz de red tomará su configuración automáticamente de un servidor DHCP. Para ello, debemos añadir al fichero /etc/network/interfaces las siguientes líneas:
[sourcecode language=»text» gutter=»true» wraplines=»false» highlight=»9,10″]
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# Interfaz de red principal
allow-hotplug eth0
iface eth0 inet dhcp
[/sourcecode]
donde eth0 es el nombre de la primera interfaz de red. Las directivas introducidas y su significado son las siguientes:
En este tipo de configuración se establecerán manualmente todos los parámetros de red de la interfaz. Para lograrlo se deben añadir en el fichero /etc/network/interfaces las siguientes líneas:
[sourcecode language=»text» gutter=»true» wraplines=»false» highlight=»9,10,11,12,13,14,15″]
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# Interfaz de red principal
allow-hotplug eth0
iface eth0 inet static
address 192.168.0.99
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
[/sourcecode]
donde eth0 es el nombre de la primera interfaz de red. Las directivas introducidas y su significado son las siguientes:
Para levantar la interfaz de red, podemos usar bien el comando ifup o bien simplemente reiniciar la máquina con el comando reboot.
Para levantar la interfaz de red de nuestro ejemplo con el comando ifup simplemente escribiremos en la terminal:
[sourcecode language=»text» gutter=»false» wraplines=»false» highlight=»1″]
# ifup eth0
[/sourcecode]
La siguiente captura de pantalla muestra como debería el fichero /etc/network/interfaces en un sistema con dos interfaces de red, una eth0, con IP dinámica y la otra, eth1 con IP estática.