====== Preparación del sistema ======
===== Temas teóricos =====
* Debian, GNU/Linux
* Git
===== Precauciones =====
* Lea cuidadosamente todos los comandos que escriba en consola.
===== Instrucciones generales =====
- Lea **//completamente todos//** los pasos de la guía de esta actividad
===== Guía =====
==== Parte 1. Configuración básica del sistema y encendido ====
* Encienda su computadora. Siga las instrucciones del profesor para ingresar al sistema operativo correspondiente al curso del laboratorio de microcontroladores.
* Ejecute una consola de texto cada vez que necesite ejecutar comandos en Linux.
=== Actualización de la distribución de Linux Debian ===
* Si no tiene sudo instalado, siga la siguiente [[https://wiki.arcoslab.org/dokuwiki/doku.php?id=tutorials:sudo_in_debian| Guía]]
* Actualice la lista de paquetes de Debian de las fuentes de internet:
sudo apt-get update
* Actualice el sistema a las últimas versiones de todos los paquetes:
sudo apt-get dist-upgrade
* Siga las instrucciones en pantalla, **léalas**, estúdielas detenidamente y conteste correctamente. En caso de duda refiérase al profesor o al asistente.
* Al final de este último comando usted ya tiene un sistema actualizado a debian sid (unstable). Reinicie la computadora para cargar el último kernel de Linux:
reboot
==== Parte 2. Configuración de Git ====
=== Llaves SSH ===
Necesitamos llaves criptográficas asimétricas para poder tener acceso al servidor de git del curso. A continuación se explica el proceso para crear dichas llaves.
* Ejecute el siguiente comando en su consola:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
* Le va a salir el siguiente texto para seleccionar el archivo donde quiere guardar su llave SSH. Seleccione el por defecto.
Enter a file in which to save the key (/home/you/.ssh/id_rsa): [Enter]
* Cuando el sistema le solicite la contraseña, digite una que sea **segura**. Mínimo 12 caracteres alfanuméricos. Asegúrese de no olvidarla, porque no se puede cambiar en el futuro.
Enter passphrase (empty for no passphrase): [contraseña segura]
Enter same passphrase again: [contraseña segura]
* Su llave SSH se encuentra en /home//.ssh . Ahí va a encontrar dos archivos: id_rsa y id_rsa.pub. La primera es la llave privada, tenga cuidado, **NUNCA** le entregue esa llave a nadie, es privada y debe cuidarla. La segunda (la que termina en .pub), es la pública, esa sí se puede compartir.
* daniel.garciavaglio@ucr.ac.cr
* Envíe la llave pública a su asistente con copia al profesor. Envíela en un correo como un archivo adjunto. El subject del correo debe ser: SSH .
* Inicie el agente:
eval "$(ssh-agent -s)"
* Agregue su llave
ssh-add ~/.ssh/id_rsa
=== Repositorio del curso ===
* Cree un directorio para clonar el repositorio
mkdir ~/repos
cd ~/repos
* Espere a que el asistente o el profesor le den permisos en el repositorio del curso. Una vez que tenga permiso, clone el repositorio. Es posible que se le solicite introducir la clave de su llave SSH.
git clone ssh://gitolite3@arcoslab.eie.ucr.ac.cr/micros_2_2018
* Ahora cree el directorio de su equipo de trabajo. Este será el nombre de los integrantes separados por guión bajo. Cree además un archivo README general del equipo.
cd micros_2_2018
mkdir nombre1_nombre2
cd nombre1_nombre2
touch README
* Agreuege su README al repositorio y súbalo al servidor.
git pull
git add README
git commit -m 'Adding readme for team nombre1_nombre2'
git push
==== Parte 3. Git cheat sheet====
Crear una copia local de un repositorio
git clone
Descargar actualizaciones del repositorio remoto
git pull
Enviar actualizaciones al repositorio remoto
git push
Agegar archivos al repositorio
git add file1 file2 file3
Hacer un mensaje significativo de commit, para control de versiones
git commit -m 'mensaje significativo'
== Apectos a recordar ==
* Hacer pull antes de push
* Los mensajes de commit deben ser descriptivos
* No cambiar archivos de otros equipos
* No subir archivos binarios
* Agregar solo los archivos necesarios
==== Referencias ====
[[https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/|Creación de llaves ssh]]
[[https://git-scm.com/docs/gittutorial|Uso básico de git]]