cómo crear ports en freebsd #picniccode2015

14
Creando ports en FreeBSD Fernando Apesteguía. Project Manager @ OpenSistemas

Upload: opensistemas

Post on 18-Jul-2015

132 views

Category:

Software


0 download

TRANSCRIPT

Creando ports en FreeBSD

Fernando Apesteguía. Project Manager @ OpenSistemas

FreeBSD ports. ¿Qué es? (I)

● Es una forma de instalar software de terceros

● Es la base para crear repositorios de paquetes binarios

● Si has usado Gentoo, es como el portage

FreeBSD ports. ¿Qué es? (II)

● Colección clasificada de directorios bajo /usr/ports/

● Sólo se compone de un esqueleto que indica cómo descargarse, compilar e instalar el software

● Basado en Makefiles (ouch!)

Ejemplo ls /usr/portsCHANGES Tools/ dns/ mbone/ sysutils/CONTRIBUTING.md UIDs editors/ misc/ textproc/COPYRIGHT UPDATING emulators/ multimedia/ ukrainian/GIDs accessibility/ finance/ net/ vietnamese/INDEX-10 arabic/ french/ net-im/ www/INDEX-10.db archivers/ ftp/ net-mgmt/ x11/INDEX-6 astro/ games/ net-p2p/ x11-clocks/INDEX-7 audio/ german/ news/ x11-drivers/INDEX-8 benchmarks/ graphics/ packages/ x11-fm/INDEX-9 biology/ hebrew/ palm/ x11-fonts/INDEX-9.db cad/ hungarian/ polish/ x11-servers/Keywords/ chinese/ irc/ ports-mgmt/ x11-themes/LEGAL comms/ japanese/ portuguese/ x11-toolkits/MOVED converters/ java/ print/ x11-wm/Makefile databases/ korean/ russian/Mk/ deskutils/ lang/ science/README devel/ mail/ security/Templates/ distfiles/ math/ shells/

¿Cómo se usa?$ cd /usr/ports/editors/libreoffice$ sudo make install

o también

portinstall libreoffice

Behind the scenes (I)1. Descargar software

2. Comprobar checksum

3. Descomprimir paquete

4. Aplicar parches

Behind the scenes (II)

5. Compilar el software

6. Crear el paquete

7. Instalar el paquete

¿De qué se compone un port?

● Makefile → Donde están las reglas que guían el proceso

● distinfo → Checksum de la distribución (autogenerado)

● files/ → Directorio con parches (puede no existir)

● pkg-descr → Descripción del paquete

● pkg-plist → Ficheros que se instalarán (autogenerado)

Makefile

● Conjunto de variables● Conjunto de targets: fetch, extract, patch,

install…● Algo de lógica (if, for…)

Ha sido sencillo ¿no?

● Casuística infinita● Muchos linuxismos.● Software no pensado para ser portable● Dependencias (build, run)● Tiene que ser aceptado por algún committer.● Ciclo send-review-change.

Buenas prácticas

● Utilizar poudriere / tinderbox / redports.org● Intentar testear con todas las opciones

disponibles.● Enviar parches upstream

¡Gracias!