4.0 KiB
title | date | draft | image | categories | tags | ||||
---|---|---|---|---|---|---|---|---|---|
Compilación de un programa en C utilizando un Makefile | 2022-10-16T23:46:57+02:00 | False | featured.png |
|
|
Enunciado: Elige el programa escrito en C que prefieras y comprueba en las fuentes que exista un fichero Makefile o Configure. Deberás compilar desde las fuentes. Realiza los pasos necesarios para compilarlo e instálalo en tu equipo en un directorio que no interfiera con tu sistema de paquetes (/opt, /usr/local, etc.) La corrección se hará en clase y deberás ser capaz de explicar qué son todos los ficheros que se hayan instalado y realizar una desinstalación limpia.
El programa elegido es htop
, ya que está escrito en C. De momento no tiene ninguno de los ficheros requeridos, pero ejecutando el script autogen.sh
se crea el fichero configure.
Instalación
Para obtener las fuentes ejecutamos el siguiente comando:
apt source htop
ó
wget http://deb.debian.org/debian/pool/main/h/htop/htop_3.0.5.orig.tar.gz
tar -xvf htop_3.0.5.orig.tar.gz
Configure
De momento el fichero no existe. Ejecutamos autogen.sh
. Necesitaremos además el paquete autoconf
:
sudo apt install autoconf
./autogen.sh
Podemos comprobar que se ha generado el fichero configure:
Podemos ejecutar el fichero configure directamente. Sin embargo, de cara a una desinstalación más sencilla y a poder tener más localizados los ficheros instalados, vamos a cambiar la ruta que hay por defecto, al directorio opt
. Se hace añadiendo la siguiente opción:
sudo mkdir /opt/htop
./configure --prefix=/opt/htop/
En el caso de que se de algún error en la salida del comando, hay que instalar las dependencias indicadas, y repetir el paso anterior.
sudo apt install libncurses*
Makefile
Para poder ejecutar make
necesitamos el paquete build-essential
, que contiene las utilidades esenciales para compilar un paquete en Debian.
sudo apt install build-essential
Para instalar el paquete ejecutamos:
sudo make install
sudo make clean
Para generar el fichero .deb
es necesario que el paquete descargado sea con apt source
, o la versión específica de debian.
o bien, para generar el fichero .deb:
instalamos las siguientes dependencias:
sudo apt install libnl-3-dev libnl-genl-3-dev libsensors-dev pkg-config debhelper-compat
# o bien con apt-get build-dep
sudo apt-get build-dep htop
make
dpkg-buildpackage -b
make clean
sudo dpkg -i ../htop_3.0.5-7_amd64.deb
El paquete ya está instalado. Podemos comprobar los ficheros creados en /opt
:
Entre los ficheros que aparecen, los más importantes son el propio binario de htop, y el manual.
Para poder utilizar el comando la terminal tenemos que añadirlo al PATH. Para hacerlo, añadimos la siguiente línea al fichero .bashrc
:
export PATH="/opt/htop/bin:$PATH"
Manual
Ya que lo hemos instalado en un directorio personal, no se ha creado el manual. Para hacerlo tenemos que crear un enlace simbólico:
sudo mkdir /usr/local/man/man1
sudo ln -s /opt/htop/share/man/man1/* /usr/local/man/man1/
Desinstalación
Para desinstalar el paquete vamos a utilizar otra vez el comando make, esta vez con la opción uninstall
:
sudo make uninstall
Tras eso, comprobamos si queda algo en la ubicación de la instalación:
la estructura de carpetas no se ha borrado, la borramos de manera manual.
Por último, hay que eliminar la línea de .bashrc
que añade la ruta al PATH
y eliminar el enlace simbólico:
sudo rm /usr/local/man/man1/htop.1