Como instalar PyQt4 en un entorno Virtualenv.

En este post quiero explicar como compilar y instalar PyQt4 y SIP en un entorno de desarrollo utilizando Virtualenv, en este caso utilizando Python 2.7.

Lo primero que debemos tener en cuenta es instalar las dependencias necesarias.

En Archlinux:

# pacman -Sy python2-pip python2 libxext python2-pyqt4 base-devel 

En Debian:

# apt-get install python-pip python2.7-dev libxext-dev python-qt4 qt4-dev-tools build-essential

Ya con eso debería bastar a la hora de compilar. En mi caso estoy utilizando ArchLinux y con esas dependencias fue suficiente.

En caso de no tener Virtualenv instalado ejecutamos:

# pacman -Sy python2-virtualenv

ó

# apt-get install python-virtualenv

Iniciamos el entorno de desarrollo en la ruta que deseamos.

$ virtualenv /home/usuario/virtualenv/nombre

Descargamos el código fuente de PyQt4 y SIP:

### Entramos a la carpeta y creamos el directorio build
$ cd /home/usuario/virtualenv/nombre && mkdir build
$ cd build
### Descargamos el código fuente. 
$ wget http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.11/PyQt-x11-gpl-4.11.tar.gz
$ wget http://sourceforge.net/projects/pyqt/files/sip/sip-4.16/sip-4.16.tar.gz
### Y descomprimimos.
$ tar xzvf PyQt-x11-gpl-4.11.tar.gz
$ tar xzvf sip-4.16.tar.gz

Activamos el entorno virtual:

$ source ~/virtualenv/nombre/bin/activate

Ahora compilamos, primero SIP y luego PyQt.

### Entramos a la carpeta y compilamos
(nombre)$ cd sip-4.16
(nombre)$ python configure.py
(nombre)$ make
### Instalamos como root en este caso si deseamos.
(nombre)$ sudo make install

### Entramos al directorio de PyQt y compilamos
(nombre)$ cd ../PyQt-x11-gpl-4.11/
### Debemos especificarle la ruta del qmake de la versión de Qt que vamos a compilar, en el caso de ArchLinux por ejemplo, tenemos que especificar.
(nombre)$ python ./configure.py -q /usr/bin/qmake-qt4

Nos preguntara si aceptamos los términos de la licencia y escribimos ‘yes‘. Después toca esperar que chequee y genere todos los módulos y el archivo Makefile.

### Ahora instalamos:
(nombre)$ sudo make install

En el caso de PyQt si es necesario ejecutarlo como root o con sudo porque el necesita tener acceso a copiar los archivos a la ruta del Python del sistema que por lo general se encuentran en /usr/lib/python2.7/ y luego crear las librerías en el site-packages de nuestro entorno virtual activo, también crear los binarios necesarios en el directorio ./bin/ del entorno virtual y instalar los módulos de PyQt en el entorno virtual en ./share/sip/PyQt4/ como por ejemplo QtOpenGL y QtGui.

Ya con eso deberíamos tener funcionando perfectamente PyQt4 en nuestro entorno virtual. Lo podemos comprobar en una shell de Python de la siguiente manera.

(nombre)$ python
>>> from PyQt4 import *
>>>

Si no muestra ningún error importando es porque todo esta perfecto.

Suerte.

Saludos, feliz desarrollo.

Anuncios

Gitlab en Producción – Administrador de Repositorios Git

Qué es GitLab?

Es un aplicación para administrar proyectos con el control de versiones Git, basada en Ruby on Rails es software libre. Tiene un gran parecido tanto visual como funcionalmente a lo que es GitHub. En la página oficial del proyecto hay un demo que podemos probar.
En el podemos observar algunas de sus fucniones como manejar distintos proyectos, manejar usuarios, ver commits, ver archivos, ver ramas, ver gráficos, asignar tareas, ver meger, editar archivos, Wiki, entre otras.gitlab

Instlación (Debian Squeeze & ArchLinux)

1. Instalar las dependencias.

Como usuario root:
###Nota: los comandos con ‘#’ es como root y con ‘$’ como usuario git.
Debian:

# aptitude install build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl git-core openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev 

Archlinux:

# pacman -Sy --noconfirm --needed base-devel zlib libyaml openssl gdbm readline ncurses libffi curl git openssh redis libxml2 libxslt icu 

1.1. Instalar Python de no tenerlo:

Debian:

# aptitude install python2.6

Nota: La versión de python debe ser mayor 2.5 y menor a 3.x. Instalo la 2.6 porque es la que esta en los repositorios oficiales de Debian 6. Si quieren instalar la 2.7 deben agregar los repos de Debian 7. Para comprobar la version que tenemos instalada usamos python –version

ArchLinux:

# pacman -S python2

Gitlab busca por defecto un binario llamado python2 en /usr/bin/ sino lo tenemos debemos crearlo como un enlace simbolico de la siguiente forma:

# ln -s /usr/bin/python /usr/bin/python2

1.2. Instalar servidor de correo (Opcional)

Instala el servidor de correo si deseas recibir notificación por Correo.
El recomendado por Gitlab es Postfix, pero igual puedes instlar msmtp, sendmail, etc.
Debian:

# aptitude install postfix

Arch:

# pacman -S postfix

1.3. Instalar Ruby

Gitlab soporta Ruby mayor o igual a 1.9.3 y 2.0.0
Si tenemos instalada la versión 1.8 o menor debemos removerla
Debian:

# aptitude purge ruby1.8

Arch:

# pacma -R ruby1.8

La instalción en Debian 6:

$ mkdir /tmp/ruby && cd /tmp/ruby
$ curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz | tar xz
$ cd ruby-2.0.0-p247
$ ./configure
$ make
$ su -c "make install"
###Instalar el gems bundler usado para instalar Gitlab
gem install bundler --no-ri --no-rdoc

En Debian 7:

Se puede instalar la versión 2.0.0 de igual forma que en debian 6, o tambien se puede instalar la version 1.9.3 desde los repositorios:

# aptitude install ruby1.9.3

En Arch:

# pacman -S ruby

Eso te instalara la versión 2.0.0 de Ruby si quieres las versiones anteriores debes instalarlas desde los repos AUR con(si usas yaourt):

$ yaourt -S ruby1.9

1.4. Crear usuario para Gitlab

Debian:

# adduser --disabled-login --gecos 'GitLab' git

Arch:

# useradd -U -m -d /home/git git

1.5. Instalar Gitlab-Shell

GitLab Shell se encarga del acceso ssh y de gestión de almacenamiento, desarrollado especialmente para GitLab.

-Lo primero estar logueados como usuario git y cambiarnos al directorio /home/git

# su - git
$ cd
##Verificamos que estamos en el directorio con el comando pwd

-Clonar el repositorio:

$ git clone https://github.com/gitlabhq/gitlab-shell.git
$ cd gitlab-shell

-Copiar el config.yml.example a config.yml y editamos gitlab_url:

$ cp config.yml.example config.yml
$ vim/nano config.yml

En el gitlab_url colocamos el dominio que vallamos a utilizar para el Gitlab. Guardamos el archivo y salimos.
-Ejecutamos el instalador:

$ ./bin/install

1.6. Instalación de Gestor de Base de Datos.

– En este tutorial voy a utilizar PostgreSQL, de igual forma pueden usar MySQL, SQLite, MariaDB, etc.
En Debian 6:

# aptitude install postgresql-8.4 libpq-dev

Para utilizar la versión 9.1 deben instalarlos desde los repos de Wheezy

En Arch:

# pacman -S postgresql libpqxx

Ver aquí para mayor información de instalar postgresql en Arch

– Crear usuario git en Postgresql
Primero nos logueamos a la consola de postgres con el usuario postgres

# su - postgres -c 'psql -d template1'

Crear usuario y base de datos para el proyecto:

template1=# CREATE USER git WITH PASSWORD 'clave';
template1=# CREATE DATABASE gitlab OWNER git;
template1=# \q

-Probamos la conexión a la base de datos:

# su - git -c 'psql -d gitlab'
### Colocamos la contraseña si nos la pide

1.7. Clonar y Configurar el GitLab

-Cambiamos al usuario git y vamos al directorio de trabajo.

# su - git && cd /home/git

-Clonamos el proyecto

$ git clone https://github.com/gitlabhq/gitlabhq.git gitlab

-Entramos y cambiamos a la rama estable del proyecto:

$ cd gitlab
$ git checkout 5-4-stable
###Si queremos asegurarnos cual es la ultima versión estable ejecutamos:
# git branch -r

Si vemos algo como esto: Switched to branch ‘5-4-stable’ ya estamos en la rama.
-Ahora vamos a copiar el archivo ejemplo de configuración

$ cp config/gitlab.yml.example config/gitlab.yml
$ vim config/gitlab.yml

Abrimos el archivo y cambiamos el ‘localhost’ por el nombre del dominio y cambiamos el puerto sino estamos o no vamos a usar el puerto por defecto de nuestro servidor web.

-Damos permisos al usuario git para escribir el /log y /tmp

$ chown -R git log/
$ chown -R git tmp/
$ chmod -R 744  log/
$ chmod -R 744  tmp/

-Creamos algunos directorios necesarios.

###Satellites
$ mkdir ../gitlab-satellites
###Creamos carpetas de /tmp y le damos permisos
$ mkdir tmp/{pids,sockets}
$ chmod -R 744 tmp/{pids,sockets}
###Carpeta uploads
$ mkdir public/uploads
$ chmod -R 744 public/uploads

-Copiamos archivos de configuración de Unicorn.

$ cp config/unicorn.rb.example config/unicorn.rb

-Configuramos los datos del servidor Git al usuario git de acuerdo a lo que hemos colocado en config/gitlab.yml

$ git config --global user.name "GitLab"
$ git config --global user.email "gitlab@localhost"

-Configurar conexión a la base de datos.

$ cp config/database.yml.postgresql config/database.yml
$ vim config/database.yml

Cambiamos los parametros, database: gitlab, username: git y password: laClave. Si la base de datos la tenemos en otro servidor cambiamos host y port.

-Cambiamos a solo lectura el archivo.

$ chmod 640 config/database.yml

1.8. Instalar librerías necesarias con el gestor de paquetes de Ruby(gem).

# gem install charlock_holmes --version '0.6.9.4'
Para el siguiente paso debe tener instalado bundle
# gem install bundler --no-ri --no-rdoc

NOTA: Puede que no se instale el paquete modernizr porque le cambiaron el nombre a modernizr-rails, entonces pueden instalarlo manualmente o cambiando el nombre en el archivo Gemfile.

-Librerías para Postgres
Entramos en el proyecto sino no estamos en el.

$ cd /home/git/gitlab
$ bundle install --deployment --without development test mysql

1.9. Iniciar base de datos y activar funciones de Postgres (Como usuario git)

$ bundle exec rake gitlab:setup RAILS_ENV=production
Respondemos yes a la pregunta que nos hace. 

Con esto creara las tablas en la base de datos y creara un usuario administrador del cual nos mostrara los datos por pantalla.

2.0. Copiar script de incio.

Copiamos el script al directorio /etc/init.d/ y le damos permisos de ejecución

###Como usuario root
# cd /home/git/gitlab
# cp lib/support/init.d/gitlab /etc/init.d/gitlab
# chmod +x /etc/init.d/gitlab

Luego editamos el script /etc/init.d/gitlab
Buscamos la palabra “sudo” dentro del script y las borramos las 2 líneas que la contienen dejandolas así:

bash -l -c “$1”

echo “Usage: service gitlab {start|stop|restart|reload}” >&2

La otra opción es instalar sudo, pero yo no estoy trabajando con sudo en este tutorial.

3.0. Comprobar el estado de la aplicación

$ su - git -c "bundle exec rake gitlab:env:info RAILS_ENV=production"

– Iniciamos el script de inicio como root:

# /etc/init.d/gitlab start

3.1. Asegurarnos que todo esta corriendo bien, ejecutamos:

$ su - git -c "bundle exec rake gitlab:check RAILS_ENV=production"

3.2. Instalar y configurar el servidor web Nginx para correr la aplicación.

En Debian:

# aptitude install nginx

En Arch:

# pacman -S nginx

-Copiamos el archivo de configuración de Nginx al sites-available como root:

# cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab

Editamos en el archivo el parametro “server_name” por el dominio que vamos a utilizar y puerto si es necesario.

-Creamos enlace simbólico en el sites-enabled para activar el servicio:

# ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab

-Reiniciamos el servicio:

Debian:

# /etc/init.d/nginx start

Arch:

# systemctl restart nginx
# systemctl enable nginx

Y iniciamos el servidor Redis

# systemctl enable redis
# systemctl start redis

Con esto ya debería estar corriendo la aplicación en el servidor con el dominio que le hayan configurado. Si lo están haciendo localmente debería estar corriendo el http://127.0.0.1/ de estar configurado en el puerto por defecto.

Suerte.

Cualquier duda o comentario no duden en hacerlo. Saludos! o/

Fuentes:

Documentación Wiki ArchLinux – https://wiki.archlinux.org/index.php/Gitlab
Documentación oficial – https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md
Instalar Postgres en Archlinux – https://wiki.archlinux.org/index.php/PostgreSQL#Installing_PostgreSQL
Archivos .service para Archlinux – https://gist.github.com/axilleas/3305554

(Git) Herramientas gráficas y de Texto para GNU/Linux

  A veces resulta tedioso y poco vistoso usar la línea de comandos para revisar los logs de un proyecto desarrollado con GIT, hacer un diff, hacer un ‘commit‘, hacer un add, hacer push, entre muchas cosas que se pueden hacer con el versionador de código Git….

Es por ello que voy a listar algunas herramientas o aplicaciones útiles que he usado para esto:

  1. Gitg

Una Aplicación con una interfaz gráfica muy intuitiva, puedes hacer muchas cosas en ella como hacer commits, pushear, cambiar de rama, buscar ramas locales o remotas, revisar los logs súper detallados con gráfica de cambios de cada archivo, foto de la persona que hizo el commit, revisar el código del archivo con línea exacta, colores y símbolos, lo que ayuda bastante a la hora de detectar lo que buscas, revisas o quieres depurar.

Instalación: Debian/Mint/Ubuntu. Se puede hacer fácilmente con un:

# aptitude install gitg

Clonando el proyecto de aquí: http://git.gnome.org/browse/gitg/

o también descargandolo vía ftp desde: http://ftp.gnome.org/pub/GNOME/sources/gitg/

Interfaz de Gitg

2. Gitk

Una herramienta gráfica liviana hecha en C++ y GTK, con un poco menos de funciones que gitg pero también es muy útil para hacer una revisión rápida del log del proyecto, revisar ramas, commits, etc… Y puedes cambiar la interfaz de la app a tu gusto.

Instalación: Debian/Mint/Ubuntu desde la consola:

# aptitude install gitk

Descargar código fuente dese su sitio oficial en SourceForge:  http://sourceforge.net/projects/gitk/files/gitk-core/gitk-core-0.2.0/

gitk

3.  Git-cola

Es una app muy buena, liviana y con muchas funciones para manejar tus repositorios Git’s. La interfaz es intuitiva y fácil de usar.

Instalación: Debian/Mint/ubuntu:

# aptitude install git-cola

Enlace a su sitio oficial donde explica la instalación en distintos SO: http://git-cola.github.com/downloads.html

4. Tig

Herramienta desarrollada por los desarrolladores de ‘Gitk’, con una interfaz de terminal/consola es una app muy buena, rápida por supuesto para realizar muchas funciones en tus repositorios Git. Unas de sus funciones son: ver, revisar o buscar commits, hacer checkout a Ramas, hacer commits…

Instalción: Debian/Mint/Ubuntu:

# aptitude install tig

Clonar o descargar el proyecto: https://github.com/jonas/tig

Bueno existen muchas aplicaciones para esto pero para mí las mas destacadas son las antes mencionadas y a demás son las que me más me han gustado. 🙂

Saludos! Happy hacking.

Uso medio-avanzado de Git

Empezar a trabajar con Git en tu proyecto.

Lo primero que haríamos es crear un repositorio local en el que va a trabajar el git con (ojo debemos estar situados en la raíz del directorio del proyecto):

  • $git init

Con el comando anterior ya tendremos el repositorio creado; podemos verificarlo con: $ls -a si vemos el directorio (.git/) es porque se a creado corectamente nuestro repositorio local, ya con esto podemos crear commits y movernos por el historial.

Ahora debemos añadir todos nuestros archivos al repositorio creado para empezar a versionarlos.

  • $git add *

Ya tenemos todos los archivos añadidos para comprobarlo usamos el comando:

  • $git status

Ahora si para agregar todos los archivos al repositorio hacemos el commit.

  • $git commit -am “Empezando a versionar el proyecto”

Con esto ya tenemos todos los archivos guardados en un commit. Para comprobarlo vemos el historial de commits con:

  • $git log

Como respuesta deberiamos ver un unico commit que es el que acabamos de hacer.

Ahora si viene la mejor parte.

Configuración de git.

Vamos a configurar especificamente el proyecto actual.

Configurar el nombre: $git config user.name “Nombre Apellido”

Configurar correo: $git config user.email ejemplo.2@gmail.com

Activar el colores de los diff: $git config color.diff auto

gitignore

Como su nombre lo indica sirve para git ignore archivos que no queremos versionar en el proyecto. Debemos crear el archivo el directorio raíz del proyecto así por ejemplo: $vim .gitignore (así creara el archivo oculto).

Un ejemplo para archivo .gitignore puede ser el directorio nbproject que crear Netbeans cuando creamos un proyecto en el cual esta nuestra configuración local. Sino queremos versionar este directorio abrimos el archivo .gitignore y colocamos:

  • nbproject/*

Si queremos ignorar solo un archivo especificamos la ruta de ese archivo.

Manejo de ramas o branch

Crear una rama local.

  • $git branch nueva_rama

Cambiar a otra rama.

  • $git checkout nombre_rama

Crear una rama nueva y cambiarse a ella de una vez.

  • $git checkout -b nueva_rama

Crear una rama nueva que apunte a una remota y cambiar a ella de una vez.

  • $git checkout -b nueva_rama origin/rama_remota

Unir ramas: para unir ramas usamos merge nos localizamos en una rama y luego hacemos:

  • $git merge otra_rama

Subir una rama local al servidor remoto.

  • $git push origin rama_local

Listar ramas.

  • Locales: $git branch
  • Remotas: $git branch -r
  • Ambas: $git branch -a

Eliminar una rama local.

  • git branch -d rama_local

Eliminar rama remota.

  • $git push origin :nombre_rama

Crear un rama local que haga seguimiento a una remota.

  • $git branch –track nueva_rama origin/rama_remota

Manejo de archivos

Eliminar cambios de un archivo y regresar a la ultima versión:

  • $git checkout ruta_archivo

Volver a una versión estable de un archivo:

  • $git checkout HASH — ruta_archivo

Descartar ultimos commits hechos:

  • git reset –hard HEAD

Para forzar push en el repositorio remoto:

  • git push origin +master

Recuperar commits eliminados:

  • $git reflog # indentificamos el commit
  • $git reset –hard HEAD

Manipulación de commit

A veces queremos modificar el ultimo commit antes de hacer push para modificar la descripción sería:

  • git commit –amend

Unir varios commits en uno solo:

  • git rebase -i HEAD

Para el que quiera profundizar mucho más aqui les dejo un enlace de un Video toturial muy bueno:

http://www.youtube.com/watch?v=fxolktqi3Rs&feature=plcp&context=C3fbbfb4UDOEgsToPDskK2dKYHlQPAjIoVQnuHyyjE

Linux User = #533200

Ejecutar aplicaciones desde la consola y seguirla usando

Sabemos que para ejecutar cualquier aplicación desde la consola de linux solo debemos poner la mayoría de las veces el nombre de la aplicación o a veces las iniciales. por ejemplo para ejecutar el editor de texto gedit:
$ gedit

Ahora podemos ver, cuando el programa se ejecuta una serie de procesos de la aplicación que van llenando la consola y la dejan inoperativa al menos que se abra otra pestaña u ventana. Lo cual es bueno si queremos detentar algún error en la aplicación, pero también es malo porque si cerramos la consola también se cerrara la aplicación que en ella se este ejecutando. Ahora para esto hay unas soluciones entre ellas. Utilizar el simbolo & después del nombre de la aplicación. Ejemplo:
$ gedit &

Esto nos ejecutara la aplicación y nos dejara operativa la consola para seguirla usando, pero seguimos dependiendo de ella porque si la cerramos veremos como la aplicación de cierra también. Esto puedo ser bueno si queremos ejecutar varias aplicaciones desde la misma consola y luego que la cerremos se cerraran todas las que hemos ejecutado sin tener que cerrarlas una por una.

Pero si lo que queremos en no depender de la consola, lo que debemos hacer es una combinación entre el simbolo “&” y el comando nohup de la siguiente forma:
$ nohup gedit &

Con esto se ejecutara la aplicación solo con presionar la tecla ENTER después de haberlo ejecutado quedara operativa la consola y no dependeremos de ella (Si la cerramos la aplicación o aplicaciones que hemos ejecutado no se cerraran). Verán algo como:

Saludos espero que les haya servido de algo.!

Visítenme en:
Google+
Facebook

Proyecto Debian

El Proyecto Debian es una asociación de personas que han hecho causa común para crear un sistema operativo (SO) libre. Este sistema operativo que hemos creado se llama Debian GNU/Linux, o simplemente Debian para acortar.

Un sistema operativo es un conjunto de programas y utilidades básicas que hacen que su computadora funcione. El centro de un sistema operativo es el núcleo (N. del T.: kernel). El núcleo es el programa más importante en la computadora, realiza todo el trabajo básico y le permite ejecutar otros programas.

Los sistemas Debian actualmente usan el núcleo de Linux. Linux es una pieza de software creada en un principio por Linus Torvalds y soportada por miles de programadores a lo largo del mundo.

Sin embargo, se está trabajando para ofrecer Debian con otros núcleos, en especial con el Hurd. El Hurd es una colección de servidores que se ejecutan sobre un micronúcleo (como Mach) para implementar las distintas funcionalidades. El Hurd es software libre producido por el proyecto GNU.

Una gran parte de las herramientas básicas que completan el sistema operativo, vienen del proyecto GNU; de ahí los nombres: GNU/Linux y GNU/Hurd. Estas herramientas también son libres.

Fuente