miércoles, 13 de agosto de 2014

CANAIMA GNU/Linux

Hace poco menos de un año mi madre entró en el plan internet equipado de ABA CANTV y decidió comprar una laptop VIT financiada, esta laptop venia con Canaima GNU/Linux 3.0, cuando le dije que era linux (mi madre sabe que uso linux desde hace mucho tiempo, cuando agarraba la computadora de la casa le instalaba cualquier cantidad de distribuciones), luego que la compró, le dije le planeas dejar Canaima o vas a querer que te le instale linux, debido a que soy usuario GNU/Linux, pero sin embargo creo en la libertad de elección, cada quien es libre de escoger el S.O. que desee para su computadora, es como la ropa interior, cada quien usa la que quiera. Pero debido a que mi madre tiene fuertes convicciones simpatizantes del gobierno de Venezuela y luego de haber usado una versión de RHEL, hace muchos años (no recuerdo si fué la 2 o la 3), me dijo que no tenía problemas con usar linux, pero que le configurara la impresora y le explicara como es la cosa, para internet, twitter (es una usuaria apasionada de ese medio), le explique lo que necesitaba saber, luego de un tiempo me dijo que el Canaima le estaba pidiendo actualizar, fui hasta su casa y realizé la actualización de 3.0 a 3.1 sin ningún problema, debido a que el equipo de Canaima, hizo un buen trabajo para que la migración diera pocos dolores de cabezas, luego de un tiempo mi mamá estaba feliz con su Canaima, me dice que lo prefiere 1000 veces al windows vista que tiene en su pc (creo que sabemos las razones), pero un día me dice que no puede escribir en hotmail, que sencillamente no hace nada, así que la revisé y efectivamente eso pasaba, al entrar en el sitio web de Canaima GNU/Linux, me pude percatar que la actualización directa ya era posible (hace unos meses tenía entendido que no era así), seguí los pasos que especifican para realizar la actualización, sin embargo tuve un problema con initfsram-tools, debido a la versión de plymouth, lo que hice fué mandarlo a instalar y luego seguir con la actualización, todo funcionó correctamente a excepción de ese error, luego de culminada la actualización tengo un gnome3 bastante sobrio y con un tema agradable, en el pasado no estaba un poco de acuerdo con los temas elegidos para canaima, pero esta vez dieron en el clavo, es un gnome-shell bonito y eficiente, con los complementos necesarios para que los usuarios finales no se pierdan en el uso de esto, en verdad me gustó bastante.

Lo mencioné alguna vez en este blog, yo trabajé con el equipo de desarrollo de la distribución CANAIMA/CANTV GNU/Linux y en verdad por cuestiones internas del funcionamiento de esa empresa de gobierno y exigencias de adecuar el linux para que funcionara correctamente con el active directory y con las diferentes aplicaciones proporcionadas por cada uno de los proveedores de servicio de CANTV, que funcionan nativamente en Windows o en Internet Explorer 4, hicieron muy engorrosa el trabajo de mejorar un canaima 2 y poderlo llevar a debian wheezy y con esto no estoy diciendo que el equipo de CANTV hiciera un mal trabajo, todo lo contrario, se invertía un gran esfuerzo en realizar la distribución para este ente gubernamental, sin embargo habían trabas, que en algunas ocasiones sencillamente no se pudieron solventar, o si se solventaban no era del agrado del usuario final. No sé en que estado se encuentra la distribución de CANAIMA/CANTV, pero en verdad si pudieran tomar de ejemplo lo que ha estado realizando el equipo de la meta distribución, donde se ve reflejada el esfuerzo y el aprendizaje que han tenido desde la primera versión de Canaima GNU/Linux, para ir poco a poco teniendo una distro que va a ser independiente de Debian y poco a poco va a ir mejorando, en verdad me alegra.

Extiendo una felicitación al equipo de Canaima GNU/Linux por todo el trabajo que han hecho y están haciendo.

P.D. No pienso dejar de utilizar Funtoo, pero para aquellos que piensen que ubuntu es mejor para usuario final, intenten usar Canaima GNU/Linux, se van a sentir más a gusto.

jueves, 3 de julio de 2014

Funtoo usando ZFS

Unas de las cosas que me pasó hace unos meses, es que me obstiné del KDE y decidí volver a instalar gnome o en su defecto cinnamon, sin embargo, era error tras error, y cada vez que solventaba un error aparecía otro y a parte había dejado de lado un proyecto que tenía que culminar y tenía a los clientes esperando, así que decidí con lagrimas en los ojos abandonar funtoo/gentoo por otra distro que me brindara gnome y fuera un poco más rápida a la hora de configurarla, por lo que inicié mi ardua tarea de probar distros:
  • Red Hat Linux 6 o 7: debido a que la empresa donde trabajo es aliado RH, decidí usar mi usuario para descargarme las versiones RH, sin embargo, la 6 es muy vieja en paqueteria y la 7 es algo más nueva pero igual no me sentí cómodo con las versiones, por lo que asi como la instalé la desinstalé :).
  • Fedora: es una distro que instalé, sin embargo no me hallaba dentro de ella, la forma de configuración, la forma de personalizarla, etc. no eran del todo agradables para mi, por lo que luego de un día la eliminé.
  • Sabayon: Como usuario gentoo, me decidí por sabayon, que supuestamente es mas enfocado a usuario final y de verdad así es, pero los constantes problemas que tenía instalando paquetes usando equo y emerge, hicieron que la dejara de lado.
  • OpenBSD: esta realmente no es un linux, pero quería probar gnome-shell en openbsd, en verdad que hicieron un buen trabajo, pero no logré configurar mi tarjeta de red inalámbrica, por lo que la tuve que dejar, a aparte que no podía instalar algunos paquetes vitales, asi que la tuve que dejar muy a mi pesar.
  • Arch: luego de pensarlo por un rato, decidí usar arch, mi sorpresa es que ya tiene systemd y la instalación fue bastante rápida, se parece un poco a la de gentoo, luego de un corto periodo instalando y configurando tenía un S.O. totalmente funcional, por lo que decidí quedarme con ella para poder realizar un grueso de trabajo que tenía por delante y asi fue un gnome 3.12, un systemd, es una distro rolling release, por lo que me parecía apropiada para mi que me gusta utilizar versiones experimentales y más nuevas de diferentes paquetes. Fue una experiencia agradable, pero tengo que decir que extrañaba la utilización de los flags y de los eselect, a parte que el kernel montaba muchos módulos que no estaba utilizando, por otro lado, los paquetes AUR en algunas ocaciones eran demasiado inestables, el wally no me funcionaba, luego de actualizar el kernel se hacía dificil usar el KVM o el VirtualBox y así algunos detalles que se iban apilando, por lo que luego de culminar mis obligaciones decidí volver a instalar funtoo
Instalación de Funtoo:
    Como había decidido utilizar funtoo, vi que hay soporte nativo para ZFS, por lo que decidí probar usar un ZFS, no voy a hablar aqui sobre zfs y caracteristicas, solo puedo decir que junto con btrfs, es considerado uno de los sitemas de archivos de nueva generación, a parte que luego de leer un poco sobre ambos me incliné por zfs, más que todo porque esta documentada la instalación para funtoo, así que me arremangué las mangas nuevamente, me troné los dedo y me pusé a instalar mi nuevo funtoo.
    Cuando inicié la instalación me percaté que todavía usan OpenRC, esto es una limitante, aún no entiendo la negativa del grupo Gentoo/Funtoo para usar systemd por defecto, pero bueno, también tambien hay que considerar que las personas que contribuyen a gentoo y a funtoo son personas que no cobran por ello y lo hacen porque les gusta, bajo esta premisa, es un poco más comprensible que no hayan hecho la tarea de migración a systemd.
     Bueno dejando eso de lado, me quedo con mi OpenRC, así que me pongo a seguir el manual de zfs para funtoo, la instalación es bastante sencilla y muy parecida a la original, salvo que hay que utilizar los comando de zfs para crear el pool y las unidades zfs, cosa que no tiene mayor complicación, sin embargo lo que si me llama la atención es que utilizan una versión del kernel que se llama bliss-kernel, cosa que instalé sin embargo, me esta dando problemas con la tarjeta de sonido y con la tarjeta gráfica, por lo que decidí compilar el kernel a mano y colocarle las opciones que yo utilizo, para esto seguí un video viejo sobre la instalación del kernel , pero lo que no te dicen, es que luego de que tienes un kernel funcionando y decides actualizar o cambiar a un gentoo-sources o un vanilla-source, tienes que hacer algunas cosas, en mi caso gentoo-sources:
  • entrar en el archivo .config y agregar esta línea CONFIG_CRYPTO_ZLIB=y, para que esta otra funcione CONFIG_ZLIB_DEFLATE=y, porque si no van a tener problemas en siguiente proceso, luego de poner esas dos lineas se recompila el kernel
  • ahora con el kernel recompilado es necesario reinstalar los paquetes zfs zfs-kmod y spl, para que se creen dentro del kernel recien compilado los módulos para el siguiente paso,
  • luego ejecutamos bliss-initramfs para que nos cree el initrd, y el archivo generado lo copiamos dentro de /boot
  • yo siguiendo el manual de funtoo agregué estas líneas a mi /etc/boot.conf
"Funtoo ZFS" {
        kernel vmlinuz[-v]
        initrd initrd[-v]
        params root=tank/funtoo/root quiet
        # If you have an encrypted device with a regular passphrase,
        # you can add the following line
        params += enc_root=/dev/sda3 enc_type=pass
}
        Pero por alguna razón no funcionan con el bliss-kernel, sin embargo las deje allí. luego de los pasos anteriores hice un boot-update y me reconoce mi kernel, por lo que me senté a revisar mi configuración de grub.cfg:
set timeout=3

  insmod part_gpt
  insmod ext2
  set root=(hostdisk//dev/sda,gpt1)
  search --no-floppy --fs-uuid --set d88b1c30-ccec-48d8-8c1f-a7de04564520
if loadfont /grub/unifont.pf2; then
   set gfxmode=text
   insmod gfxterm
   insmod vbe
   terminal_output gfxterm
fi

set menu_color_normal=cyan/blue
set menu_color_highlight=blue/cyan

menuentry "Funtoo ZFS - vmlinuz-3.15.3-gentoo" {
  insmod part_gpt
  insmod ext2
  set root=(hostdisk//dev/sda,gpt1)
  search --no-floppy --fs-uuid --set d88b1c30-ccec-48d8-8c1f-a7de04564520
  linux /vmlinuz-3.15.3-gentoo root=tank/funtoo/root enc_root=/dev/sda3 enc_type=pass quiet
  initrd /initrd-3.15.3-gentoo
  set gfxpayload=text
}
menuentry "FuntooZFS - 3.12.22-KS.01" {
  insmod part_gpt
  insmod ext2
  set root=(hostdisk//dev/sda,gpt1)
  linux /kernels/3.12.22-KS.01/vmlinuz root=tank/funtoo/root enc_root=/dev/sda3 enc_type=pass quiet
  initrd /kernels/3.12.22-KS.01/initrd
}
set default=0

Como se puede ver solo agregúe la línea del initrd y luego agregué por si acaso la línea de el kernel-bliss, de tal manera que pueda seguir realizando arreglos si mi gentoo-sources falla.

Luego de reiniciar, todo anda perfectamente, ahora me voy a dar la tarea de migrar esto a systemd ya que si es mucho  más rápido para iniciar y tiene sus ventajas sobre openrc.

viernes, 24 de enero de 2014

Recuperación de tablas de particiones con testdisk


El día de ayer me toco realizar la creación de un pendrive (memoria USB) booteable, para realizar una instalación de ubuntu, como tengo mis imágenes ISO en un disco externo WD de 1 TB, motivo por el cual lo conecto y busco dentro de la partición correspondiente lo que necesito, así que me dispongo a usar dd para crear mi dispositivo booteable, sin embargo por andar conversando y distraído lo hice sobre el mismo disco de 1 TB (allí entendí el concepto de microinfarto), por lo que la tabla de particiones fueron borradas el disco fue reescrito con los datos de la ISO, bueno me pongo a investigar por internet como hacer file carving o realizar una recuperación de datos en particiones XFS, luego de un buen rato googleando, recordé que utilice foremost para la recuperación de unos datos de un servidor (que aparentemente habían sido borrados por accidente),  y recuerdo que me funcionó para lo que se necesitaba, sin embargo para este caso no me funcionó debido a que necesitaba una forma mucho más eficiente de recuperar mi partición; luego traté con gpart, pero no entiendo por qué me daba un error de punto flotante, por lo que lo descarté, así que me fui por mi última opción testdisk, luego de leer la documentación vi que era muy sencillo el trabajo de recuperación de la tabla particiones (que es lo que realmente quería en este caso), así que lo ejecuté

# testdisk

Me inicia un asistente que me hace escoger en que disco se va a realizar el análisis, allí selecciono mi disco externo, y luego indiqué el tipo de particiones (Intel para este caso), así que inicié el análisis, luego de culminado el proceso, me dice que consiguió una partición xfsXFS, por lo que sentí un alivio, y le mando a reescribir la tabla de particiones, y "magicamente" tengo mi partición XFS nuevamente visible en mi disco, perdí fue una partición que tenia aparte de 100 GB donde había puesto un Red Hat Eterprise 6.4, para una instalación que hice a principios de año y en realidad no sé si fue por el tipo de partición no me la reconoció, pero en realidad no me preocupo mucho, debido a que el grueso estaba en una partición de casi 900 GB donde estaba todos mis respaldos, fotos y videos.

Para más información de esta útil herramienta pueden visitar el sitio oficial de testdisk http://www.cgsecurity.org, una buena opción para casos donde una persona por accidente reescribe o borra la tabla de partición del disco.


domingo, 31 de marzo de 2013

ZSH

Ufff, que de tiempo que no escribía por aquí, en verdad que he tenido este blog bastante abandonado (nunca porque quisiera), sin embargo, en estos días decidí sucumbir ante la zsh, una shell algo particular, la usé por primera vez cuando instalaba mi funtoo usando el System-Rescue-CD y me di cuenta que la shell tenia unas cosas que no tenía la que usualmente usaba, así que hoy por fin, luego de investigar un poco de la zsh logré colocarla como quería, parecida al bash que presenta funtoo/gentoo.
    Para instalarla es necesario usar nuestro árbol de portage, para ello:

# emerge -av zsh zsh-completion

El primero es el paquete de la zsh y el segundo es el paquete necesario para el autocompletado dentro de nuestra caja gentoo/funtoo

luego de realizar la instalación es necesario editar el archivo .zshrc que se encuentra dentro del home del usuario por lo tanto (nota: cuando se inicia por primera vez ejecuta un ayudante para configurar las opciones que deseamos, pero yo prefiero editar mi archivo)

$ vim ~/.zshrc

y colocamos lo siguiente:

# Número de líneas en el historial
export HISTSIZE=100000
# Número de líneas salvada en el historial luego de cerrar sesión
export SAVEHIST=100000
# ubicación del historial
export HISTFILE=~/.zhistory
# comando cuando se ejecuta history
setopt inc_append_history
# módulo para completado de comandos de gentoo
unsetopt equals
# alias para listar en color
alias ls='ls --color'
# Módulo de autocompletado
autoload -U compinit
compinit
setopt completealiases
# Módulo de colores dentro del prompt
autoload colors; colors
zstyle ':completion:*' menu select

#color en el promt en este caso los de gentoo
export PS1="%{$fg_bold[green]%}%n@%{$fg_bold[green]%}%m%{$fg_bold[blue]%} %~ $ $reset_color"
#titulo en la bara de la terminal
chpwd() {
  [[ -o interactive ]] || return
  case $TERM in
    sun-cmd) print -Pn "\e]l%~\e\\"
      ;;
    *xterm*|rxvt|(dt|k|E)term) print -Pn "\e]2;%n@%m:~\a"
      ;;
  esac
}
#bindkeys como inicio y fin
typeset -A key
                                                                                                                        

key[Home]=${terminfo[khome]}

key[End]=${terminfo[kend]}
key[Insert]=${terminfo[kich1]}
key[Delete]=${terminfo[kdch1]}
key[Up]=${terminfo[kcuu1]}
key[Down]=${terminfo[kcud1]}
key[Left]=${terminfo[kcub1]}
key[Right]=${terminfo[kcuf1]}
key[PageUp]=${terminfo[kpp]}
key[PageDown]=${terminfo[knp]}

# configurar las teclas correctamente
[[ -n "${key[Home]}"    ]]  && bindkey  "${key[Home]}"    beginning-of-line
[[ -n "${key[End]}"     ]]  && bindkey  "${key[End]}"     end-of-line
[[ -n "${key[Insert]}"  ]]  && bindkey  "${key[Insert]}"  overwrite-mode
[[ -n "${key[Delete]}"  ]]  && bindkey  "${key[Delete]}"  delete-char
[[ -n "${key[Up]}"      ]]  && bindkey  "${key[Up]}"      up-line-or-history
[[ -n "${key[Down]}"    ]]  && bindkey  "${key[Down]}"    down-line-or-history
[[ -n "${key[Left]}"    ]]  && bindkey  "${key[Left]}"    backward-char
[[ -n "${key[Right]}"   ]]  && bindkey  "${key[Right]}"   forward-char

if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then
    function zle-line-init () {
        printf '%s' "${terminfo[smkx]}"
    }
    function zle-line-finish () {
        printf '%s' "${terminfo[rmkx]}"
    }
    zle -N zle-line-init
    zle -N zle-line-finish
fi


Hay otros detalles, que colocaré cuando los logre configurar correctamente, preo con esto basta para tener una zsh funcionando correctamente, y seguir con la configuración acostumbrada dentro de nuestra bash

Luego de realizado esto, se debe editar el archivo /etc/passwd usando el comando vipw (no lo olviden). Y se cambia /bin/bash por /bin/zsh en el usuario que deseamos que use zsh luego reiniciamos la sesión y listo.


miércoles, 2 de mayo de 2012

Creando una app con python, Tkinter y libvirt

     Entre esta semana y la que pasó estuve dedicado a realizar una pequeña aplicación que se encargaba de conectarse con libvirt mediante python y Tkinter, como conozco bien el funcionamiento de virsh pensé que sería fácil, pero por el contrario me costo algunas horas de dedicación.

     La app que deseaba realizar consta de tres (3) botones uno para encender, uno para apagar y otro para verificar el estado de la máquina virtual, por lo tanto decidí aventurarme con python y tkinter para realizar dicha tarea; los dos primeros botones no presentaron ningún problema, ya que con os.sytem puedo ejecutar comandos de consola, pero para el tercer botón si que me costo varios días de dedicación a Internet y preguntándole a mis amigos programadores en python, sin embargo, luego de leer un buen rato y por recomendación de Carlos Ruíz (@carlosgr_arahat) un gran amigo y excelente programador, decidí trabajar con la API de libvirt con python, tal y como se comenta en este enlace.

     Me remangué las mangas y a programar, me dí cuenta de cuan oxidado estoy en este mundo, pero decidí no rendirme y terminar este proyecto, el cual culminé con éxito, aquí anexo el código para personas que como yo no tengan muchos conocimientos en programación y puedan obtener un buen resultado:

from Tkinter import *
import os
import tkMessageBox
from tkColorChooser import askcolor
from tkSimpleDialog import askfloat
from tkFileDialog   import askopenfilename
import libvirt


class App:

    def __init__(self, master):

        frame = Frame(master)
        frame.pack()

        self.button = Button(frame, text="Encender", fg="dark green", command=self.encender)
        self.button.pack(side=LEFT)

        self.button2 = Button(frame, text="Apagar", fg="dark red", command=self.apagar)
        self.button2.pack(side=LEFT)

    self.button3 = Button(frame, text="Estado", fg="black", command=self.estado)
    self.button3.pack(side=BOTTOM)

    def encender(self):
        os.system("virsh -c vbox:///session start Windows")
    def apagar(self):
        os.system("virsh -c vbox:///session destroy Windows")
    def estado(self):
    conn = libvirt.openReadOnly(None)
        dom0 = conn.lookupByName("Windows")
    estado = dom0.info()
    estado1 = estado[0]
    if estado1 == 1:
         tkMessageBox.showinfo(title="Estado de la Maquina virtual", message="La Maquina Virtual se Encuentra Encendida")
    else:
         tkMessageBox.showinfo(title="Estado de la Maquina virtual", message="La Maquina Virtual se Encuentra Apagada")

root = Tk()
root.title('Inicio de Maquina Virtual')
root.minsize(250,75)
texto = Label(root,text="Bienvenido al Gestor de Maquina Virtual\n" "A continuacion escoja encender para iniciar MV\n" "o Apagar para apagar la Maquina Virtual")
texto.pack()#side=TOP)
app = App(root)

root.mainloop()
    Como se puede apreciar es para trabajar con virtualbox, por lo tanto en la parte de los estados sólo me interesa es encendido o apagado, por eso lo dejé así, pero para un futuro no muy lejano pienso agregarle los demás estados.

    Por otra parte como se observa en el último botón (estado) me valgo del módulo libvirt para traerme el dom0.info() que me genera una lista de valores que luego sólo extraigo la primera posición que es un número del 0 al 8 y son los 9 estados de los dominios (sin estado, en ejecución, bloqueado, pausado por el usuario, se esta apagando, apagado, estrellado*, entre otros) más info aquí.

    Espero que les sea de ayuda esta información y que no pasen tantos días como yo haciendo esta tontería de aplicación.


*estrellado quiere decir que por algún error en el dominio este falló y dejó de funcionar.

domingo, 25 de marzo de 2012

python, wicd y python-updater



      El día de ayer actualicé mi distribución de funtoo GNU/Linux (cosa que hago regularmente semanal), cuando realizo la actualización me fijé que hay paquetes que se estan reinstalando y me percato que son versiones de python, así que no le presto mucha atención al asunto, la realidad está en que mi distro utiliza la versión 2.6 de python como base y no sé porque ya no esta soportada en las versiónes de los paquetes que tengo instalado, así que cuando se trata de iniciar el cliente de wicd (lo instalo, tal cual como me lo dice el manual de instalación de gentoo), este no inicia, lo trato de llamar desde la línea de comandos y me da el siguiente error:

$ wicd-client
Traceback (most recent call last):
  File "/usr/share/wicd/gtk/wicd-client.py", line 40, in
    import gtk
ImportError: No module named gtk

     Me da un error llamando al gtk, así que trato de hacer un emerge a pygtk, 

# emerge -av pygtk

 * IMPORTANT: 9 news items need reading for repository 'gentoo'.
 * Use eselect news to read news items.


These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] dev-python/pygtk-2.24.0-r2  USE="-doc -examples -test" PYTHON_ABIS="2.7 -2.6" 0 kB

Total: 1 package (1 reinstall), Size of downloads: 0 kB

     La versión 2.6 ya no esta compilada, en vez de compilar de nuevo con soporte para la 2.6, decidí avanzar en la versión del python (debido a que gentoo nos da la libertad de escojer la versión de python con la cual deseemos trabajar) utilicé eleslect

# eselect python list
Available Python interpreters:
  [1]   python2.6 *
  [2]   python2.7
  [3]   python3.2
     
     Como se ve estoy utilizando la versión 2.6, así que para escojer la versión 2.7, hago lo siguiente:

# eselect python set 2

# eselect python list
Available Python interpreters:
  [1]   python2.6
  [2]   python2.7 *
  [3]   python3.2

     Luego de esto, hago un python-updater para que se recompile todo con la nueva versión de python y problema solucionado.

   Por esta razón me gusta utilizar gentoo/funtoo, generalmente siempre estoy poniendo en práctica todos los conceptos que he aprendido a lo largo de mi historia con GNU/Linux y el software libre

domingo, 4 de marzo de 2012

Migrando de Oracle a Postgres con ora2pg

     En estos días estaba ayudando a un colega y gran amigo a instalar en su ubuntu GNU/LInux, el migrador de bases de datos de oracle a postgres ora2pg, el tuvo unos problemas con la parte de las librerias de perl y las variables de entorno, cosa que yo ya había sufrido el año pasado para la compilación de tOra desde los fuentes con soporte para oracle (para debian GNU/Linux claro), luego que se solvento este detalle el me hiso llegar un documento y expresamente me dijo públicalo en tu blog y es por eso que lo pongo en este post:

Migrar de oracle a PostgreSQL

Realizado por: Eduardo Marques
              Email: elportu@gmail.com
Revisado y Corregido por: Abraham Brito
                                 Email: powerman5020@gmail.com

Paso 1: Descargar el Oracle Instant Client de la página de Oracle.
  • Descargar la versión basic, dev, JDBC Supplement, SQL*Plus, SDK de la siguiente página:
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html?ssSourceSiteId=ocomen   (escoger  dependiendo de su sistema operativo)

Paso 2: Instalar paquete alíen
  • En los sistemas derivados de debian (como Ubuntu y mint) abrir una consola o terminal como root y ejecutar: 
# aptitude install alien
  • Nota en ubuntu pueden descargarlo directamente por el centro de software

Paso 3: Utilizamos alien para transformar los paquetes .rpm (de red hat y derivados) a .deb (binarios de debian)
  • Se abre una consola o terminal y como root ejecutamos el alien de la siguiente manera:
# alien -d nombre_depaquete.rpm
  • Instalar los paquetes generados por el alíen, nuevamente en una terminal como root ejecutar:
# dpkg -i nombre_paquete.deb
  • utilizando el editor de su preferencia creamos el archivo /etc/ld.so.conf.d/oracle.conf
  •  Y colocar la dirección donde se instalo oracle la cual puede ser la siguiente: “/usr/lib/oracle/11.2/client64/lib ” recuerde comprobar esta dirección puede cambiar si es otra versión de oracle o su sistema es 32bits
  • Instalar la librería libaio:
# aptitude install libaio1
  • Crear el siguiente archivo de configuración etc/ld.so.conf.d/oracle.conf y colocar la dirección donde se instalo oracle la cual puede ser la siguiente: “/usr/lib/oracle/11.2/client/lib/”
  • se ejecuta como root el comando ldconfig para crear los enlaces  simbólicos especificados en el paso anterior.
  • Pruebe la conexión con oracle usando el comando:
# sqlplus64 usuario/clave@ip/sid
  • Si los pasos anteriores fallan verifique esta pagina: 
https://help.ubuntu.com/community/Oracle%20Instant%20Client


Paso 4: Instalar el ora2pg
  • Ejecutamos como root los siguientes comandos en consola en distribuciones como ubuntu recordemos ejecutar sudo su:
# aptitude install cpanminus
# perl -MCPAN -e 'install DBI'
# cpan -i DBD::Oracle 


       En algunos casos la ejecución de la instruccion cpan da un error por no encontrar la librería de oracle o el oracle home, para solventar este error debemos configurar unas variables de entorno para el usuario root:
  • Usando el editor de texto de su preferencia se edita /root/.bashrc 
  • agregar al final del archivo
“export ORACLE_HOME=/usr/lib/oracle/11.2/client64”
“export LD_LIBRARY_PATH=$ORACLE_HOME/lib”

Nota: Recordemos que en este caso se esta utilizando el cliente de 64 bits si usan el 32 bits solo quiten el numero 64
  • guardar y ejecutar nuevamente la orden
#  cpan -i DBD::Oracle
Paso 5: Configurar el ora2pg (archivo ora2pg.conf)

  • Descargar el paquete desde el siguiente enlace:
  • http://sourceforge.net/projects/ora2pg/

  • Abrir una terminal y como root colocarse en la ruta del archivo descargado por ejemplo “/home/usuario/Descargas/”
  • ahora como root, desempaquetar y descomprimir el archivo descargado, en este caso:
# tar ora2pg-8.9.tar.bz2

  • Posicionarse dentro de la carpeta resultante:
# cd ora2pg-8.9/

  • Luego se compila el ora2pg de la siguiente manera
    # perl Makefile.PL
    # make && make install
    # aptitude install yum
    # perl -MCPAN -e 'install DBD::Pg'
    # aptitude install libdbd-pg-perl

Paso 6: configurar archivo de conexión ora2pg 
  • con el editor de su preferencia se edita el archivo /etc/ora2pg/ora2pg.conf  y agregar los parametros de su servidor y base de datos

Paso 7: Revisar manual de ora2pg en la página web oficial del proyecto:

    http://ora2pg.darold.net/config.html

Y listo ya tienen ora2pg, para realizar las migraciones de sus bases de datos de oracle a postgres, espero que les haya funcionado igual de bien que a nosotros.

Gracias Eduardo por dejarme compartir tu manual