lunes, mayo 21, 2012

Instalando Subversion en CentOS

Instalando Subversion en CentOS


Aunque el título parezca un poco simple, el instalar Subversion en CentOS tiene su truquillo si lo que quieres es instalar la última versión de éste.
Uno de los puntos “fuertes” de CentOS y normalmente de cualquier servidor, es que son muy estables, pero esto tiene su punto negativo, y es que para ello nunca usan las últimas versiones del software, sino usan versiones antiguas, pero al mismo tiempo muy probadas y por consiguiente muy estables también. El usar una versión antigua de software no es nada malo, siempre y cuando esa versión todavía tenga soporte y está parcheada con los últimos parches.
Dicho esto, algunas veces podemos querer correr versiones más modernas en nuestro servidor por el motivo que sea. Ya sea porque necesitemos usar alguna funcionalidad que la nueva versión ofrezca, mejor integración con otros sistemas/productos en nuestra red, etc.
En casa tengo un pequeño servidor que corre CentOS y el otro día me decidí a montar mi propio Subversion. Para ello, sólo tenía que hacer:

yum install mod_dav_svn subversion
Esto te instala Subversion y el modulo para integrarlo con Apache. El “problema” es que la versión que hay en los repositorios oficiales de CentOS es la versión 1.4 y yo quería instalar la versión 1.6, la cual no está en dichos repositorios.
Lo primero es encontrar un repositorio fiable dónde tengan dicha versión. Nota, siempre puedes bajar el código fuente y compilar, pero eso requiera más trabajo y luego mantenerlo de forma manual.
Unos de los repositorios más conocidos es RPMforge. En este enlace os explican como instalar dicho repositorio.
Una vez tengáis instalado dicho repositorio, si intentamos de nuevo instalar o actualizar Subverison, vemos que todavía, lo que nos trae yum es la versión 1.4. Para que yum busque en el nuevo repositorio que acabamos de instalar tienes que hacer los siguiente:
Tenemos que editar /etc/yum.repos.d/CentOS-Base.repo y excluir de las secciones base y update. subversion y y mod_dav_svn. Esto lo hacemos con la etiqueta exclude. Poniendo la siguiente línea en ambas secciones:

exclude=subversion,mod_dav_svn
Luego debemos de hacer un update del sistema:

yum update
Si ya tenías subversion previamente instalado, te debería de decir que hay una actualización. Si no lo tenías instalado, entonces instálalo:

yum install mod_dav_svn subversion
Una vez hecho esto, vamos a crear un repositorio y activar el modulo de Apache (Asumos que ya tienes Apache instalado, sino este es un buen momento para hacerlo).
Edita el fichero /etc/httpd/conf.d/subversion.conf. Aquí copio el trozo de código de mi fichero de configuración:

<location repos="">

DAV svn

SVNPath /var/www/svn/repos

AuthType Basic

AuthName "Subversion repos"

AuthUserFile /etc/svn-auth-conf

Require valid-user

</location>







Ojo con el SVNPath. Por defecto el fichero de configuración viene tiene comentada todas esas líneas y algunas más, pero en vez de SVNPath, SVNParentPath. Al principio no me di cuenta y decomenté esa línea y no podía acceder a subversion desde Apache o Eclipse. Así que ¡cuidadín!
Una vez hecho eso:

service httpd restart
Ahora vamos a crear los usuarios que podrán acceder al SVN:

htpasswd -cm /etc/svn-auth-conf nombre_usuario
Después de tendrás que introducir la contraseña.
Ahora vamos a crear el repositorio. El path lo puedes cambiar si quieres, pero recuerda cambiar tu fichero de configuración también.

cd /var/www/

mkdir svn

cd svn
svnadmin create repos
chown -R apache.apache repos
service httpd restart
Una vez hecho esto, deberías de poder abrir tu navegador e ir a http://tuservidor/repos y deberías de poder ver el contenido de tu subversion. Te debería preguntar por el nombre de usuario y la contraseña.
Enlaces:
http://wiki.centos.org/HowTos/Subversion
http://wiki.centos.org/AdditionalResources/Repositories/RPMForge?action=show&redirect=Repositories%2FRPMForge#head-20e1f65f19ccf2f5fbf5adb30dbaf5ea963a64ae
http://stackoverflow.com/questions/96597/how-do-i-upgrade-to-subversion-1-5-on-centos-5

  1. Pedro Navarro Says:
    Hola, con la ayuda que publicas fue muy sencillo, configurar el svn y el apache, solo me quedan un par de preguntas:
    1.- Como hago para tener varios repositorios en ese mismo servidor?
    2.- En Web como se puede hacer para que los archivos de los repositorios se vean como un explorer de windows?
    Saludos y gracias!!
  2. tuxotron Says:
    Hola Pedro,
    para tener más de un repositorio, todo lo que tienes que hacer es crear el repositorio en si. Supongamos que quieres crear repos2 y que ya previamente creaste otro repositorio en /var/www/svn:
    cd /var/www/svn
    svnadmin create repos2
    chown -R apache.apache repos
    service httpd restart
    Luego tienes que añadir al fichero de configuración del módulo de apache:

    DAV svn
    SVNPath /var/www/svn/repos2
    AuthType Basic
    AuthName “Subversion repos2″
    AuthUserFile /etc/svn-auth-conf
    Require valid-user

    Referente a la segunda pregunta no sé muy bien a que te refieres, pero si lo que quieres es ver iconos, ten en cuanta que lo que ves desde el navegador es HTML, así que como no te montes una parafernalia o te busques algún plugin/módulo para Apache, no sé yo.
    Si lo que quieres es usar el explorador de Windows para navegar a través del repositorio, no sé si conoces TortoiseSVN. Un cliente para subversion que se integra en tu sistema.
    Un saludo.
  3. Pedro Navarro Says:
    Ok, de acuerdo con la parte de tener varios repositorios, Gracias!!
    Respecto a la segunda ya lo pude resolver con el RapidSVN, es un cliente que se puede conectar por varios protocolos y le da una vista al repositorio como de Windows Explorer.
    Solo que ahora tengo un problema con el funcionamiento del SVN, ojala pudieras ayudarme porque he encontrado ese mismo problema en N foros pero no he encontrado la respuesta.
    Cuando hago un Commit desde el cliente, me manda este error:
    Error while performing action: Commit failed (details follow):
    ‘D:\Repos\Visual Studio 2005\Projects’ is not under version control and is not part of the commit, yet its child ‘D:\Repos\Visual Studio 2005\Projects90721LecturaExcel.zip’ is part of the commit.
    Este error me sale utilizando el RapidSVN y el Tortoise, no se si me falto algun parametro al momento de crear el repositoro. Lo hace con los archivos o carpetas que estan dentro de una carpeta dentro del repositorio, si yo pongo un archivo directamente en la raiz del repositorio no me marca ese error.
    Tengo la versión 1.6.12 de Subversion
    Saludos y nuevamente gracias!!
  4. tuxotron Says:
    Hola Pedro, de nada hombre, un placer poder ayudarte.
    Llo que me parece que te ocurre es que estás intentando subir (sincronizar) un fichero de tu sistema local cuyo directorio no es un repositorio. Me explico. Para que puedas sincronizar ficheros de tu sistema local con SVN, el directorio donde reside ese fichero tiene que estar sincronizado previamente con el repositorio.
    Intenta lo siguiente. Haz click con el botón derecho del ratón sobre tu directorio D:\Repos\Visual Studio 2005\Projects, luego selecciona Create Repository Here (crear repositorio aquí), cuando hayas hecho eso, prueba a hacer el commit de nuevo del fichero que quieres subir y ya nos cuentas.
    Un saludo y suerte.
  5. Pedro Navarro Says:
    Hola, el problema que te comente me pasa con el RapidSVN y con el Tortoise, para el caso de Tortoise si hacia lo que me comentas, (Create Repository Here), he realizado algunas pruebas y en este momento creo que le cuesta trabajo al SVN cuando haces un Add de manera recursiva, en cuanto termine de hacer mas pruebas hay te aviso que fue lo que paso.
    Saludos y gracias
  6. hernan Says:
    Tengo una duda, y una vez que tengo instalado el svn, cómo hago para poder utilizar el sitio ese con apache? para poder usarlo como cliente y que se vaya actualizando cada vez que hago commit. GRACIAS!!

No hay comentarios: