jueves, 22 de diciembre de 2011

Activar las malditas URLs limpias en Drupal 7.10

Sistema -> Debian 6.0 64bits con Apache2

cd /etc/apache2/sites-available

vi default

Cambiar:

    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

Por:

    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

En el caso de que drupal este instalado en:

/var/www

domingo, 18 de diciembre de 2011

Como forzar a tomcat6 a usar el puerto 80 en debian 6.0 64bits

vi /etc/tomcat6/server.xml

Bucar:

port="8080"

Substituir por:

port="80"

vi /etc/default/tomcat6

Buscar:

#AUTHBIND=no

Substituir por:

AUTHBIND=yes

Reiniciar tomcat.

Como forzar tomcat6 a escuchar en ipv4 debian 6.0 64

vi /etc/default/tomcat6


Modificar:


JAVA_OPTS="-Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC"


a:


JAVA_OPTS="-Djava.net.preferIPv4Stack=true -Djava.awt.headless=true 
          -Xmx128m -XX:+UseConcMarkSweepGC"

Reiniciar tomcat. 

sábado, 10 de septiembre de 2011

Como hacer port forwarding a través de un tunel ssh

Redirigimos un puerto "puerto1" en la "maquina1" a otro puerto "puerto2" en la "maquina2":

user@maquina1$ ssh user@maquina2 -L puerto1:maquina2:puerto2 -g

Ahora el puerto "puerto2" de la maquina "maquina2" es accesible por medio del puerto "puerto1" de la maquina "maquina1".

lunes, 5 de septiembre de 2011

Como instalar Oracle XE en Debian 6.0 de 64bits

Primero obtenemos el material que vamos a necesitar:

sudo apt-get install ia32-libs

sudo apt-get install libaio1

Obtenemos el Oracle XE versión 32bits:

wget http://oss.oracle.com/debian/dists/unstable/non-free/binary-i386/oracle-xe-universal_10.2.0.1-1.1_i386.deb

Procedemos a su instalación:

sudo dpkg --force-architecture -i oracle-xe-universal_10.2.0.1-1.1_i386.deb

Añadimos las variables de entorno a nuestro perfil de usuario y al perfil por defecto de creación de usuarios:

vi ~/.bashrc

export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export ORACLE_OWNER=oracle
export ORACLE_SID=XE
export LSNR=$ORACLE_HOME/bin/lsnrctl
export SQLPLUS=$ORACLE_HOME/bin/sqlplus
export PATH=$ORACLE_HOME/bin:$PATH

vi /etc/skel/.bashrc

export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export ORACLE_OWNER=oracle
export ORACLE_SID=XE
export LSNR=$ORACLE_HOME/bin/lsnrctl
export SQLPLUS=$ORACLE_HOME/bin/sqlplus
export PATH=$ORACLE_HOME/bin:$PATH

viernes, 26 de agosto de 2011

Como redimensionar la swap en Debian 6

Verificamos si esta activada la swap:

free

             total       used       free     shared    buffers     cached
Mem:       1027264      64220     963044          0       6012      19464
-/+ buffers/cache:      38744     988520
Swap:       522232          0     522232

Antes que nada hay que desactivarla:

sudo swapoff -a

free

             total       used       free     shared    buffers     cached
Mem:       1027264      63388     963876          0       5984      18732
-/+ buffers/cache:      38672     988592
Swap:            0          0          0

Comprobamos en que device esta montada la swap mirando el fichero "fstab" de /etc:

cat /etc/fstab

# swap was on /dev/sdj1 during installation
UUID=f8ff33ba-79ad-4fc0-887e-6f701e78fd3d none            swap    sw              0       0

Comprobamos a que device corresponde el UUID:

ls -l /dev/disk/by-uuid/

lrwxrwxrwx 1 root root 10 ago 26 10:18 f8ff33ba-79ad-4fc0-887e-6f701e78fd3d -> ../../sdj1

Comprobamos de cuanto espacio libre disponemos:

sudo parted /dev/sdj print free

Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdj: 1342MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
        32,3kB  1049kB  1016kB           Free Space
 1      1049kB  536MB   535MB   primary  linux-swap(v1)
        536MB   1342MB  806MB            Free Space

Una vez deshabilitada borramos la partición:

sudo parted /dev/sdj rm 1

Creamos una nueva partición incluyendo el sistema de ficheros con:

sudo parted /dev/sdj mkpart primary linux-swap 1049kB 1342MB

Comprobamos como queda la particion:

sudo parted /dev/sdj print free

Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdj: 1342MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
        32,3kB  1049kB  1016kB           Free Space
 1      1049kB  1342MB  1341MB  primary  linux-swap(v1)

sudo fdisk -l /dev/sdj

Disk /dev/sdj: 1342 MB, 1342177280 bytes
46 heads, 10 sectors/track, 5698 cylinders
Units = cylinders of 460 * 512 = 235520 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000d99d3

   Device Boot      Start         End      Blocks   Id  System
/dev/sdj1               5        5699     1309696   82  Linux swap / Solaris

Generamos la swap:

sudo mkswap /dev/sdj1

Setting up swapspace version 1, size = 1309692 KiB
no label, UUID=7c7cfafe-03b2-4340-9ed3-3bef3a2be6b7

Esto genera un nuevo UUID:

ls -l /dev/disk/by-uuid/

lrwxrwxrwx 1 root root 10 ago 26 10:18 7c7cfafe-03b2-4340-9ed3-3bef3a2be6b7 -> ../../sdj1

Tras esto debemos actualizar la entrada para la swap del fichero "fstab" en /etc:

sudo vi /etc/fstab

# swap was on /dev/sdj1 during installation
UUID=7c7cfafe-03b2-4340-9ed3-3bef3a2be6b7 none            swap    sw              0       0

Una vez actualizado el fichero podemos reactivar la swap y ver como queda:

sudo swapon -a

free

             total       used       free     shared    buffers     cached
Mem:       1027264      66000     961264          0       6132      20704
-/+ buffers/cache:      39164     988100
Swap:      1309688          0    1309688

sábado, 20 de agosto de 2011

Como buscar exclusivamente los ficheros y directorios ocultos con find

find . -regex '.*/\..*'

La expresión regular '.*/\..*' se puede interpretar como:

.* - cualquier cadena de caracteres
/  - barra
\. - punto
.* - cualquier cadena de caracteres

Copiar ficheros preservando los atributos

A veces por ejemplo queremos hacer replicas de puntos de montaje como el /usr para después desmontarlo y guarrear con el montando la copia temporalmente. Si decidimos realizar la replica copiando /usr hemos de tener en cuenta los atributos de los ficheros que contiene o mas tarde herramientas como sudo no funcionaran, por lo tanto:

sudo cp --preserve=all -R $origen $destino

viernes, 19 de agosto de 2011

Como redimensionar una partición ext4 sin perdida de datos

Este procedimiento es valido para puntos de montaje por decirlo de algún modo secundarios del sistema, por ejemplo el /srv.

df -h /srv

Filesystem            Size  Used Avail Use% Mounted on
/dev/sdg1             123M  5,6M  111M   5% /srv

Primero desmontamos el punto de montaje del dispositivo en el que se halla montado:

sudo umount /srv

Miramos como esta el asunto y nos anotamos los parámetros "Number" y "Start" de la partición a redimensionar y el parámetro "End" del espacio libre que nos queda:

sudo parted /dev/sdg print free

Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdg: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
        32,3kB  1049kB  1016kB           Free Space
 1      1049kB  133MB   132MB   primary  ext4
        133MB   2147MB  2014MB           Free Space

Borramos la partición y la volvemos a crear usando los parámetros "Start" y "End" que hemos obtenido como referencia:

sudo parted /dev/sdg rm 1
sudo parted /dev/sdg mkpart primary ext4 1049kB 2147MB


Volvemos a mirar como queda:

sudo parted /dev/sdg print free

Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdg: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
        32,3kB  1049kB  1016kB           Free Space
 1      1049kB  2147MB  2146MB  primary  ext4

Obtenemos los bloques de la nueva partición:

sudo fdisk -l /dev/sdg

Disk /dev/sdg: 2147 MB, 2147483648 bytes
22 heads, 16 sectors/track, 11915 cylinders
Units = cylinders of 352 * 512 = 180224 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000486b3

   Device Boot      Start         End      Blocks   Id  System
/dev/sdg1               6       11916     2096128   83  Linux

Chequeamos el sistema de ficheros:

sudo e2fsck -f /dev/sdg1

e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdg1: 15/516096 files (0.0% non-contiguous), 72236/2096128 blocks

Expandimos el sistema de ficheros:

sudo resize2fs /dev/sdg1 2096128

resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/sdg1 to 2096128 (1k) blocks.
The filesystem on /dev/sdg1 is now 2096128 blocks long.

Montamos el sistema de ficheros y miramos como queda:

sudo mount /dev/sdg1 /srv

df -h /srv

Filesystem            Size  Used Avail Use% Mounted on
/dev/sdg1             2,0G  7,0M  1,9G   1% /srv

Como introducir un carácter de nueva linea desde terminal en bash

printf "\n"

Como averiguar la ip externa desde la linea de comandos

curl -s checkip.dyndns.org | grep -Eo '[0-9\.]+'

Desactivar servicios en Debian 6.0

update-rc.d $servicio disable

Copy/Paste con vi

Posicionar el cursor en la linea del texto a copiar.

"yy"

Posicionar el cursor en la linea donde se quiere pegar el texto:

"P"

jueves, 18 de agosto de 2011

Como instalar TOra con proveedor de conexion para oracle

Base, Xubuntu 11.04 (cat /etc/issue), virtualbox 4.0.12r72916 (VBoxManage -v), rpms del cliente de oracle:

oracle-instantclient11.2-basiclite-11.2.0.2.0.x86_64.rpm
oracle-instantclient11.2-devel-11.2.0.2.0.x86_64.rpm
oracle-instantclient11.2-sqlplus-11.2.0.2.0.x86_64.rpm

Y por ultimo TOra 2.1.3-1 (apt-get source tora).

Como "root" primero instalamos los rpms del oracle-instantclient desde donde los hemos descargado:

for n in $(ls oracle-*.rpm); do alien $n; done;

dpkg -i *.deb

Esto instala oracle-instantclient en los siguientes directorios:

/usr/lib/oracle/11.2/client64
/usr/include/oracle/11.2/client64

Creamos un link simbólico en el directorio /usr/lib/oracle/11.2/client64 que apunte a /usr/include/oracle/11.2/client64:

ln -s /usr/include/oracle/11.2/client64 /usr/lib/oracle/11.2/client64/include

Añadimos las variables de entorno a nuestro perfil de usuario y al perfil por defecto de creación de usuarios:

vi ~/.bashrc

export ORACLE_BASE=/usr/lib/oracle/11.2
export ORACLE_HOME=$ORACLE_BASE/client64
export PATH=$PATH:$ORACLE_HOME/bin
export TNS_ADMIN=/etc/oracle
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/include/oracle/11.2/client64:
$ORACLE_HOME/lib

vi /etc/skel/.bashrc

export ORACLE_BASE=/usr/lib/oracle/11.2
export ORACLE_HOME=$ORACLE_BASE/client64
export PATH=$PATH:$ORACLE_HOME/bin
export TNS_ADMIN=/etc/oracle
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/include/oracle/11.2/client64:
$ORACLE_HOME/lib

Creamos el directorio /etc/oracle e inicializamos las variables de entorno en esta sesión:

mkdir /etc/oracle
. $HOME/.bashrc o source $HOME/.bashrc

Instalamos la librería libaio1:

apt-get install libaio1

Y comprobamos si todo ha ido bien ejecutando:
 
sqlplus -v

Salida:

SQL*Plus: Release 11.2.0.2.0 Production

Ahora ya estamos preparados para instalar Tora, primero descargamos los sources:

apt-get source tora

Comprobamos las dependencias:

apt-get build-dep tora

Construimos el .deb:

cd tora-2.1.3
dpkg-buildpackage -us -uc

Si la compilacion ha ido bien instalamos el .deb generado:

cd ..
dpkg -i tora_2.1.3-1_amd64.deb
 
Comprobamos que funciona ejecutando desde un terminal:

tora
 
Para evitar que los updates del sistema nos estropeen lo realizado, ponemos en hold el paquete:

echo "tora hold" | dpkg --set-selections

Lo comprobamos con:
 
dpkg -s tora

Salida:
Package: tora
Status: hold ok installed
Priority: optional
Section: misc
Installed-Size: 12968
Maintainer: Debian KDE Extras Team <pkg-kde-extras@lists.alioth.debian.org>
Architecture: amd64
Version: 2.1.3-1
Depends: libqt4-sql (>= 4:4.5.3), libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libpq5 (>= 8.4~0cvs20090328), libqscintilla2-5, libqt4-network (>= 4:4.5.3), libqt4-xml (>= 4:4.5.3), libqtcore4 (>= 4:4.7.0~beta1), libqtgui4 (>= 4:4.5.3), libstdc++6 (>= 4.5), oracle-instantclient11.2-basiclite
Description: A graphical toolkit for database developers and administrators
 Tora features a schema browser, SQL worksheet, PL/SQL editor & debugger,
 storage manager, rollback segment monitor, instance manager, and SQL output
 viewer. Via qt4 it can access PostgreSQL and MySQL directly. Any other
 database systems can be accessed via ODBC.
Homepage: http://www.torasql.com

Como crear un lanzador para TOra

Depende de como instalemos TOra los launchers funcionan o no. Si instalamos del repo funcionaran. Si descargamos los sources y generamos un deb con soporte para oracle no funcionaran. Así que en ese caso crearemos un script "lanza_tora.sh" para el arranque de la aplicacion TOra con:

xavi@xavi-VirtualBox:~$ vi lanza_tora.sh

#!/bin/bash
export ORACLE_BASE=/usr/lib/oracle/11.2
export ORACLE_HOME=$ORACLE_BASE/client64
export PATH=$PATH:$ORACLE_HOME/bin
export TNS_ADMIN=/etc/oracle
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/include/oracle/11.2/client64:
$ORACLE_HOME/lib
/usr/bin/tora

Las variables de entorno pueden variar dependiendo del cliente de oracle que instalamos y donde lo instalamos.

Una vez generado el script editamos el fichero "tora.desktop" que hay en "/usr/share/applications" y modificamos la linea del Exec:

vi /usr/share/applications/tora.desktop

Exec=/home/xavi/lanza_tora.sh

Esto hará que el launcher del menú de aplicaciones funcione correctamente. Una vez llegados a este punto ya podemos crear el launcher en el escritorio que tomara por defecto los valores del fichero "tora.desktop" de "/usr/share/applications".

miércoles, 17 de agosto de 2011

martes, 16 de agosto de 2011

Clonar y redimensionar un disco duro virtual con virtualbox

Es importante tener en cuenta a la hora del redimensionado que el disco sea un disco dinámico y que solo puede expandirse. Además es necesario que no exista ningún snapshot de la maquina virtual, es caso de existir es necesario borrarlos antes del redimensionado.

Clonacion:

VBoxManage clonehd $1.vdi $2.vdi

Redimensionado:

VBoxManage modifyhd $2.vdi --resize $tamaño_en_MB

Montar un share folder de virtualbox en debian

mount -t vboxsf $share_name $mount_point

Mostrar números de lineas con vi

Una vez editado el fichero, para activarlo:

:set nu

Para desactivarlo:

:set nu!

Para incluirlo en la configuración de vi, editar o crear el fichero "~/.vimrc" e incluir la linea:

set number

Explicación de la falla de la creación de fichero md5sums para paquetes deb

El siguiente comando nos permite crear el fichero md5sums con los hashes md5 de los ficheros que contiene el paquete deb.

find . -type f ! -regex '.*\.hg.*' ! -regex '.*?debian-binary.*' ! -regex '.*?DEBIAN.*' -printf '%P ' | xargs md5sum > DEBIAN/md5sums

Vayamos por partes:

find . -type f

Esta parte del comando listara todos los ficheros, no directorios a partir de la ruta en que nos encontremos, recursivamente.

!

Operador de negacion, que debe ser seguido por una expresion.

-regex '.*\.hg.*'

Expresión regular, se puede interpretar como "ficheros que cumplen el patrón '$patrón'.

! -regex '.*\.hg.*'

Se puede interpretar como "ficheros que no cumplen el patrón". 

! -regex '.*\.hg.*' ! -regex '.*?debian-binary.*' ! -regex '.*?DEBIAN.*'

Se puede interpretar como "ficheros que no cumplen el patrón '.*\.hg.*', ni el patrón '.*?debian-binary.*', ni el patrón '.*?DEBIAN.*'

find . -type f ! -regex '.*\.hg.*' ! -regex '.*?debian-binary.*' ! -regex '.*?DEBIAN.*'

Se puede interpretar como "busca los ficheros que no cumplen los patrones indicados por las expresiones en su path".

-printf '%P '

Este argumento sirve para que la salida del comando find consista únicamente en el nombre del fichero y su ruta desde el punto en que nos encontramos sin el punto que indica la ruta en la que nos encontramos y separados por un espacio.

| xargs md5sum > DEBIAN/md5sums

Los ficheros encontrados por find que no cumplen los patrones indicados son pasados como argumentos al comando md5sum cuya salida genera el fichero md5sums en el directorio DEBIAN.

Búsqueda de una cadena de texto y sustitucion en todos los ficheros de un directorio recursivamente

Este comando busca la cadena de texto "from" y la sustituye por la cadena de texto "to" en todos los ficheros del directorio en que nos encontremos y sus subdirectorios.

sed -i 's/from/to/g' `find ./ -type f`