Practica1 Entorno desarrollo Linux - raquelcedazo/sistemas-informaticos-industriales GitHub Wiki

Práctica 1: Entorno de desarrollo bajo Linux

Objetivos de la práctica

  • Familiarizarse con el sistema operativo Linux, aprendiendo los comandos básicos necesarios para navegar por el sistema de archivos y ejecutar programas.

  • Conocer y comenzar a utilizar el entorno de desarrollo que se empleará a lo largo de las 5 prácticas:

    • Git, como herramienta de control de versiones. Se utiliza BitBucket.

    • CMake, para la generación y configuración del entorno de compilación. Se utiliza el fichero CMakeLists.txt.

    • Make, para la compilación del código. Se genera el fichero Makefile.

El juego del tenis

En esta práctica se proporciona un código en C++ de una aplicación gráfica que utiliza las bibliotecas OpenGL y GLUT. La aplicación consiste en un juego de tenis en modo local para dos jugadores que comparten el mismo teclado y pantalla.

  • La raqueta de la derecha se controla con las teclas: o y l (arriba y abajo).
  • La raqueta de la izquierda se controla con las teclas: w y s (arriba y abajo).

tenis_p1.png

Introducción a Linux

Antes de comenzar con el desarrollo, es necesario familiarizarse con algunas acciones básicas que se utilizarán en todas las prácticas:

  • Navegación por el sistema de archivos: ls, cd, pwd.
  • Gestión de ficheros y directorios: mkdir, cp, mv, rm.
  • Comandos de ayuda: man, help.
  • Edición de ficheros: nano, gedit (opcionales: vi, emacs).
  • Compilación y depuración: gcc, g++, make, cmake, strace.

Herramientas de desarrollo: CMake, Make y Git (GitHub)

El primer paso es hacer un Fork del repositorio creado para las prácticas de la asignatura. Un Fork es una copia de un repositorio que permite trabajar de manera independiente sin afectar al proyecto original.

Para ello:

  1. Accede al repositorio original: https://github.com/raquelcedazo/sistemas-informaticos-industriales/.
  2. En la interfaz web, selecciona la opción Fork -> Create a new fork.
  3. Completa el formulario (es necesario autenticarse en GitHub):
    • El nombre del nuevo repositorio debe ser: sii-DDDDD
      (donde DDDDD es el número de matrícula).

Clonar el repositorio en local

Una vez hecho el Fork, se debe crear una copia en el directorio de trabajo local.
Supongamos que el directorio de trabajo es matricula/.

Para ello se clona el repositorio creado. Se ejecuta:

$ git clone https://github.com/USUARIO_GITHUB/sii-DDDDD.git

donde USUARIO_GITHUB es tu nombre de usuario en GitHub.

Compilar con CMake y Make

El repositorio contiene un fichero básico CMakeLists.txt, que define las reglas de compilación. Para generar el ejecutable:

Sitúate en la carpeta del código fuente:


matricula/workspace/src

Crea un directorio de compilación y accede a él:


$ mkdir ../build
$ cd ../build

Ejecuta CMake:


$ cmake ..

Esto genera los ficheros Makefile.

Compila con:


$ make

El ejecutable se generará en el directorio build.

TRABAJO DEL ESTUDIANTE: Fichero README y movimiento de los objetos

1. Modificar el fichero README.md

Cada estudiante debe modificar el fichero README.md de su repositorio para incluir una breve descripción del proyecto y de las funcionalidades que se vayan desarrollando.

Este fichero es la carta de presentación del repositorio y debe mantenerse actualizado a medida que avance el proyecto.

2. Modificación del código: movimiento de objetos

Además de trabajar con Git, en esta práctica es necesario modificar el código proporcionado para:

  • Dar movimiento a las raquetas.

  • Dar movimiento a la esfera.

Con ello se consigue que el juego empiece a ser interactivo y deje de estar estático.

3. Crear el fichero .gitignore

Se debe añadir un fichero .gitignore en la raíz del repositorio para evitar subir archivos generados automáticamente. Como mínimo debe contener: workspace/build/

4. Control de versiones con Git

En esta práctica se utilizan algunos de los comandos básicos de Git que se necesitarán también en las prácticas posteriores.

La ayuda de Git se puede consultar mediante:

git help

Los comandos más importantes que deben utilizarse en esta práctica son:

Consultar el estado y el historial

git status
git log

Añadir cambios al área de preparación

Para añadir determinados ficheros o directorios:

git add fichero1 fichero2 directorio1

También se pueden añadir todos los cambios realizados mediante:

git add .

Confirmar los cambios realizados

git commit -m "Mensaje del commit"

Subir los cambios al repositorio remoto

git push

Actualizar el repositorio local

Para obtener los últimos cambios del repositorio remoto:

git pull

Crear etiquetas para marcar versiones

Para crear una etiqueta:

git tag -a v1.1 -m "Fin de la práctica 1"

Y subirla al repositorio remoto:

git push origin v1.1

Nota: Al finalizar esta práctica, todos los cambios deben haberse subido al repositorio remoto y debe crearse una etiqueta con el mensaje "Fin de la práctica 1" para marcar el hito alcanzado.

5. Acceso remoto a GitHub

Para realizar operaciones sobre el repositorio remoto, como git clone, git pull o git push, es necesario autenticarse en GitHub.

GitHub no permite utilizar la contraseña de la cuenta para las operaciones Git realizadas mediante HTTPS. En su lugar, se utilizará un Personal Access Token (classic).

Crear un Personal Access Token (classic)

Accede a GitHub y entra en:

Perfil → Settings → Developer settings → Personal access tokens → Tokens (classic)

Pulsa Generate new token → Generate new token (classic).

Configura el token de la siguiente forma:

  1. En Note, introduce un nombre descriptivo, por ejemplo:

    SII-Practicas

  2. En Expiration, selecciona una fecha de caducidad que cubra el periodo durante el que vayas a realizar las prácticas.

  3. En Select scopes, marca:

    ☑ repo — Full control of private repositories

    Este permiso permite realizar las operaciones necesarias de lectura y escritura sobre los repositorios a los que tenga acceso la cuenta.

  4. Pulsa Generate token.

  5. Copia y guarda el token generado. GitHub solo permite visualizarlo en el momento de su creación.

Utilizar el token desde Git

Al ejecutar una operación que necesite autenticación, por ejemplo:

git push

Git puede solicitar:

Username for 'https://github.com':

Introduce tu nombre de usuario de GitHub.

A continuación solicitará:

Password for 'https://[email protected]':

En este campo debes introducir el Personal Access Token, no la contraseña de tu cuenta de GitHub.

Nota: Al pegar el token en el terminal no aparecerán caracteres, asteriscos ni ningún otro símbolo en pantalla. Es el comportamiento normal del terminal para la introducción de contraseñas. Pega el token y pulsa Enter.

Importante: El Personal Access Token es una credencial privada. No debe incluirse nunca en el código, en el fichero .git/config, en el README ni en ningún otro fichero que pueda subirse al repositorio.

Si aparece un error de autenticación

Si al ejecutar git push aparece un mensaje similar a:

remote: Invalid username or token.
fatal: Authentication failed

comprueba:

  • Que estás utilizando tu nombre de usuario de GitHub, no el nombre configurado mediante git config user.name.
  • Que en el campo de contraseña estás introduciendo el Personal Access Token (classic) y no la contraseña de GitHub.
  • Que el token no ha caducado.
  • Que el token tiene seleccionado el permiso repo — Full control of private repositories.

Recursos adicionales a Linux

El contenido de esta sección no forma parte de los objetivos principales de la práctica, pero puede resultar útil para aquellos estudiantes que deseen profundizar en el uso de Linux y las herramientas de desarrollo.

  1. Recordatorio del porqué de la filosofía espartana de UNIX:

    El Terminal: tty, vt100, terminales-serie, hosts
    
    CLI: Command Line Interface, la shell 
    
  2. Establecimiento de una conexión segura:

  3. Herramientas de ayuda:

    • man

    • which

    • whereis

    • apropos

    • help (para mandatos internos del bash)

  4. Editores disponibles: vi, pico (nano), gedit

  5. Editores opcionales: emacs, eclipse, sublime

  6. Configuración por defecto de una sesión de trabajo interactiva: examen del contenido del fichero .bashrc.

  7. Navegación por la cuenta de usuario: ls, cd, pwd

  8. Gestión de ficheros y directorios: mkdir, cp, mv, rm

  9. Herramientas de compilación, gestión y depuración de código:

    • gcc, g++

    • make y cmake

    • Depuradores: gdb, dbx

    • strace

  10. Clientes de correo: mailx, pine, thunderbird, evolution.

Referencias