ubuntu

Crear y reparar archivos comprimirdos con sus archivos par2

recuperar archivos multivolumen rar con archivos par2

Introducción

A veces puedes encontrarte con archivos comprimidos en varios volúmenes (prueba.part001.rar, prueba.part002.rar, prueba.part003.rar, ...). Puede darse el caso de que un archivo de este volumen no lo tengas o este corrupto (dañado). Hoy en día podemos disponer de herramientas que nos permitan descomprimir el contenido comprimido aun teniendo este problema (siempre que se haya comprimido creando unos archivos necesarios) si hay suficiente información para ello en el volumen.

Los ficheros Par2 pueden ser utilizados para reparar ficheros comprimidos dañados. Pero para ello se habrán tenido que crear al hacer el archivo comprimido. El proceso analiza los bloques de cada fichero rar y publica si esta completo, incompleto o perdido. Cada fichero par2 se puede utilizar para arreglar cierto número de bloques. Todo lo que necesitas es tener la suficiente cantidad de ficheros par2 que puedan arreglar los bloques perdidos para poder repararlos. Puedes reparar cualquier fichero rar dañado con cualquier fichero par2.

Lo primero que tendremos que hacer es instalar el programa:

>> sudo apt-get install par2

Creación de los ficheros par2

Si vamos a comprimir algo en varios archivos rar, podemos crear los  archivos par2 para que cuando lo queramos descomprimir y no tengamos alguno de los  archivos o que alguno de los archivos se haya dañado con el tiempo o al transprotarlo. Como ejemplo, vamos a crear una lista de archivos comprimidos. Vamos a comprimir el fichero prueba.avi con una compresión del 1 en archivos de 5 megas:

>> rar a prueba.rar -v5m -m1 prueba.avi
  ...
>> ls
  prueba.avi         prueba.part02.rar  prueba.part04.rar  prueba.part06.rar  prueba.part08.rar  prueba.part10.rar
  prueba.part01.rar  prueba.part03.rar  prueba.part05.rar  prueba.part07.rar  prueba.part09.rar

Ahora vamos a crear 4 archivos par2 de nombre prueba y con un tamaño igual para los 4:

>> par2create -u -n4 prueba prueba.part*.rar
   ...  
   Block size: 25012
   Source file count: 10
   Source block count: 2004
   Redundancy: 10%
   Recovery block count: 200
   Recovery file count: 4
  
   Opening: prueba.part01.rar
   ...
   Opening: prueba.part10.rar
   Computing Reed Solomon matrix.
   Constructing: done.
   Wrote 5002400 bytes to disk
   Writing recovery packets
   Writing verification packets
   Done

Ya tenemos creados los archivos par2, lo comprobamos:

>> ls
   prueba.avi   prueba.part01.rar  prueba.part03.rar  prueba.part05.rar  prueba.part07.rar 
   prueba.part09.rar  prueba.vol000+16.par2  prueba.vol048+64.par2   prueba.par2
   prueba.part02.rar  prueba.part04.rar  prueba.part06.rar  prueba.part08.rar  prueba.part10.rar 
   prueba.vol016+32.par2  prueba.vol112+88.par2

Otros ejemplos serían:

  • Crear archivos par2 del mismo tamaño y con un 10% de redundancia:
>> par2create -u -r10 prueba prueba.part*.rar

Recuperación con ficheros par2

Si queremos descomprimir un archivo comprimido en varios archivos rar pero no tenemos todos los archivos o alguno de estos esta dañado, podemos hacerlo si tenemos los archivos par2. Vamos a ver un ejemplo de uso si un archivo troceado en trozos con archivos PAR2 y que le falta 1 archivo (prueba.part019.rar). Estos son los archivos que tenemos:

>> ls
  prueba.md5
  prueba.par2
  prueba.part001.rar
  ...
  prueba.part018.rar
  prueba.part020.rar
  ...
  prueba.part030.rar
  prueba.vol000_50.PAR2
  prueba.vol050_50.PAR2
  prueba.vol100_50.PAR2

Ahora vamos a ejecutar el programa par2 para que compruebe cuantos archivos faltan o estan dañados y si tiene los suficientes bloques para recuperarlos:

>> par2repair prueba.par2
   par2cmdline version 0.4, Copyright (C) 2003 Peter Brian Clements.
  
   par2cmdline comes with ABSOLUTELY NO WARRANTY.
  
   This is free software, and you are welcome to redistribute it and/or modify
   it under the terms of the GNU General Public License as published by the
   Free Software Foundation; either version 2 of the License, or (at your
   option) any later version. See COPYING for details.
  
   Loading "prueba.par2".
   Loaded 370 new packets
   Loading "prueba.vol100_50.PAR2".
   Loaded 50 new packets including 50 recovery blocks
   Loading "prueba.vol000_50.PAR2".
   Loaded 50 new packets including 50 recovery blocks
   Loading "prueba.vol050_50.PAR2".
   Loaded 50 new packets including 50 recovery blocks

   There are 30 recoverable files and 0 other files.
   The block size used was 2000000 bytes.
   There are a total of 1529 data blocks.
   The total size of the data files is 19021486678 bytes.
   
   Verifying source files:
   
   Target: "prueba.part001.rar" - found.
   ...
   Target: "prueba.part058.rar" - found.
   Target: "prueba.part059.rar" - missing.
   Target: "prueba.part060.rar" - found.
   ...
   Target: "prueba.part130.rar" - found.
   
   Scanning extra files:
   
   Repair is required.
   1 file(s) are missing.
   30 file(s) are ok.
   You have 1495 out of 1529 data blocks available.
   You have 150 recovery blocks available.
   Repair is possible.
   You have an excess of 116 recovery blocks.
   34 recovery blocks will be used to repair.

   Computing Reed Solomon matrix.
   Constructing: done.
   Solving: done.

   Wrote 16776448 bytes to disk
   ...
   Wrote 13108224 bytes to disk

   Verifying repaired files:

   Target: "prueba.part019.rar" - found.

   Repair complete.

Como podemos ver había suficientes bloques para recuperar el archivo perdido y lo ha recuperado.

temas: 

Raid 1 por software en linux

raid 1 en linux con ubuntu

Introducción

En linux existe un programa para hacer raid por software. Este se llama mdadm. En esta guia explicaré como hacer un raid 1 con dos particiones del mismo tamaño.

Detectar un raid ya construido

Puede ser que hayamos creado un raid anteriormente en otro SO y queramos montarlo en el nuestro. Para ello podemos decirle al programa que los gestiona, que escanée las particiones para descubrir los raid que hay en ella.

Para ello tendremos que ejecutar los siguientes comandos:

>> sudo apt-get install mdadm
>> sudo mdadm --assemble --scan

Hacer un raid

Lo primero será tener instalado mdadm, que es el programa que hará el raid por software. Instalamos el programa mdadm con la siguiente orden:

>> sudo apt-get install mdadm

Por ejemplo, tenemos una partición con datos (/dev/sda5) y queremos hacer un raid 1 con otra partición que tenemos sin datos (/dev/sdb1). Lo primero será desmontar las dos particiones:

>> sudo umount /dev/sda5
>> sudo umount /dev/sdb1

Comprobamos que las dos particiones tienen el mismo tamaño:

>>sudo fdisk -l
...
/dev/sda5            5227       35741   245111706   83  Linux
...
/dev/sdb1               1       30515   245111706   83  Linux
...

Ahora vamos a crear el raid con la partición que no tiene los datos originales (acordaros que si creáis varios raid, tendréis que poner un nombre a cada uno: /dev/md0, /dev/md1, ...):

>> sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 missing
  mdadm: /dev/sda5 appears to contain an ext2fs file system
      size=245111704K  mtime=Sun Jun 21 13:01:34 2009
  Continue creating array? y
  mdadm: array /dev/md0 started.

Ahora formateamos la partición del raid. Por ejemplo, para crear un sistema de ficheros de linux lo haremos con la siguiente orden (podemos formatearlo con lo que queramos: ntfs, fat32, ext4, ...):

>> sudo mkfs -t ext4 /dev/md0

Ya tenemos el raid creado con la partición sin datos. Ahora vamos a pasar los datos, de la partición que los contiene, al raid. Para hacerlo, primero tendremos que montar las particiones:

>> sudo mount /dev/sda5 /media/datos
>> sudo mount /dev/md0 /media/raid

Ahora copiaremos todos los datos de /media/datos a /media/raid (no hay que copiar las carpetas del sistema de archivos como lost+found).

Una vez hemos llegado aquí, ya tendremos el raid creado con los datos dentro, pero solo con 1 disco. Ahora añadiremos  al raid la partición que tenía los datos (/dev/sda5) para que se reconstruya con los datos del raid:

>> sudo mdadm --manage /dev/md0 --add /dev/sda5
   mdadm: added /dev/sdb1

Se empecará a copiar la información de la partición primaria en la que hemos añadido ahora. Para ver como va el proceso podremos ejecutar el siguiente comando para ver el % que lleva: 

>> cat /proc/mdstat
  Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
  md0 : active raid1 sdb1[2] sda5[0]
        245111616 blocks [2/1] [U_]
        [>....................]  recovery =  0.3% (857600/245111616) finish=66.4min speed=61257K/sec

O tambien podemos ver el proceso de reconstrucción con este otro comando:

>> sudo mdadm --detail /dev/md0
/dev/md0:
...
    Update Time : Sun Jun 21 15:38:24 2009
          State : clean, degraded, recovering
 Active Devices : 1
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 1
 
 Rebuild Status : 13% complete
...
    Number   Major   Minor   RaidDevice State
       0       8        5        0      active sync   /dev/sda5
       2       8       17        1      spare rebuilding   /dev/sdb1

Esperaremos hasta que desaparezca esta línea. Una vez acabado este proceso, iremos al fichero /etc/mdadm/mdadm.conf y añadiremos la línea en la que indicamos las particiones queu forman el raid, quedando el fichero de la siguiente forma:

...
# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions
# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes
# automatically tag new arrays as belonging to the local system
HOMEHOST <system>
# instruct the monitoring daemon where to send mail alerts
MAILADDR root
# definitions of existing MD arrays
# This file was auto-generated on Thu, 21 May 2009 21:47:53 +0200
# by mkconf $Id$
ARRAY        /dev/md0 devices=/dev/sda5,/dev/sdb1

Una vez que ya tenemos creado dispositivo raid, vamos a ponerla en el /etc/fstab para que el ordenador la monte cada vez qeu se encienda. Lo primero que tenemos que saber es el UUID de nuestra particion raid. Para ello tendremos que ejecutar la siguiente orden (por ejemplo pasa saber el UUID del dispositivo md0):

>> sudo vol_id -u /dev/md0
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

(* En versiones ams nuevas de ubuntu podemos usar >> sudo blkid)

Una vez tenemos el UUID vamos a editar el fichero /etc/fstab, comentaremos las líneas en las que aparezcan los dispositivos que forman parte del raid (en nuestro caso /dev/sdb1 y /dev/sda5) si es que estan en el fichero (igual aparecen por su UUID, podeis saber cual es con la orden sudo vol_id -u /dev/XXX) y añadiremos la línea del nuevo dispositivo:

# /dev/sda5
#UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX       /media/SIN_RAID1        ext3    relatime        0       2
# /dev/sdb1
#UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX       /media/SIN_RAID2        ext3    relatime        0       2
# /dev/md0
UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX    /media/CON_RAID    ext3    relatime    0    2

Quitar un raid

Lo primero que tendremos que saber es que particiones forman el raid. Por ejemplo, si queremos desacer el raid /dev/md1, tendremos que ejecutar el siguiente comando para saber las particiones que lo forman:

>> sudo mdadm --detail /dev/md1
/dev/md1:
...   
Number Major Minor RaidDevice State
0 8 6 0 active sync /dev/sda6
1 8 34 1 active sync /dev/sdc2

Como podemos ver, el raid esta formado por las particiones /dev/sda6 y /dev/sdc2. Una vez sabemos esto pararemos el raid y lo desmontamos con las siguientes ordenes:

>> mdadm --stop /dev/md1
>> sudo umount /dev/md1

Ahora limpiaremos las dos particiones de la configuración del raid con las siguientes ordenes:

>> mdadm --zero-superblock /dev/sda6
>> mdadm --zero-superblock /dev/sdc2

Y por último tendremos que ir al fichero /etc/mdadm/mdadm.conf y tendremos que quitar la línea correspondiente a el raid, en nuestro caso la siguiente:

ARRAY /dev/md1 devices=/dev/sda6,/dev/sdc2

Con esto ya habremos quitado el raid /dev/md1.

Comprobar el estado de un raid

Si lo que queremos es comprobar el estado de un raid, tendremos que ejecutar el siguiente comando. Por ejemplo para comprobar el estado del rad /dev/md0:

>> sudo mdadm --detail /dev/md0
/dev/md1:
        Version : 00.90
  Creation Time : Thu Jul  2 22:46:31 2009
     Raid Level : raid1
     Array Size : 271610816 (259.03 GiB 278.13 GB)
  Used Dev Size : 271610816 (259.03 GiB 278.13 GB)
  Raid Devices : 2
  Total Devices : 2
  Preferred Minor : 1
  Persistence : Superblock is persistent
 
    Update Time : Fri Jul  3 00:07:06 2009
          State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
 
           UUID : 8fe624fd:cef7961e:ce24d2e1:c686696d (local to host pcpedro)
         Events : 0.14
  
   Number   Major   Minor   RaidDevice State
       0       8        6        0      active sync   /dev/sda6
       1       8       34        1      active sync   /dev/sdc2

Problemas

Unexpected inconsistency

Al encender el ordenador, cuando esta cargando ubuntu se para el proceso y saca el siguiente mensaje:

Log of fsck -C3 -R -A -a
Sat Sep 19 13:01:06 2009
 
fsck 1.41.4 (27-Jan-2009)
D: The filesystem size (according to the superblock) is 61277926 blocks
The physical size of the device is 61277904 blocks
Either the superblock or the partition table is likely to be corrupt!
 
D: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
    (i.e., without -a or -p options)
 
fsck died with exit status 4
Sat Sep 19 13:01:07 2009
----------------

Se queda parado en la consola y tengo que poner exit para que siga la carga de ubuntu.

Solución

Este problema me apareció cuando metí al raid un sistema de ficheros ya creado para no tener qeu mover los datos que contenía. Y para solucionarlo, tuve que seguir estos pasos:

  • Quitar el raid (según indico en este artículo).
  • Volverlo ha hacer mediendo al raid una partición vacía.
  • Formatear el raid.
  • Copiar los datos en el raid.
  • Y por último meter la otra particion por el raid.

Has no superblock

A veces, cuando intentas activar un raid, puede aparecer el siguiente error:

>> sudo mdadm -A /dev/md1
mdadm: /dev/sdd2 has no superblock - assembly aborted

Miramos primero que raids tenemos activados:

>> cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md1 : inactive sda7[1](S)
      271610816 blocks
       
md_d1 : inactive sdd3[0](S)
      271610816 blocks

unused devices: <none>

Solución

Como podemos ver, hay un dispositivo que se ha creado con una de las particiones del raid md1, por eso no deja activarlo. Para solucionarlo tendremos que parar los dos raid (el que no nos funciona y el desconocido) y luego activaremos y montaremos el nuestro:

>> sudo mdadm --stop /dev/md_d1
mdadm: stopped /dev/md_d1
>> sudo mdadm --stop /dev/md1
mdadm: stopped /dev/md1
>> sudo mdadm -A /dev/md1
mdadm: /dev/md1 has been started with 2 drives.
>> sudo mount /dev/md1
temas: 

Cómo instalar una impresora multifunción Epson en Ubuntu

 Epson Stylus DX7400 en linux

Introducción

Yo tengo una Epson Stylus DX7400 aunque el proceso creo que sirve también para las siguientes:

  • Las siguientes Epson Stylus: CX2800, CX2900, ME200, CX3900, DX4000, CX4100, CX4200, DX4200, CX4900, CX5000, DX5000, CX5900, CX6000, DX6000, CX7400, DX7400, CX8300, CX8400, DX8400, CX9300F, CX9400Fax y DX9400F.
  • Las siguientes Epson Stylus Photo RX560, RX580, RX590, RX585, RX595, RX610, RX640, RX650, RX680, RX685 y RX690.

Instalación

Impresora

Para instalar la impresora en linux tendremos que hacer lo siguiente:

  • Tendremos que ir a esta webhttp://www.avasys.jp/english/linux_e/dl_spc.html.
  • Tendremos que rellenar el formulario indicando la multifunción que tenemos y los demás datos.
  • Para enviar el formulario le daremos al botón Next.
  • Ahora entre los archivos que nos mostrará tendremos que bajarnos el archivo deb de pipslite (por ejemplo: pipslite_1.4.0-3_i386.deb).
  • Ahora instalamos los deb:

>> dpkg -i pipslite_1.4.0-3_i386.deb

  • Tendremos que ejecutar el siguiente comando para generar el archivoo PPD:

>> sudo pipslite-install

  • Reiniciamos cups:

>> sudo /etc/init.d/cups restart

  • Y por último tendremos que crear la impresora en el menú de las impresoras.

Escaner

Para instalar el escaner de nuestra multifunción, tendremos que hacer lo siguiente:

  • Lo primero que tendremos que hacer es instalar el programa y utilidades para los escaners de linux:

>> sudo apt-get install sane sane-utils xsane

  • Tendremos que ir a esta webhttp://www.avasys.jp/english/linux_e/dl_spc.html.
  • Tendremos que rellenar el formulario indicando la multifunción que tenemos y los demás datos.
  • Para enviar el formulario le daremos al botón Next.
  • Ahora entre los archivos que nos mostrará tendremos que bajarnos el archivo deb de iscan (por ejemplo: iscan_2.20.1-1_i386.deb).
  • Ahora instalamos los deb:

>> dpkg -i iscan_2.20.1-1_i386.deb

  • Miramos si se detecta el escaner (la multifunción tendrá que estar encendida):

>> sane-find-scanner 
  ...
  found USB scanner (vendor=0x04b8, product=0x0838) at libusb:001:003
  ...

  • Ye esta instalado el escaner.

Uso

Para usar el escaner  tenemos el programa Xsane.

Comprobar que un juego grabado de xbox 360 es Stealth

Juegos Xbox 360 Stealth

Introducción

Antes de nada tendremos que familiarizarnos con ciertos términos.

  • Stealth: Un juego grabado es stealth cuando es indetectable que lo diferencien con uno original (o eso se cree en teora) en Xbox Live.
  • Región free: Un juego es Region Free cuando funciona en consolas de cualquier región. Por ejemplo si un juego NTSC/USA es Region Free podrems jugar a l en nuestra consola PAL.

Para hacer las comprobaciones vamos a usar un programa llamado Abgx360.

Windows

Instalación

 En windows la instalación es muy sencilla. Nos lo tendremos que bajar de la página de abgx360 y ejecutar el archivo para que lo instale.

Linux

Instalación

Lo primero de todo es bajarnos el programa para linux. En linux tenemos varios archivos:

  • Uno es el programa en si, que es por consola de comandos (por ejemplo abgx360-1.0.1.tar.gz).
  • Otro es una interfaz gráfica, ya que no es fácil saberse todos parámetros del programa. La interfaz es solo la interfaz, tendréis que instalar tambión el programa para poderlo usar. (por ejemplo abgx360gui-1.0.1.tar.gz)
  • El último son los datos. (por ejemplo abgx360data.tar.gz)

Una vez que hallamos bajado la última versión del programa vamos a compilarlo e instalarlo:

>> tar -zxvf abgx360-1.0.1.tar.gz
>> cd bgx360-1.0.1
>> sudo apt-get install libcurl4-openssl-dev zlib1g-dev
>> ./configure
>> make
>> sudo checkinstall -D --install=no
>> sudo dpkg -i abgx360_1.0.6-1_amd64.deb

Una vez hemos instalado el programa vamos a instalar la interfaz gráfica:

>> tar -zxvf abgx360gui-1.0.1.tar.gz
>> cd bgx360gui-1.0.1
>> sudo apt-get install libwxgtk2.8-dev xterm
>> ./configure
>> make
>> sudo checkinstall -D --install=no
>> sudo dpkg -i abgx360gui_1.0.2-1_amd64.deb

 Uso

Para abrir el programa tendremos que escribir en una consola la siguiente orden (o podemos crearnos un enlace en la barra de tareas):

>> abgx360gui

Problemas

Zlib not found

Al intentar compilar en linux nos aparece el siguiente error:

>> ./configure
...
configure: error: "zlib not found!"

Solución

No tenemos instalado el paquete de desarrollo de la librería zlib. Lo instalamos con la siguiente orden:

>> sudo apt-get install zlib1g-dev

Libcurl not found

Al intentar compilar en linux nos aparece el siguiente error:

>> ./configure
...
configure: error: "libcurl not found!"

Solución

No tenemos instalado el paquete de desarrollo de la librería libcurl. Para instalarlo tendremos que ejecutar la siguiente orden:

>> sudo apt-get install libcurl3-dev

wxWidgetsgets no instalados

Cuando estamos compilando la interfaz de ABGLX360 nos puede aparecer el siguiente mensaje de error:

>> ./configure
...
checking for wx-config... no
configure: error:
wxWidgets must be installed on your system.
Please check that wx-config is in path, the directory
where wxWidgets libraries are installed (returned by
'wx-config --libs' or 'wx-config --static --libs' command)
is in LD_LIBRARY_PATH or equivalent variable and
wxWidgets version is 2.5.0 or above.

Solución

El problema esta en que no tenemos instalado el paquete de desarrollo de la librería wx. A día de hoy me pedía una versión superior a la 2.5, asi que instale la última, que era la 2.8.

>> sudo apt-get install libwxgtk2.8-dev

libwx_gtk2u_richtext-2.8 Not found

Al ejecutar abgx360gui nos aparece un error indicando que no encuentra la librería libwx_gtk2u_richtext-2.8:

abgx360gui: error while loading shared libraries: libwx_gtk2u_richtext-2.8.so.0: cannot open shared object file: No such file or directory

Solución

La instalamos:

>> sudo apt-get install libwxgtk2.8-dev

 

Error: timed out

Puede pasarnos que en el resultado de analizar un dvd nos encontremos con el siguiente mensaje de aviso en letras amarillas en el comienzo:

ERROR: Resolving timed out after 20530 milliseconds
There seems to be a problem with the db so online functions have been disabled
Try again later...

Solución

Para solucionarlo tendremos que crear un fichero en la ruta /home/USUARIO/.abgx360/abgx360.ini con el siguiente contenido:

# http directory that contains verified ini files
web_inidir: http://5.39.25.104/Apps/verified/

# http directory that contains unverified ini files
web_unverifiedinidir: http://5.39.25.104/Apps/unverified/

# http path to GameNameLookup.csv
web_csv: http://5.39.25.104/Apps/Stealth360/GameNameLookup.csv

# http path to abgx360.dat
web_dat: http://5.39.25.104/Apps/Stealth360/abgx360.dat

# http path to topology.php
web_topology: http://5.39.25.104/Apps/topology.php

# http directory that contains SS/DMI/PFI/Video stealth files
web_stealthdir: http://5.39.25.104/Apps/StealthFiles/

# http form for submitting AutoUploads
web_autoupload: http://5.39.25.104/Apps/Control/AutoUpload.php

Ahora cuando abramos el programa y volvamos a analizar un dvd nos funcionará.

 

 

Migración de cvs a subversion

Cvs2svn

Introducción

Hace pocos meses que tuve que pasar de usar un servidor de CVS para usar uno de Subversión (este nos proporcionaba más cosas que el primero). En nuestro servidor de cvs tendríamos alrededor de 250 proyectos y la verdad es que me han salido muchos problemas, pero al final se pasó todo. Para la migración estuve mirando por internet y vi que todo el mundo utilizaba un programa llamado cvs2svn. A continuación os explico como hacerlo y la lista de los problemas que me aparecieron y sus soluciones.

Migración

Para importar nuestro repositorio de cvs a subversion (svn) usaremos el programa cvs2svn. Lo tendremos que bajar, descomprimir y ejecutar con los correspondientes parámetros:

>> wget http://cvs2svn.tigris.org/files/documents/1462/44372/cvs2svn-2.2.0.tar.gz
>> gzip -d cvs2svn-2.2.0.tar.gz
>> tar -xvf cvs2svn-2.2.0.tar
>> cd cvs2svn-2.2.0
>> ./cvs2svn --existing-svnrepos --encoding iso8859_15 -s /var/www/html/svn/root ../CVSROOT/miproyecto

Podéis mirar aquí para ver que encodings podemos poner.

Como mi caso, si queréis tener un repositorio multiproyecto tendréis que indicarle a cada proyecto que importéis que las carpetas trunk, branches y tags las meta dentro de una carpeta con el nombre del proyecto. Por ejemplo asi:

>> ./cvs2svn --existing-svnrepos --encoding iso8859_15 --trunk=miproyecto/trunk --branches=miproyecto/branches --tags=miproyecto/tags -s /var/www/html/svn/root ../CVSROOT/miproyecto

Problemas

is not a CVS repository

Al intentar importar una carpeta que contiene un proyecto del cvs nos da el siguiente error:

ERROR: the path '/root/miproyecto' is not a CVS repository, nor a path within a CVS repository. A CVS repository contains a CVSROOT directory within its root directory.

Solucion

Metemos la carpeta del proyecto en una carpeta llamada '''CVSROOT'''. Por ejemplo si nuestro proyecto esta en /root/miproyecto quedaría en /root/'''CVROOT'''/miproyecto.

co: No such file or directory

Al ejecutar el programa cvs2svn con la opción '''--use-rcs''' nos aparece el siguiente error:

ERROR: error executing co: [Errno 2] No such file or directory
Please check that co is installed and in your PATH
(it is a part of the RCS software).

Solución

No tenemos instalado el paquete '''rcs''' que contiene el programa '''co'''. Lo instalamos:

* Para sistemas Debian, Ubuntu, ...

>> sudo aptitude install rcs

* Para sistemas Centos, Redhat, ...

>> sudo yum install rcs

No such file or directory

Al ejecutar la importación de un proyecto del cvs a svn nos aparece el siguiente mensaje de error:

Exception occurred while parsing /projects/cvsroot/miproyecto/prueba/Attic/text.html,v
Traceback (most recent call last):
File "/cvs2svn-2.2.0/cvs2svn", line 31, in ?
main(sys.argv[0], sys.argv[1:])
File "/cvs2svn-2.2.0/cvs2svn_lib/main.py", line 88, in main
pass_manager.run(run_options)
File "/cvs2svn-2.2.0/cvs2svn_lib/pass_manager.py", line 181, in run
the_pass.run(run_options, stats_keeper)
File "/cvs2svn-2.2.0/cvs2svn_lib/passes.py", line 152, in run
cd.process_project(project)
File "/cvs2svn-2.2.0/cvs2svn_lib/collect_data.py", line 1329, in process_project
pdc.process_file(cvs_file)
File "/cvs2svn-2.2.0/cvs2svn_lib/collect_data.py", line 1014, in process_file
cvs2svn_rcsparse.parse(open(cvs_file.filename, 'rb'), fdc)
IOError: [Errno 2] No such file or directory: '/projects/cvsroot/miproyecto/prueba/Attic/text.html,v'

Comprobamos que el fichero existe:

>> ls /projects/cvsroot/miproyecto/prueba/Attic/text.html,v
/projects/cvsroot/miproyecto/prueba/Attic/text.html,v

Solución

Este problema fue muy raro. La carpeta donde almacenaba los proyectos del cvs estaba compartida en otra máquina y la tenia montada donde esta instalado el cvs. Creo que el problema era algo causado por la arquitectura de mi entorno. Al final tuve que copiar la carpeta del proyecto desde el ordenador donde estaba al ordenador donde tenía el servidor de cvs y estaba ejecutando el script de migración. Entonces ejecuté el program

Archivos duplicados, Attic

Al hacer la migración con el programa cvs2svn podemos encontrarnos con un error como este:

'''ERROR''': A CVS repository cannot contain both /repositorio/cvsroot/proyecto/src/file.java,v and /repositorio/cvsroot/proyecto/src/Attic/file.java,v

Solución

Antes de explicar el problema tenemos que saber que las carpetas Attic las usa cvs para guardar ficheros que han sido borrados en nuestro proyecto, para poder recuperarlos en caso necesario. Normalmente si tienes un fichero llamado path/file.txt en tu proyecto, CVS almacena su historia en un fichero llamado repo/path/file.txt,v. Pero si el fichero file.txt es borrado en la rama principal de desarrollo, CVS mueve el fichero de la historia a una subcarpeta especial llamada Attic: repo/path/Attic/file.txt,v. (Si el fichero se vuelve a crear, entonces este es movido fuera del directorio Attic donde estaba ántes.) El repositorio nunca debería contener ambos ficheros al mismo tiempo.

Este mensaje de error indica una leve corrupción en tu repositorio CVS. El archivo que da el problema tiene dos historias en conflicto, e incluso el CVS no sabe cual es la historia correcta. La corrupción probablemente fue creada al usar otras herramientas a parte del CVS para hacer copias de seguridad o manipular los archivos en tu repositorio. Con un poco de trabajo puedes ver las dos historias abriendo los dos ficheros en un editor de texto y así saber cual es el correcto.

Hay 4 maneras de corregir este problema, pero cada una tiene sus desventajas. Recuerda hacer una copia de seguridad antes de empezar. Nunca ejecutes el programa cvs2svn con un repositorio cvs en funcionamiento, trabaja siempre con una copia.

  • Vuelve ha hacer la migración con la opción --retain-conflicting-attic-files.  Esto hace que la verión Attic y no Attic de el fichero sea convertida separadamente almacenando la version Attic en un subdirectorio path/Attic/file.txt. Esto evita la perdida de cualquier historia, pero al moverlo a otro directorio proboca que el historio de revisiones se rompa.
  • Borra la versión Attic del fichero e  intentar otra vez la migración del proyecto. En algunas ocasiones esto representará una vieja versión del fichero que fue borrada hace tiempo. Pero estaremos descartando la historia de uno de los ficheros, probablemente esto causará la perdida de la historia antigua del fichero. Acuerdate de hacer una copia de seguridad del fichero antes de borrarlo.
>> rm /repositorio/cvsroot/proyecto/src/Attic/file.java,v
  • Borrar la versión de fichero no Attic e intentar otra vez la migración del proyecto. Esto puede ser apropiado si el fichero no Attic tiene menos contenido importante que la version Attic. Pero esto descarta una de las dos historias y probablemente causará la perdida de los cambios más recientes del fichero. Antes de borrarlo aseguraos de hacer una copia de seguridad del fichero que borréis.
>> rm /repositorio/cvsroot/proyecto/src/file.java,v
  • Renombrar la versión no Attic de el fichero e intentar otra vez la migración del proyecto. Esto nos evita perder historia, pero cambia el nombre del fichero no Attic.
>> mv /repositorio/cvsroot/proyecto/src/file.java,v /repositorio/cvsroot/proyecto/src/file-not-from-Attic.java,v

Instalar phpLDAPadmin

phpLDAPadmin

Introducción

phpLDAPadmin es un gestor web para un servidor de ldap.

Instalación

Manual

La instalación es sencilla. Hay que bajarselo, descomprimirlo, ponerlo ene l apache y configurar los datos para que acceda a nuestro servidor de ldap:

>> wget http://nfsi.dl.sourceforge.net/sourceforge/phpldapadmin/phpldapadmin-1.1.0.7.tar.gz
>> tar -zxvf phpldapadmin-1.1.0.7.tar.gz
>> sudo cp -R phpldapadmin-1.1.0.7 /var/www/html/phpldapadmin
>> sudo cp /var/www/html/phpldapadmin/config/config.php.example /var/www/html/phpldapadmin/config/config.php

Automatica

Necesitaremos tener un servidor web con php y un servidor mysql con una base de datos para el phpldapadmin. Para instalarlo en ubuntu, desde los repositorios:

>> sudo aptitude install phpldapadmin

Indicarle los datos de conexión

Editamos el fichero y nos aseguramos que rellenamos los siguientes campos que son los minimos:

$i=0;
$ldapservers = new LDAPServers;
...
$ldapservers->SetValue($i,'server','name','NOMBRE_SERVIDOR');
...
$ldapservers->SetValue($i,'server','host','IP_DEL_SERVIDOR_DONDE_ESTA_EL_LDAP');
...
$ldapservers->SetValue($i,'server','port','389');
...
$ldapservers->SetValue($i,'server','base',array('RAIZ_BASE_DE_NUESTRO_LDAP'));

Ya tendria que funcionar el phpLDAPadmin.

Configuración

Cambiar la forma de autentificarse

Por defecto la forma que usa para autentificarse con el servidor de ldap es manual (tenemos que introducir un usuario y una contraseña), pero podemos ponerla en automática. Para usar una u otra tendremos que tener el fichero de configuración como nos indica en cada apartado:

Automáticamente

Para que se conecte automáticamente al servidor de ldap, con un usuario cn=root,dc=example,c=es y contraseña passuser, tendremos que usar las siguientes líneas en el fichero de configuración (/var/www/html/phpldapadmin/config/config.php):

$ldapservers->SetValue($i,'server','auth_type','config');
$ldapservers->SetValue($i,'login','dn','cn=root,dc=example,c=es');
$ldapservers->SetValue($i,'login','pass','passuser');
$ldapservers->SetValue($i,'server','tls',false);

Manual

Para que nos pida que introduzcamos un usuario y clave del ldap para conectarnos al servidor, usaremos las siguientes líneas (recalcar que las variables dn y pass de login, tenemos que dejarlas vacías) en el fichero de configuración (/var/www/html/phpldapadmin/config/config.php):

$ldapservers->SetValue($i,'server','auth_type','cookie');
$ldapservers->SetValue($i,'login','dn','');
$ldapservers->SetValue($i,'login','pass','');
$ldapservers->SetValue($i,'server','tls',false);
$config->custom->session['blowfish'] = "cadena";

La cadena blowfish puede ser cualquier cadena (se usa para encriptar la cookie).

 Solo queremos que muestre unos determinados campos

Si lo que queremos es que no muestre todos los atributos tendremos que editar el fichero /var/www/html/phpldapadmin/config/config.php y buscar el vector hidden_attrs, descomentarlo si está comentado y poner los campos que no queramos que se muestren. Por ejemplo: Si no queremos que se muestren los campos uidNumber, gidNumber, homeDirectory y objectClass tendremos que poner la siguiente línea:

$hidden_attrs = array(
   'uidNumber','gidNumber', 'homeDirectory', 'objectClass');

Guardamos el fichero y ya esta.

Cambiar los nombres que se muestran de cada parametro

Alguien que no tiene conocimientos de ldap cuando vea que hay que rellenar el parámetro l (ciudad) puede que no sepa que significa. Phpldapadmin tiene la posibilidad de definir el nombre que se lista para cada parámetro. Para ello tendremos que editar el fichero /var/www/html/phpldapadmin/config/config.php y añadir en el vector friendly_attrs los campos que queremos renombrar en la salida. Por ejemplo: si queremos que los campos l, st y sn aparezcan como Ciudad, Localidad y Apellidos tendremos que añadir als siguientes líneas:

$friendly_attrs = array();

$friendly_attrs['l']                      = 'Ciudad';
$friendly_attrs['st']                     = 'Localidad';
$friendly_attrs['sn']                     = 'Apellidos';

Solo nos quedará guardar los cambios y cerrar el archivo.

Definir el orden en que se listan los parametros

Hay una opcion (attrs_display_order) para definir el orden en el que se muestran los parámetros. Por ejemplo: si queremos que primero nos pregunte por el nombre, luego por los apellidos y por último el nombre completo, tendríamos que añadir la siguiente variable al archivo /var/www/html/phpldapadmin/config/config.php:

  $attrs_display_order = array(
   'sn',
   'cn',
   'displayName'
  );

Los parámetros que no pongamos en este vector  se mostraran despues de los que hallamos indiado y en orden alfabético. Guardamos el fichero para mantener los cambios.

Parametros de solo lectura

Si queremosq eu ciertos parametros no se puedan modificar, podemos hacerlo con el parámetro read_only_attrs. Por ejemplo: si queremos que el campo dni no se pueda modificar, tendremos que añadir el siguiente vector al archivo /var/www/html/phpldapadmin/config/config.php:

$read_only_attrs = array( 'dni' );

Guardamos y listo.

Entrar solo con el nombre de un parámetro único

Por defecto para autentificarnos en phpLDAPadmin tenemos que escribir el dn de nuestro usuario. El dn es el que identifica a un objeto y tiene una forma parecida a este ejemplo uid=manolo,ou=personas,o=tuempresa,c=es. Poner toda esta cadena para autentificarte no es nada comodo, pero podemos sustituir el nombre que el usuario utiliza para autentificarse por uno que sea único y más sencillo de recordar, por ejemplo el uid. Para ello tendremos que editar el fichero /var/www/html/phpldapadmin/config/config.php y descomentar y modificar la siguiente línea:

$ldapservers->SetValue($i,'login','attr','uid');

Guardamos los cambios y ya esta.

Elegir el idioma

Para indicar que lo muestre en español (es) tendremos que editar el fichero /var/www/html/phpldapadmin/config/config.php y editar la siguiente línea:

$config->custom->appearance['language'] = 'es';

Otros idiomas serian: 'ct', 'de', 'en', 'es', 'fr', 'it', 'nl', y 'ru'.

Activar el log

Para activar el log y que escriba en un fichero /tmp/pla_debug.log tendremos que editar el fichero /var/www/html/phpldapadmin/config/config.php y añadir o descomentar estas líneas:

$config->custom->debug['level'] = 255;
$config->custom->debug['syslog'] = true;
$config->custom->debug['file'] = '/tmp/pla_debug.log';

Errores

Límite de memoria de php bajo

Al instalarlo, cuando accedemos a la url nos aparece el siguiente mensaje de error:

Memory Limit low.
Your php memory limit is low - currently 16M

Solución

Tendremos que editar el fichero /etc/php.ini y buscar la siguiente línea:

memory_limit = 16M

Cambiamos el 16 por 32. Guardamos el fichero y reiniciamos el apache:

>> sudo /etc/init.d/httpd restart

Grabar juegos de xbox 360

Grabar juegos de xbox 360 en windows y linux

Introducción

Para grabar un juego de Xbox 360 necesitaremos una grabadora de doble capa y un dvd de doble capa virgen. A continuación os muestro como hacer en windows o en linux.

Windows

Para grabar juegos de xbox 360 en windows tenéis que seguir los pasos de esta url: http://ociotec.com/como-grabar-juegos-de-xbox-360/

Linux

Para grabar juegos de xbox 360 o juegos de la primera xbox (para jugarlos en nuestra xbox 360) en linux podemos hacer con dos programas: growisofs (desde consola de comandos) o K3B (con ventanas).

Con el programa growisofs

Podremos grabar juegos de extensión iso, 000, ...

  • Para juegos de Xbox 360 en formato XGD3:

Para grabar un juego en formato XGD3 hay que hacerlo en Windows y necesitaremos una grabadora compatible.

  • Para juegos de Xbox 360 en formato XGD2:

Para grabar con la grabadora /dev/dvdrw una imagen /media/datos/juego.iso de un juego de Xbox 360:

>> growisofs -use-the-force-luke=dao -use-the-force-luke=break:1913760 -dvd-compat -speed=2 -Z /dev/dvdrw=/media/datos/juego.iso
  • Para juegos de Xbox:
>> growisofs -use-the-force-luke=dao -use-the-force-luke=break:1913776 -dvd-compat -speed=2 -Z /dev/dvdrw=/media/datos/juego.iso

Con el programa K3B

Para hacerlo con el programa K3B (yo no he probado esto):

Aparte de ese comando puedes configurar el layerbreak en K3B para poder grabar los juegos, lo unico que debes de hacer es ir al menu preferencias/configurar K3B. Ahí dentro de programas te aparecerán 3 pestañas, la segunda nos permite especificar parámetros para ellos.

Después te colocas sobre la linea de growisofs y escribes:

-use-the-force-luke=break:1913760

Le das Aplicar y a Aceptar. Si lo hiciste bien te saldrá un mensaje advirtiendo que estableciste nuevos parámetros.

Cortar en linux un mp3 en tracks con un archivo cue

Cortar un mp3 con un archivo cue

Introducción

Mas de una vez me he encontrado con un mp3 de varias canciones a la vez y he querído cortarlo en canciones sueltas. Esto lo podemos hacer de forma automática si disponemos de un archivo cue para ese mp3. En este archivo esta puesto por en que punto empiezan las diferentes pistas (tracks). Para hacerlo automaticamente en linux disponemos de un programa llamado mp3splt. Disponemos de una interfaz gráfica y otra por consola.

Gráficamente

Si no lo tenemos instalado lo instalamos (esta en los repositorios):

>> sudo aptitude install mp3splt-gtk

Una vez instalado abrimos el programa desde el menú, cargamos el mp3, luego en la pestaña de los archivos cue cargamos el archivo cue y le damos a añadir los puntos de corte y por último le damos a cortar.

Por consola

Si no lo tenemos instalado lo instalamos (esta en los repositorios):

>> sudo aptitude install mp3splt

Una vez lo tengamos instalado podemos proceder a cortarlo. Por ejemplo para un fichero mp3 de nombre canciones.mp3 con un archivo cue de nombre canciones.cue tendremos que ejecutar la siguiente orden:

>> mp3splt -f -c canciones.cue -o @n+-+@t canciones.mp3

Después ya tendremos nuestro mp3 cortado en varias pistas.

temas: 

Instalar una Canon PIXMA IP2600 en Ubuntu

Canon PIXMA IP2600

Hoy he tenido que instalarme en el trabajo una impresora Canon PIXMA IP2600 en el ubuntu del trabajo (versión del ubuntu 8.10) ya que por defecto el driver no salía. A continuación os pongo los pasos a seguir para conseguirlo.

Instalación

Para instalarla en Ubuntu, tendremos que seguir los siguientes pasos:

1- Lo primero será bajarnos los drivers:

    • Iremos a esta web. En el formulario de descarga seleccionaremos InkJet Printers, luego PIXMA, después PIXMA IP2680 y por último driver & sowftware.
    • De entre los resutlados que nos ha sacado, entraremos en los siguientes:
      • IJ Printer Driver Ver. 2.90 for Linux (debian Package for iP2600 series)
      • IJ Printer Driver Ver. 2.90 for Linux (debian Common package)
      • Bajaremos al final de las páginas y le daremos al enlace download.
      • Una vez bajado los drivers los instalaremos. Dependiendo de si nuestro sistema operativo es de 32 o 64 bits tendremos que ejecutar las siguientes órdenes:
        • Si tenemos 32 bits:
          >> sudo dpkg -i cnijfilter-common_2.90-1_i386.deb
          >> sudo dpkg -i cnijfilter-ip2600series_2.90-1_i386.deb
        • Si tenemos 64 bits:
          >> sudo dpkg -i --force-architecture cnijfilter-common_2.90-1_i386.deb
          >> sudo dpkg -i --force-architecture cnijfilter-ip2600series_2.90-1_i386.deb

      2- Ahora vamos a añadir la impresora:

        • Vamos al menú Sistema, Administración y a Impresoras.
        • Le damos a Nueva.
        • Seleccionamos donde tenemos la impresora (localmente, por samba, ...).
        • Seleccionamos la opción de Seleccionar la impresora de la base de datos.
        • Seleccionamos Canon y le damos a Siguiente.
        • Recorremos la lista y seleccionamos iP2600 Ver.2.90 (OJO!! no empieza por PIXMA.)
        • Acabamos la instalación poniendole los datos que queramos (Nombre, descripción y ubicación).

        Ya tenemos la impresora instalada y lista para imprimir.

        Problemas

        libcupsys2 no esta instalado

        Hay instalar el driver de la impresora, nos puede aparecer el siguiente error:

        >> sudo dpkg -i --force-architecture cnijfilter-common_2.90-1_i386.deb
        dpkg: aviso: ignorando problema debido a --force enabled:
        la arquitectura del paquete (i386) no corresponde con la del sistema (amd64)
        (Leyendo la base de datos ... 00%
        174170 ficheros y directorios instalados actualmente.)
        Preparando para reemplazar cnijfilter-common 2.90-1 (usando cnijfilter-common_2.90-1_i386.deb) ...
        Desempaquetando el reemplazo de cnijfilter-common ...
        dpkg: problemas de dependencias impiden la configuración de cnijfilter-common:
        cnijfilter-common depende de libcupsys2 (>= 1.2.1); sin embargo:
        '''El paquete `libcupsys2' no está instalado.
        '''dpkg: error al procesar cnijfilter-common (--install):
        problemas de dependencias - se deja sin configurar
        Se encontraron errores al procesar:
        cnijfilter-common

        Solución

        EL problema esta en que a partir de la version 9.10 de Ubuntu, el paquete libcupsys2 ha cambiado de nombre a libcups2. Para poderlo instalar tenemos que cambiar esta restricción al paquete. Para ello tendremos que descomprimir el paquete deb:

        >> dpkg-deb -x cnijfilter-common_2.90-1_i386.deb common
        >> dpkg-deb --control cnijfilter-common_2.90-1_i386.deb

        Ahora editaremos el archivo qeu se encuentra en DEBIAN/control y cambiaremos la línea:

        Depends: libc6 (>= 2.3.4-1), libcupsys2 (>= 1.2.1), libpopt0 (>= 1.7)

        Por esta otra:

        Depends: libc6 (>= 2.3.4-1), '''libcups2''' (>= 1.2.1), libpopt0 (>= 1.7)

        Ahora movemos la carpeta DEBIAN dentro de la carpeta common:

        >> mv DEBIAN common/

        Y por último volvemos a construir el paquete con los ficheros modificados y con otro nombre:

        >> dpkg -b common cnijfilter-common_2.90-1_i386_2.deb

        Tambien tendremos que hacer lo mismo con el paquete cnijfilter-ip2600series_2.90-1_i386.deb y despues ya podremos instalar los nuevos paquetes dependiendo de la arquitectura de nuestra máquina como se indica mas arriba.

        Filter not owned by root

        Al intentar imprimir nos aparece un mensaje de error que dice lo siguiente:

        En espera -Filter /usr/lib/cups/filter/pstocanonij iP2600 for printer XXXX not owned by root

        Solución

        El problema esta en que el usuario root no es el propietario del fichero /usr/lib/cups/filter/pstocanonij como podemos ver a continuación:

        >> ls -l /usr/lib/cups/filter/pstocanonij
        -rwxr-xr-x 1 manolo manolo 21092 2008-04-11 02:08 /usr/lib/cups/filter/pstocanonij

        Para solucionarlo hay que poner al usuario root como propietario del fichero:

        >> sudo chown root:root /usr/lib/cups/filter/pstocanonij

        Instalar Bugzilla

        La hormiga del bugzilla

        Estos días he tenido que instalar un bugzilla en un servidor, aunque ha costado (problemas al usar un mysql remoto y usar un Centos). Aquí os explico lo que tenéis que hacer si queréis instalar un bugzilla. Como siempre en mi wiki tendréis la última versión de como hacer esto y además tenéis los problemas que me encontré al instalarlo y como los solucioné.

        Lo primero de todo es bajarlo y lo descomprimirlo en una carpeta de nombre bugzilla dentro de la carpeta raiz de los documentos del apache (en nuestro caso /var/www/html):

        >> cd /var/www/html
        >> wget http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-3.0.6.tar.gz
        >> gzip -d bugzilla-3.0.6.tar.gz
        >> tar -xvf bugzilla-3.0.6.tar
        >> mv bugzilla-3.0.6 bugzilla

        Con el siguiente comando comprobamos si tenemos todo lo necesario instalado:

        >> ./checksetup.pl --check-modules
        * NOTE: You must run any commands listed below as root.
        ***********************************************************************
        * REQUIRED MODULES                                                                                      *
        ***********************************************************************
        * Bugzilla requires you to install some Perl modules which are either              *
        * missing from your system, or the version on your system is too old.            *
        *                                                                                                                         *
        * The latest versions of each module can be installed by running the              *
        * commands below.                                                                                           *
        ***********************************************************************
        COMMANDS:
        /usr/bin/perl -MCPAN -e 'install "Email::Send"'
        /usr/bin/perl -MCPAN -e 'install "Email::MIME"'
        /usr/bin/perl -MCPAN -e 'install "Template"'
        /usr/bin/perl -MCPAN -e 'install "Email::MIME::Modifier"'
        /usr/bin/perl -MCPAN -e 'install "Date::Format"' 
        ***********************************************************************
        * DATABASE ACCESS                                                                                        *
        ***********************************************************************
        * In order to access your database, Bugzilla requires that the                          *
        * correct "DBD" module be installed for the database that you are                  *
        * running.                                                                                                           *
        *                                                                                                                         *
        * Pick and run the correct command below for the database that you             *
        * plan to use with Bugzilla.                                                                                 *
        ***********************************************************************
        COMMANDS:
        PostgreSQL: /usr/bin/perl -MCPAN -e 'install "DBD::Pg"'
        Minimum version required: 1.45
        MySQL: /usr/bin/perl -MCPAN -e 'install "DBD::mysql"' 
        Minimum version required: 2.9003

        Ahora instalamos lo que nos ha indicado el script que hemos ejecutado:

        >> /usr/bin/perl -MCPAN -e 'install "Email::Send"'
        >> /usr/bin/perl -MCPAN -e 'install "Email::MIME"'
        >> /usr/bin/perl -MCPAN -e 'install "Template"'
        >> /usr/bin/perl -MCPAN -e 'install "Email::MIME::Modifier"'
        >> /usr/bin/perl -MCPAN -e 'install "Date::Format"'
        >> /usr/bin/perl -MCPAN -e 'install "DBD::mysql"'

        Creamos un fichero de nombre localconfig y escribimos lo siguiente (cambiando la negrita por tus datos):

        $create_htaccess = 1;
        $webservergroup = 'apache';
        $db_driver = 'mysql';
        $db_host = 'HOST_DE_TU_SERVIDOR';
        $db_name = 'NOMBRE_BASE_DATOS';
        $db_user = 'USUARIO_BASE_DATOS';
        $db_pass = 'CLAVE_USUARIO_BASE_DATOS';
        $db_port = 3306;
        $db_sock = ;
        $db_check = 1;
        $index_html = 0;
        $cvsbin = ;
        $interdiffbin = ;
        $diffpath = '/usr/bin';

        Ahora instalamos bugzilla con el siguiente comando (Puede que nos de algún error si no se ha instalado bien alguna dependencia) y rellenamos los datos para crear la cuenta de administrador del bugzilla:

        >> ./checksetup.pl
        ...
        Enter the e-mail address of the administrator: EMAIL_CUENTA_ADMINISTRADOR
        Enter the real name of the administrator: NOMBRE_ADMINISTRADOR
        Enter a password for the administrator account: CONTRASEÑA_ADMINISTRADOR
        Please retype the password to verify: CONTRASEÑA_ADMINISTRADOR
        ...

        Ahora vamos al fichero de configuración del apache (en nuestro caso en /etc/httpd/conf/httpd.conf) y añadimos las siguientes líneas al final al final del todo:

        <Directory "/var/www/html/bugzilla">
            Options +ExecCGI
            AllowOverride Limit
            DirectoryIndex index.cgi
            AddHandler cgi-script .cgi
        </Directory>

        Ahora para que tenga efecto esta modificación reiniciamos el apache:

        >> sudo /etc/init.d/httpd restart

        Y ya lo tenemos instalado. Para acceder a él iremos a la url http://TU_SERVIDOR/bugzilla/ y usaremos la cuenta con los datos que le indicamos con el comando checksetup.pl.