Archive for March, 2008
Instalacion y uso de subversion sobre Ubuntu Gutsy
Lo primero sera instalar subversion, esto lo haremos mediante el instalador de paquetes apt-get
# sudo su - # apt-get install subversion
Ya que tenemos instalado subversion, pasaremos a leer un poco de teoria:
Subversion sirve para gestionar un repositorio de archivos y sus distintas versiones. Un repositorio no es nada más que un sitio donde guardar ficheros. No nos importa cómo se guardan, sino cómo se accede a estos ficheros. Normalmente se usa una base de datos.
Pero la idea es que un repositorio es como un directorio, al que le puedes pedir los ficheros que tenía hace un mes, o hace 2 días. Es capaz de recuperar el estado de los mismos a partir de la base de datos.
Así, como usuario, lo importante es poder recuperar distintas versiones ( en especial las últimas ) y poder actualizar el repositorio con una versión nueva.
Realmente alguna de estas cosas se puede hacer con metainformación. Es decir, información sobre la propia información que está guardando el repositorio. Así, que aparte de los ficheros, el repositorio debe guardar cuando llegaron hasta él, por cuántas versiones distintas ha pasado, y este tipo de información que le permita cumplir su objetivo.
A diferencia de CVS, Subversion hace las revisiones globales del repositorio.
Esto quiere decir, que un cambio en un fichero no introduce un salto de versión únicamente en este fichero, sino en todo el repositorio ( que avanza una _revisión_ )
Vamos a realizar una serie de ejercicios a modo de ejemplo sobre el uso básico de SVN. Luego iremos incrementando el orden de dificultad hasta montar un servidor sencillo de SVN.
Lo primero que hay que hacer es crear nuestro repositorio. A tal efecto, podemos ir preparando el sistema para hacerlo de la forma correcta.
# mkdir -p /home/pianodaemon/svnroot # svnadmin create /home/pianodaemon/svnroot/ProyectoPato
Ahora la necesidad que me surge es subir mi software a mi repositorio recien creado….. para esto mi software se llama softwarepatito, mi software patito inclulle un fichero de texto Readme.txt es todo.
Entonces la forma como lo subiria al repositorio seria la siguiente:
# cd /home/pianodaemon/softwarepatito/ && ls Readme.txt
$ cd /home/pianodaemon/softwarepatito/ $ svn import file:///home/pianodaemon/svnroot/ProyectoPato -m"Version Inicial" Adding README.txt Committed revision 1.
El comando import de svn, lo que hace es copiar todo el árbol de directorios actual desde el que nos encontramos, como primera versión del repositorio.
Con la opción -m, le hemos dado el mensaje de Log directamente. Si no usamos la opción -m, entonces se abrirá el editor por defecto del sistema y tendremos la oportunidad de escribir ahí. Si no se escribe nada, entonces subversion da la opción de abortar.
El subdirectorio /home/pianodaemon/softwarepatito/ (el directorio inicial de nuestro software) ahora ya no es una copia de trabajo que provenga del repositorio… por lo que podriamos decir que ya no esta al dia. De hecho, no sirve para nada más. Así, que podemos borrarla sin temor:
# rm -rf /home/pianodaemon/softwarepatito/
Vamos ahora a obtener nuestra Copia Local. Esto es de gran importancia, porque es el directorio de trabajo, desde donde se supone vamos a ir subiendo los cambios hacia el repositorio. Para ello se usa el comando checkout de svn.
# cd /home/pianodaemon/ # svn checkout file:///home/pianodaemon/svnroot/ProyectoPato $ ls -l total 4 drwxr-xr-x 3 pianodaemon users 4096 2004-05-12 16:44 ProyectoPato
Por cierto, también puedes querer copiarlo con otro nombre.
# svn checkout file:///home/pianodaemon/svnroot/ProyectoPato DuckProyect # ls -l # total 8 drwxr-xr-x 3 pianodaemon users 4096 2004-05-12 16:44 ProyectoPato drwxr-xr-x 3 pianodaemon users 4096 2004-05-12 16:44 DuckProyect
Bueno… hasta este punto creo que he sido muy claro… Bueno. Empecemos a ver un poco mas de como usar subversion en base a las necesidades que surgen durante el desarrollo.
Hablando un poco mas en castellano… digamos que a nuestro desarrollo le necesitamos agregar un segundo fichero de texto…. entonces lo hacemos por que no hay de otra,… pero este cambio requiere subirce al servidor de subversion, esto se tiene que hacer para que otros usuarios puedan disponer tambien de este fichero de texto en sus respectivas copias de ProyectoPato que han bajado ellos a sus ordenadores para desarrollar la parte que les toca del software( ya que hablamos de un grupo de frekees desarrollando en grupo ).
Aqui muestro como genero el segundo fichero de texto Readme2.txt (este podria ser un fichero de c, python, o algun otro lenguaje de programacion ):
$ cd /home/pianodaemon/ProyectoPato/ $ echo "Segundo fichero de pruebas" > Readme2.txt $ svn add Readme2.txt A Readme2.txt $ svn commit -m"Nuevo fichero agregado" Adding Readme2.txt Transmitting file data . Committed revision 2.
Como se puede observar, una vez dentro de una copia local, NO es necesario indicarle la ruta al repositorio, pues ya la conoce. svn add realmente no añade el fichero al repositorio, simplemente lo marca para añadir. El que ejecuta la operación finalmente es el comando svn commit. Advierta que ahora estamos en la revisión 2 del código.
Vamos a modificar un fichero de estos. Le añadadiremos una línea.
$ cd /home/pianodaemon/ProyectoPato/ $ echo "Esto es otra linea" >> Readme.txt
Y subimos los cambios
$ svn commit -m"Linea añadida" Sending Readme.txt Transmitting file data . Committed revision 3.
Vamos a probar otra cosa interesante…. con este comando, svn diff podemos ver las diferencias entre el repositorio y
nuestra copia local.
$ echo "Otra Nueva Linea" >> Readme.txt svn diff Index: Readme.txt =================================================================== --- Readme.txt (revision 3) +++ Readme.txt (working copy) @@ -1,2 +1,3 @@ Mi primer fichero en SVN Nueva Linea +Otra Nueva Linea
Descarga musica Psy Trance
Dejo a su disposicion la siguiente liga
http://www.psysurfeur.com/mp3-all.html
Instalando phpcake en ubuntu gutsy
A lo mejor te estas preguntando que es Cake Php, es un framework para Php de la misma manera que Rails es para Ruby, basicamente es una utilidad diseñada para facilitar el desarrollo de proyectos en Php.
Ahora la siguiente pregunta que puede que te estes haciendo sea ¿Debo utilizarlo?
Pues debes utilizarlo si te gusta Ruby On Rails, si sabes de Php pero no tienes tiempo para aprender otro lenguaje, si estas cansado de programar siempre las mismas cosas, si compartes hosting, si quieres hacer más en menos tiempo, si quieres usar templates, si quieres utilizar urls limpias y no pasar las variables con las típicas urls index.php?id=21
Para instalar el fabuloso cake sobre ubuntu gutsy basta con hacer lo siguiente:
root@pianodaemon-laptop:~# apt-get install cakephp root@pianodaemon-laptop:~# apt-get apache2 mysql-server root@pianodaemon-laptop:~# apt-get install php5-mysql
Esto te instalara todo lo que requieres
Ahora activemos el modulo rewrite de apache2
root@pianodaemon-laptop:~# a2enmod rewrite This module is already enabled!
A estas alturas ya tienes cake instalado, asi que procedemos a configurarlo para que tu, ya puedas de ahi partir hacia cosas mas avanzadas:
root@pianodaemon-laptop:~# ls /usr/share/php/cake/ app app_model.php bootstrap.php dispatcher.php scripts app_controller.php basics.php config libs vendors
Cuando hemos instalado cake mediante la herramienta de paquetes synaptic… este nos ha dejado el paquete cakephp sobre el directiorio que se muestra arriba… es importante que memorices la ruta del mismo.
Ahora procedemos a sacar una copia de cake, la cual usaremos para nuestro desarrollo muy particular:
root@pianodaemon-laptop:~# cp -rf /usr/share/php/cake/ /var/www/
Ya que no es seguro para la integridad de tu sistema linux el trabajar en modo root, adaptaremos nuestra copia particular de root para trabajarla con nuestro usuario de sesion comun, en el caso mio mi usuario de session comun es pianodaemon:
root@pianodaemon-laptop:~# chown pianodaemon:users -R /var/www/cake/
Esta imagen te muestra el resultado del acceso a la carpeta cake para uno usuario de sesion comun y corriente… Ademas agregue la carpeta cake, a los accesos directos de Mi Navegador de archivos Nautilus.
![]()
He creado anteriormente a este tutorial una base de datos de nombre MORALES, y le he dado los permisos para ser accedida desde localhost por el usuario ‘pianodaemon‘ con password ‘123qwe‘ ( todo esto sobre la shell de mysql ), esta base de datos tambien posee una tabla con nombre ‘users‘:
create schema MORALES; Grant all on MORALES.* to pianodaemon@localhost identified by '123qwe'; CREATE TABLE `users` ( `id` int(10) unsigned NOT NULL auto_increment, `login_name` varchar(10) default NULL, `first_name` varchar(30) default NULL, `second_name` varchar(30) default NULL, `password` varchar(255) default NULL, `state` char(1) default NULL, `email` varchar(50) default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Ahora procedemos a retocar el fichero /var/www/cake/app/config/database.php
![]()
Estable el siguiente directorio raiz en apache2…. esto lo puedes hacer modificando el fichero /etc/apache2/sites-available
DocumentRoot /var/www/cake/app/webroot
Sobre el mismo fichero tambien modifica el valor del tag Directory /var/www/ a Directory /var/www/cake/app/webroot
Listo ahora prueba lo que has hecho…(recuerda que modificaste ficheros de apache… por lo que te recomiento reiniciarlo):
Puedes checarlo invocando desde cualquier navegador la url http://localhost/
