HowTO: SVN over SSH on Debian Lenny (svn+ssh)

Este mini HowTo describe el procedimiento para levantar un repositorio Subversion sobre ssh en Debian Lenny, pero es lo bastante estándar (a excepción de apt-get) para poder utilizarlo en otras distribuciones; es más, esto lo aprendí en Gentoo y lo aplico ahora en Debian.

Lo primero que debemos hacer para poder levantar un repositorio SVN es instalar las herramientas necesarias: El servidor y utilidades asociadas.

svnserver:~# apt-get install subversion-tools subversion

Una vez instalado el software necesario, comenzamos con  la configuración del entorno.

Creamos un directorio donde se almacenaran todos los proyectos.

svnserver:~# mkdir /var/svn

Luego definimos un archivo de configuración, para indicar al servidor cuando se inicie que debe buscar los repositorios en el directorio creado en el paso anterior.

svnserver:~# nano /etc/subversion/server.conf

# Variables de entorno para SVN
SVNSERVE_OPTS=”–root=/var/svn”

Para que los usuarios puedan ejecutar el servidor svn mediante ssh es necesario crear un envoltorio (en alguna ruta de ejecución que pertenezca al PATH), para esto creamos el siguiente script envoltorio (Notar que el envoltorio tiene el mismo nombre del comando svnserve, y que la ruta que elegimos /usr/local/bin/ esta definida antes en el PATH del sistema que la ubicación del comando original /usr/bin/svnserve)

svnserver:~# nano /usr/local/bin/svnserve

#!/bin/bash
. /etc/subversion/server.conf
umask 007
exec /usr/bin/svnserve ${SVNSERVE_OPTS} “$@”

Finalmente le damos premiso de ejecución a todos

svnserver:~# chmod a+x /usr/local/bin/svnserve

Ahora, nos centraremos en configurar un repositorio. Con los pasos descritos a continuación podemos tener un servidor SVN sobre ssh para varios proyectos independientes y el acceso a cada uno de los distintos repositorios de proyectos sera controlado mediante grupos y permisos de acceso UNIX.

Creamos los usuarios (si es que no existen)

svnserver:~# adduser usuario01
svnserver:~# adduser usuario02
svnserver:~# adduser usuario03

Luego creamos un grupo para estos usuario (en general sería un grupo por repositorio de proyecto)

svnserver:~# addgroup grupo01

Ahora agregamos los usuarios al grupo creado


svnserver:~# gpasswd -a usuario01 grupo01
svnserver:~# gpasswd -a usuario02 grupo01
svnserver:~# gpasswd -a usuario03 grupo01

Nos queda la tarea de crear el directorio que contendrá nuestro nuevo proyecto, crear la estructura de repositorio para svn y arreglar los permisos de acceso para nuestro repositorio.

Creamos el directorio que contendra el repositorio de nuestro proyecto

svnserver:~# mkdir /var/svn/Repositorio01

Utilizamos el comando svnadmin para crear la estructura básica del repositorio. Este comando nos creará los directorios y archivos necesarios para almacenar nuestro proyecto y llevar el control de cambios y versiones.

svnserver:~# svnadmin create /var/svn/Repositorio01/

Como todo lo anterior lo hemos realizado como super usuario (root), debemos cambiar el grupo al cual pertenecen el repositorio creado con el fin de que nuestros usuario también pueda acceder a el.

Cambiamos recursivamente el grupo al repositorio:

svnserver:~# chown -R root:grupo01 /var/svn/Repositorio01

Por seguridad quitamos los permisos para leer, escribir y acceder a otros usuarios que no estén en el grupo, y al grupo inicialmente solo le damos permiso para leer.

svnserver:~# chmod -Rf g-w,o-rwx /var/svn/Repositorio01

Luego aplicamos permisos de escritura donde corresponde para que el sistema de control cambios de versiones funcione adecuadamente.

svnserver:~# chmod -Rf g+rw /var/svn/Repositorio01/db
svnserver:~# chmod -Rf g+rw /var/svn/Repositorio01/locks
svnserver:~# chmod -Rf g+rw /var/svn/Repositorio01/conf

Desde este momento, nuestro nuevo repositorio se encuentra operativo a la espera de un “initial import”

Ejemplo:

svn import file:///home/cmoyano/ProyectoSoftware svn+ssh://usuario01@svnserver.disc.ucn.cl/Repositorio01 -m "Initial Import"

Espero sea de utilidad…

Aprovecho de hacer la Invitación a todos los alumnos del DISC para que nos hagan llegar sus requerimientos de Web hosting, BDs y de repositorio para sus proyectos de desarrollo en los distintos ramos que no lo necesiten.

Suerte!

Mail GoogleApp DISC

disc_gmail

El Área de Servidores tiene el agrado de informar a los alumnos del DISC que se encuentra disponible el nuevo sistema de correo electrónico web del DISC, basado en la Plataforma GoogleApp.

Entre los beneficios que podemos destacar se encuentran:

  • La mejor tecnología anti-spam
  • Todos los Usuarios del DISC son tus contactos, solo escribe un nombre y aparecerá su email.
  • Comparte calendario, organiza eventos y recibe notificaciones.
  • Tu mail institucional @disc.ucn.cl, identifícate con el DISC.

Para acceder a este servicio debes ingresar a:

http://mail.disc.ucn.cl

Tu nombre de usuario se compone de la primera letra de tu nombre seguido de tu primer apellido, como se muestra a continuación:

Nombre: Homero

Apellido: Simpson

Tu nombre de usuario es: hsimpson

Inicialmente la password de acceso a tu cuenta es tu Rut sin dígito verificador, seguido de un guión medio y por ultimo tu número de matricula sin dígito verificador.

No dudes en contactarnos a servidores[ @ ]disc.ucn.cl si tienes dudas

Veamos las principales funciones y comandos del apt, que nos pueden sacar de apuros, en algún momento determinado:

apt-get update

Actualiza el listado de paquetes disponibles.

apt-get check

Comprueba que todo ha ido bien tras la utilización de apt-get update.

apt-get install lista_de_paquetes

Instala los programas deseados.

apt-get –reinstall install paquete

Reinstala un programa.

apt-get upgrade

Actualiza los paquetes ya instalados, instalación menor.

apt-get dist-upgrade

Actualización más profunda de la distribución. Permite actualizarse entre las diferentes versiones de la distribución. Equivalente a la instalación inteligente del Synaptic.

apt-get remove lista_de_paquetes

Desinstala un paquete.

apt-get –purge remove lista_de_paquetes

Desinstala un paquete y elimina los archivos de configuración.

apt-get -f install

Para resolver dependencias.

apt-get clean

Para limpiar los paquetes descargados e instalados.

apt-get autoclean

Para limpiar los paquetes viejos que ya no se usan.

apt-cache search nombre paquete

Para buscar un paquete determinado.

apt-get source paquete

Descarga archivos fuente.

apt-get build-dep paquete

Configura las dependencias de construcción para paquetes fuente.

apt-get dselect-upgrade

Sigue las selecciones de dselect. puede y consigue reparar dependencias

apt-show-versions (–u)

Ideal para mezclar y conocer que paquetes hay instalados, y actualizaciones selectivas.

apt-cache show paquete

Obtener más información de un paquete específico.

(da información de tanto paquete instalado como del que no)

apt-cache showpkg paquete

Más información aún.

apt-cache depends paquete

Para saber de que paquete depende.

apt-file search filemane

Para encontrar el nombre de un paquete desde un fichero.

apt-file list paquete

Lista el contenido de un paquete.

apt-file update

Para mantener al día esta función.

apt-get autoremove

Para mantener el sistema limpio de librerías que no hacen falta. Cuando instalamos un programa es posible que con él se instalen algunas dependencias. Si luego borramos ese programa en cuestion, dichas dependencias quedaran obsoletas. Para borrar paquetes que no se necesitan.

apt-get check

Para diagnosticar: Actualiza la caché de paquetes (/var/cache/apt/pkgcache.bin), crear un nuevo árbol de dependencias y busca dependencias imposibles de resolver..

apt-cache unmet

Muestra un resumen de las dependencias no satisfechas en la caché de paquetes.

apt-cache pkgnames –generate

Muestra una lista de todo lo que tenemos instalado en el sistema. La salida es rapidísima, por lo que mejor sería enviarla a un archivo para poder revisarla tranquilamente editándolo (apt-cache pkgnames –generate > archivo). Lo de –generate es opcional, pero parece que optimiza la cosa un poco. También se le puede poner un prefijo: apt-cache pkgnames lib –generate nos listará todos los paquetes de nuestro sistema que comiencen con la cadena “lib”.

    OPCIONES

apt-get –s

Simula una acción.

apt-get –d

Sólo descarga.

apt-get –y

No pregunta y asuma que si a todo.

apt-get –u

Muestra paquetes actualizados.

apt-get -h

Muestra texto de ayuda.

apt-get -q

Salida registrable – sin indicador de progreso.

apt-get -qq

Sin salida, excepto si hay errores.

apt-get -f

Intenta continuar sí la comprobación de integridad falla.

apt-get -m

Intenta continuar si los archivos no son localizables.

apt-get -b

Construye el paquete fuente después de obtenerlo .

apt-get -V

Muesta números de versión detallados.

apt-get -c=?

Lee este archivo de configuración.

apt-get -o=?

Establece una opción de configuración arbitraria, p. ej.

apt-get -o dir::cache=/tmp

Quizás no estén todas las que son, pero tienen para entretenerse un rato.

aptitude -v

el comando aptitude si bien es muy parecido a apt-get, utilizando casi las mismas opciones, tiene una muy especial, la opción -v que nos da un ambiente parecido y muy similar al utilizado synaptic desde el entorno grafico, is ahora tienes instalado gpm, no tendrás nada que envidiar.

* NOTA : Para los usuarios de ubuntu y derivados recuerden que para usar todas esa ordenes deben utilizar el cada vez más popular sudo.

{HowTo,Como} Cron

Estuve investigando este fin de semana algunas herramientas que nos pueden ayudar a llevar un mejor control de las tareas que debemos realizar periodicamente en nuestros sistemas como administradores en el entorno {unix,linux},. Esta herramienta se llama Cron y es un “Administrador de tareas” que nos permite automatizar instrucciones tan importantes como el apt-get update.

Instalacion.

Aunque Cron viene instalado por defecto en las distros basadas en Debian, como ubuntu, no esta de mas saber como instalarlo dependiendo de nuestra distro favorita;

{apt-get install, yum install, emerge} cron

Uso.

La manera mas sencilla de comenzar a utilizar Cron es escribir en la consola como usuario normal (no root) lo siguiente;

>mherrera@juanlopez:~# crontab -e

Aparecera un archivo de texto el cual editaremos con la siguiente sintaxis

Sintaxis.

minuto hora dia_mes mes dia_semana usuario comando

Minuto: entre 0 y 59
Hora: entre 0 y 23
Dia mes: entre 1 y 31
Mes: entre 1 y 12
Dia semana: entre 1 y 7, donde 1 es Lunes

Por Ejemplo:

Quiero listar el contenido de mi directorio personal a cada minuto todos los dias.

* * * * * mherrera ls /home/mherrera/

La misma operacion, pero esta vez quiero que se haga cada 3 minutos

*/3 * * * * mherrera ls /home/mherrera/

Ahora la misma operacion, pero los lunes de cada semana a las 09:00 am

00 09 * * 1 mherrera ls /home/mherrera/

Como este automatizador de tareas utiliza comandos linux, tambien podriamos guardar los resultados de nuestras acciones en un archivo para su posterior analisis.

00 09 * * 1-3, 5-7 mherrera ls /home/mherrera/ /out/out.txt

se hizo la misma operacion que arriba, pero se guardaron los resultados en el directorio /out, en el archivo out.txt

Restricciones

Cron cumple con las restricciones de usuarios, por ejemplo si algunas de las tareas que quiero realizar debo hacerlas como root, es necesario tener los permisos necesarios para realizarlo, por ejemplo; una vez logueado como root queremos que nuestra maquina se actualice cada 12 horas todos los dias, recuerden que para poder realizar tareas de update o upgrade, o ambas, se debe tener permiso de root.

00 */12 * * * apt-get update && upgrade -yu

-y: Responde si a todas las preguntas
-u: Muestra los paquetes que se actualizaron

ambas opciones pertenecen al comando apt-get y no a cron.

Hasta ahi el HowTo, espero que les sirva.
Saludos

Inicio de Actividades

Este WordPress tiene por objeto dirigir las actividades relacionadas con el área de servidores del Departamento de Informática y Sistemas Computacionales (DISC). En este, podrán conocer el desarrollo de nuestras actividades académicas, docentes, de investigación, extensión y los servicios a la comunidad.

Su visita a nuestro WordPress es ya una forma de acercamiento que agradecemos. En este sitio encontrarán instrucciones y avisos relacionados con la materia, así que se recomiendo su revisión frecuente.

César Andrade