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).

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:
- Accede al repositorio original: https://github.com/raquelcedazo/sistemas-informaticos-industriales/.
- En la interfaz web, selecciona la opción Fork -> Create a new fork.
- Completa el formulario (es necesario autenticarse en GitHub):
- El nombre del nuevo repositorio debe ser:
sii-DDDDD
(dondeDDDDDes el número de matrícula).
- El nombre del nuevo repositorio debe ser:
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:
-
En Note, introduce un nombre descriptivo, por ejemplo:
SII-Practicas -
En Expiration, selecciona una fecha de caducidad que cubra el periodo durante el que vayas a realizar las prácticas.
-
En Select scopes, marca:
☑
repo— Full control of private repositoriesEste permiso permite realizar las operaciones necesarias de lectura y escritura sobre los repositorios a los que tenga acceso la cuenta.
-
Pulsa Generate token.
-
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.
-
Recordatorio del porqué de la filosofía espartana de UNIX:
El Terminal: tty, vt100, terminales-serie, hosts CLI: Command Line Interface, la shell -
Establecimiento de una conexión segura:
-
Desde windows:
-
Desde Linux:
-
Desde el punto de vista del usuario:
-
Antes: telnet y rlogin; ftp y rcp
-
Ahora: ssh; ftp (anónimo) y scp
-
-
-
Herramientas de ayuda:
-
man
-
which
-
whereis
-
apropos
-
help (para mandatos internos del bash)
-
-
Editores disponibles: vi, pico (nano), gedit
-
Configuración por defecto de una sesión de trabajo interactiva: examen del contenido del fichero .bashrc.
-
Navegación por la cuenta de usuario: ls, cd, pwd
-
Gestión de ficheros y directorios: mkdir, cp, mv, rm
-
Herramientas de compilación, gestión y depuración de código:
-
gcc, g++
-
make y cmake
-
Depuradores: gdb, dbx
-
strace
-
-
Clientes de correo: mailx, pine, thunderbird, evolution.