javoaxian cambió a: javoaxian.me
Este blog se mantendrá como histórico del nuevo javoaxian.me. Por tal motivo, sólo serán creados post que harán referencia a los del nuevo blog. Si hay dudas y comentarios, favor de hacerlos en javoaxian.me.

sábado, 8 de marzo de 2008

Guía para instalar Subversion (SVN) y crear un repositorio en Ubuntu 7.10 (Gutsy Gibbon)

Actualizaciones 2008-03-28:
Funciona en Debian configurando el comando sudo como aquí se menciona o ejecutando todo lo referente a sudo como root.
También funciona en otras distribuciones, únicamente hay que instalar los paquetes subversion subversion-tools openssh-server de acuerdo a la distribución que usan.

Para los que no han usado Subversion (SVN), les comento que este software es un Sistema de Control de Versiones, y sirve, como su nombre lo dice, para llevar un control de versiones de proyectos, documentos y de cualquier archivo del cual se quiera tener un control de todos los cambios que se hacen sobre él.

Ésta es una guía rápida para instalar este software y de manera sencilla se explicará como crear un repositorio. Es importante mencionar que SVN (como también se conoce a Subversion) cuenta con una herramienta para administrarlo por medio de Apache, aunque en este caso, no nos enfocaremos a habilitar esta opción. La forma para ingresar al repositorio en este caso, será mediante una conexión local si se tiene una cuenta dentro del mismo servidor, o por medio del protocolo Secure Shell (SSH).

Para casos prácticos también instalaremos openssh para conectarnos por medio de SSH al servidor que tendrá el repositorio.

Pues menos rollo y más acción. Lo que realizaremos primero, será instalar todo el software que necesitaremos para que pueda funcionar nuestro repositorio y el servidor para conectarnos remotamente por medio de SSH.

$ sudo apt-get install subversion subversion-tools openssh-server

Nos aparecerá algo semejante a lo ésto.

Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes extras:
libapr1 libaprutil1 libpq5 libsvn1
Paquetes sugeridos:
rssh molly-guard db4.4-util libsvn-ruby1.8
Paquetes recomendados
python-subversion libsvn-perl libconfig-inifiles-perl exim4
mail-transport-agent
Se instalarán los siguientes paquetes NUEVOS:
libapr1 libaprutil1 libpq5 libsvn1 openssh-server subversion
subversion-tools
0 actualizados, 7 se instalarán, 0 para eliminar y 111 no actualizados.
Necesito descargar 1678kB de archivos.
Se utilizarán 7324kB de espacio de disco adicional después de desempaquetar.
¿Desea continuar [S/n]?

Presionaremos "S" y "Enter" para iniciar la instalación.

Una vez terminada la instalación, está todo listo para crear nuestro primer repositorio. Crearemos un directorio donde queramos que se aloje el repositorio, en éste caso crearé una carpeta llamada SVN dentro de mi HOME.

$ cd $HOME
$ mkdir SVN

Ahora crearemos el repositorio con el comando svnadmin dentro del directorio que SVN.

$ svnadmin create $HOME/SVN

Ha quedado creado el repositorio, lo que ahora se necesitará hacer es incrustar información. Se recomienda que se creen las secciones trunk, branches y tags. Donde trunk almacena el proyecto principal, branches almacena posibles proyectos alternos, y por último tags almacena las versiones listas para entregar.

Para construir las secciones antes mencionadas, hay varias formas de hacerlo, en éste caso crearemos las 3 secciones y posteriormente las importaremos al repositorio.
Crearemos un directorio temporal y dentro de éste, crearemos los directorios trunk, branches y tags. También crearemos el directorio que tendrá el proyecto dentro de trunk, y que en este caso le pondré javoaxian.

$ mkdir tmp
$ cd tmp
$ mkdir trunk branches tags
$ mkdir trunk/javoaxian

Ahora importaremos esta estructura al repositorio de la siguiente manera.

$ svn import . file:///home/javoaxian/SVN -m "Mensaje para indicar la acción que estamos realizando"

Nos aparecerá algo similar a esto.

Añadiendo trunk
Añadiendo trunk/javoaxian
Añadiendo branches
Añadiendo tags

Commit de la revisión 1.

La línea que acabamos está formada por algunos elementos que aclaré.
El comando "svn" nos permite efectuar una acción en el repositorio.
La opción "import ." le indica al comando svn que deberá importar todo lo que se encuentra en el directorio actual. Podríamos cambiar el caracter "." por la ruta de algo que deseemos importar.
La opción "file://" le indica al repositorio que va a hacer una conexión desde el mismo equipo al repositorio y posterior a ésto, se indica la ruta de donde se aloja el repositorio, que en el caso del ejemplo es /home/javoaxian/SVN.
Por último, la opción "-m" indica que se va a agregar un comentario, éste debe de ir entre comillas dobles después de la opción -m.

Si desearamos realizar la conexión remota por medio de ssh a un repositorio externo a nuestro servidor, el comando se pondría de la siguiente manera.

$ svn import . svn+ssh://javoaxian@servidor.net/home/javoaxian/SVN -m "Mensaje para indicar la acción que estamos realizando"

Si observan, la línea que cambio fue la que indicaba file://, por svn+ssh:// y posteriormente se coloca la cuenta@servidor.del.repositorio y seguido la ruta completa donde se encuentra el repositorio.

Ahora ya puede borrar el directorio temporal que se creo. Nos saldremos del directorio (en caso de estar situados en él) y lo borraremos.

$ cd ..
$ rm -rf tmp/

Ya tienen listo el repositorio y en trunk la sección javoaxian para allí guardar todo lo que necesiten controlar de su proyecto.

Si desean saber más sobre Subversion, quizas estos enlaces les puedan interesar:
http://svnbook.red-bean.com
http://www.wikilearning.com/tutorial/tutorial_de_subversion/6411

3 comentarios:

gomezbjesus dijo...

Primeramente felicidades por tu sitio, nunca habia encontrado un blog con tantos tutoriales realmente utiles. Segundamente algunas dudas con respecto a esta entrada, la implementacion del canal cifrado para el protocolo SVN es automatica? es decir, aparte de la linea de instalacion que mencionas aqui, no hiciste otra configuracion? tengo un buen rato buscando esta informacion y ahora me entero de que solo instalas los paquetes y ya. Por otro lado, esa conexion que haces desde linea de comando anteponiendo svn+ssh:// tambien aplica cuando lo haces con un cliente SVN, como podria ser Tortoise SVN en Winbugs? Saludos.

javoaxian dijo...

Hola gomezbjesus, gracias por tus felicitaciones, espero poder seguir publicando artículos que sean de interes.

Con relación a lo que me preguntas, el canal cifrado lo creas usando una conexión segura por medio de ssh. Y eso te lo permite el paquete openssh-server el cual es el servidor para aceptar peticiones de tipo ssh. Lo único que haces con svn es indicarle que te vas a conectar a través del puerto 22 (protocolo de ssh). Recuerda que ssh es una alternativa para conectarte a un equipo remotamente, es un protocolo similar a telnet pero creando un canal cifrado. Yo he conectado perfectamente Tortoise con este mismo método. Como te comento, la instrucción svn+ssh:// le indica al comando de svn que se va a conectar a través del protocolo de ssh al equipo que le estás especificando. Es como si hiceras algo como esto: ssh javoaxian@servidor.com. Recuerda que si tienes configurado un firewall o tcpwrapper, deberás dar permisos para que tus usuario puedan conectarse por medio del servicio ssh al servidor donde está el repositorio.

Espero haber aclarado tu duda y sino, aquí estamos para ayudarte.

En este otro post expongo otra manera de instalar subversion pero usando como protocolo de conexión el puerto 80 que es el del servidor web.

Anónimo dijo...

Muy buen tutorial, pero lo necesitaba para la última versión de Ubuntu (9.10) y aca lo encontre http://www.hasheado.com/instalar-servidor-subversion-svn-en-ubuntu.html es muy parecido, espero les sirva, saludos.