SVN en Linux
La fuente es: http://www.cyberhades.com/2010/07/24/instalando-subversion-en-centos/, leenlo en el original pf.
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:
1 | 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 yupdate. subversion y y mod_dav_svn. Esto lo hacemos con la etiqueta exclude. Poniendo la siguiente línea en ambas secciones:
1 | exclude=subversion,mod_dav_svn |
Luego debemos de hacer un update del sistema:
1 | 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:
1 | 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:
1 | <location repos= "" > |
2 | DAV svn |
3 | SVNPath /var/www/svn/repos |
4 | AuthType Basic |
5 | AuthName "Subversion repos" |
6 | AuthUserFile /etc/svn-auth-conf |
7 | Require valid-user |
8 | </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:
1 | service httpd restart |
Ahora vamos a crear los usuarios que podrán acceder al SVN:
1 | htpasswd -cm /etc/svn-auth-conf nombre_usuario
add users
|
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.
1 | cd /var/www/ |
2 | mkdir svn |
3 | cd svn |
4 | svnadmin create repos |
5 | chown -R apache.apache repos |
6 | 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.
Eliminar usuario de SVN: htpasswd -D /etc/svn-auth-conf nombre_usuario
Listar usuario de SVN: cat /etc/svn-auth-conf
https://wiki.centos.org/HowTos/Subversion
[root@lucifer ~]# yum install mod_dav_svn subversion
[root@lucifer ~] vim /etc/httpd/conf/httpd.conf -- Edit what you need and save the file [root@lucifer ~] service httpd start [root@lucifer ~] chkconfig httpd on
[root@lucifer ~] cd /etc/httpd/conf.d/ [root@lucifer ~] vim subversion.conf # Make sure you uncomment the following if they are commented out LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so # Add the following to allow a basic authentication and point Apache to where the actual # repository resides. <Location /desarrollo> DAV svn SVNPath /var/www/svn/desarrollo AuthType Basic AuthName "Subversion repos" AuthUserFile /etc/svn-auth-conf Require valid-user </Location>
[root@lucifer ~] htpasswd -cm /etc/svn-auth-conf yourusername New password: Re-type new password: Adding password for user yourusername [root@lucifer ~] htpasswd -m /etc/svn-auth-conf anotherusername New password: Re-type new password: Adding password for user anotherusername
[root@lucifer ~] cd /var/www/ -- Or wherever you placed your path above [root@lucifer ~] mkdir svn [root@lucifer ~] cd svn [root@lucifer ~] svnadmin create desarrollo [root@lucifer ~] chown -R apache.apache desarrollo [root@lucifer ~] service httpd restart
[root@lucifer ~] elinks https://tuip/desarrollo
[root@lucifer ~] svn --help
[root@lucifer ~] cambiar el puerto a apache a 28888
. |-- project1 | |-- branches | |-- tags | `-- trunk `-- project2 |-- branches |-- tags `-- trunk
[root@lucifer ~] cd /tmp [root@lucifer ~] mkdir mytestproj [root@lucifer ~] cd mytestproj [root@lucifer ~] mkdir configurations options main [root@lucifer ~] vim configurations/testconf1.cfg -- Add whatever you want to these files. [root@lucifer ~] vim options/testopts1.cfg [root@lucifer ~] vim main/mainfile1.cfg
[root@lucifer ~] svn import /tmp/mytestproj/ file:///var/www/svn/repos/mytestproj -m "Initial repository layout for mytestproj" Adding /tmp/mytestproj/main Adding /tmp/mytestproj/main/mainfile1.cfg Adding /tmp/mytestproj/configurations Adding /tmp/mytestproj/configurations/testconf1.cfg Adding /tmp/mytestproj/options Adding /tmp/mytestproj/options/testopts1.cfg
[me@mylappy ~] cd /tmp [me@mylappy ~] svn co http://yoursvnserver/repos/mytestproj Authentication realm: <http://yoursvnserver:80> Subversion repos Password for 'youruser': A mytestproj/main A mytestproj/main/mainfile1.cfg A mytestproj/configurations A mytestproj/configurations/testconf1.cfg A mytestproj/options A mytestproj/options/testopts1.cfg Checked out revision 1.
[me@mylappy ~] cd mytestproj [me@mylappy ~] vim configurations/testconf1.cfg -- Add or delete something and save. [me@mylappy ~] svn commit -m "Added a line to testconf1.cfg." Sending configurations/testconf1.cfg Transmitting file data . Committed revision 2.
[me@mylappy ~] svn co http://yoursvnserver/repos/mytestproj A mytestproj/main A mytestproj/main/mainfile1.cfg A mytestproj/configurations A mytestproj/configurations/testconf1.cfg A mytestproj/options A mytestproj/options/testopts1.cfg Checked out revision 2. [me@mylappy ~] cd mytestproj [me@mylappy ~] cp /etc/yum.repos.d/CentOS-Base.repo configurations/ [me@mylappy ~] svn add configurations/CentOS-Base.repo A configurations/CentOS-Base.repo [me@mylappy ~] svn commit -m "Added the CentOS Yum repo file." Adding configurations/CentOS-Base.repo Transmitting file data . Committed revision 3.
[me@mylappy ~] svn log http://yoursvnserver/repos -- For the entire repository [me@mylappy ~] svn log http://yoursvnserver/repos/mytestproj -- For the specific project
[me@mylappy ~] svn co -r 1 http://yoursvnserver/repos/mytestproj
AuthzSVNAccessFile /etc/svn-acl-conf
<Location /repos> DAV svn SVNParentPath /var/www/svn/repos AuthzSVNAccessFile /etc/svn-acl-conf AuthType Basic AuthName "Subversion repos" AuthUserFile /etc/svn-auth-conf Require valid-user </Location>
[reponame:repopath] user = access
[framework:/] john = r joe = rw
[groups] staff = joe, george [framework:/] john = r @staff = rw
[/] * = r
Comentarios
Publicar un comentario
Incluye información que aporte al tema