SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
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/ports
CHANGES 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
Referencias
http://www.freebsd.org/doc/en/books/porters-handbook/book.html → La referencia
http://scratching.psybermonkey.net/2009/08/freebsd-how-to-use-meta-ports-to.html
http://portsmon.freebsd.org/
https://www.youtube.com/watch?v=LiFq5D-zmBs
¡Gracias!

Más contenido relacionado

La actualidad más candente

Introducción al Software Libre - ITSAS - Introducción
Introducción al Software Libre - ITSAS - IntroducciónIntroducción al Software Libre - ITSAS - Introducción
Introducción al Software Libre - ITSAS - IntroducciónPablo Garaizar
 
Servidor PXE de Instalaciones GNU/linux
Servidor PXE de Instalaciones GNU/linuxServidor PXE de Instalaciones GNU/linux
Servidor PXE de Instalaciones GNU/linuxfraterneo GNU/Linux
 
Iniciación Open edX - Pycon 2017
Iniciación Open edX - Pycon 2017Iniciación Open edX - Pycon 2017
Iniciación Open edX - Pycon 2017BeDjango
 
Open Solaris Multimedia
Open Solaris MultimediaOpen Solaris Multimedia
Open Solaris Multimediajuandanielp
 
Encender una cafetera con Micropython, MQTT y Android
Encender una cafetera con Micropython, MQTT y AndroidEncender una cafetera con Micropython, MQTT y Android
Encender una cafetera con Micropython, MQTT y AndroidGDGFoz
 
Virtualziación de Sistema Operativo: la niña bonita sin novio
Virtualziación de Sistema Operativo: la niña bonita sin novioVirtualziación de Sistema Operativo: la niña bonita sin novio
Virtualziación de Sistema Operativo: la niña bonita sin novioRodolfo Pilas
 
Cifrar Archivos y Directorios en GNU/Linux
Cifrar Archivos y Directorios en GNU/LinuxCifrar Archivos y Directorios en GNU/Linux
Cifrar Archivos y Directorios en GNU/LinuxUlises Hernandez Pino
 
Cómo crear tus propios drivers para linux
Cómo crear tus propios drivers para linuxCómo crear tus propios drivers para linux
Cómo crear tus propios drivers para linuxjorge
 
MythTV Mediacenter on an IGEPv2
MythTV Mediacenter on an IGEPv2 MythTV Mediacenter on an IGEPv2
MythTV Mediacenter on an IGEPv2 marcoita
 
Buildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en PythonBuildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en PythonCodeSyntax
 
Taller de seguridad para servidores GNU/Linux (GSICKMinds)
Taller de seguridad para servidores GNU/Linux (GSICKMinds)Taller de seguridad para servidores GNU/Linux (GSICKMinds)
Taller de seguridad para servidores GNU/Linux (GSICKMinds)cl0p3z
 
David Reguera & Yago Jesus - Rootkit Busters ES [rooted2019]
David Reguera & Yago Jesus - Rootkit Busters ES [rooted2019]David Reguera & Yago Jesus - Rootkit Busters ES [rooted2019]
David Reguera & Yago Jesus - Rootkit Busters ES [rooted2019]RootedCON
 
Navegar En Internet
Navegar En InternetNavegar En Internet
Navegar En Internetezzati
 
Internet navegador web
Internet navegador webInternet navegador web
Internet navegador webosodance
 

La actualidad más candente (20)

Introducción al Software Libre - ITSAS - Introducción
Introducción al Software Libre - ITSAS - IntroducciónIntroducción al Software Libre - ITSAS - Introducción
Introducción al Software Libre - ITSAS - Introducción
 
Servidor PXE de Instalaciones GNU/linux
Servidor PXE de Instalaciones GNU/linuxServidor PXE de Instalaciones GNU/linux
Servidor PXE de Instalaciones GNU/linux
 
Iniciación Open edX - Pycon 2017
Iniciación Open edX - Pycon 2017Iniciación Open edX - Pycon 2017
Iniciación Open edX - Pycon 2017
 
HTML5
HTML5HTML5
HTML5
 
Open Solaris Multimedia
Open Solaris MultimediaOpen Solaris Multimedia
Open Solaris Multimedia
 
Encender una cafetera con Micropython, MQTT y Android
Encender una cafetera con Micropython, MQTT y AndroidEncender una cafetera con Micropython, MQTT y Android
Encender una cafetera con Micropython, MQTT y Android
 
Virtualziación de Sistema Operativo: la niña bonita sin novio
Virtualziación de Sistema Operativo: la niña bonita sin novioVirtualziación de Sistema Operativo: la niña bonita sin novio
Virtualziación de Sistema Operativo: la niña bonita sin novio
 
Cifrar Archivos y Directorios en GNU/Linux
Cifrar Archivos y Directorios en GNU/LinuxCifrar Archivos y Directorios en GNU/Linux
Cifrar Archivos y Directorios en GNU/Linux
 
Open Build Service
Open Build ServiceOpen Build Service
Open Build Service
 
Cómo crear tus propios drivers para linux
Cómo crear tus propios drivers para linuxCómo crear tus propios drivers para linux
Cómo crear tus propios drivers para linux
 
MythTV Mediacenter on an IGEPv2
MythTV Mediacenter on an IGEPv2 MythTV Mediacenter on an IGEPv2
MythTV Mediacenter on an IGEPv2
 
Buildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en PythonBuildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en Python
 
Taller de seguridad para servidores GNU/Linux (GSICKMinds)
Taller de seguridad para servidores GNU/Linux (GSICKMinds)Taller de seguridad para servidores GNU/Linux (GSICKMinds)
Taller de seguridad para servidores GNU/Linux (GSICKMinds)
 
El proyecto openSUSE
El proyecto openSUSEEl proyecto openSUSE
El proyecto openSUSE
 
Composer
ComposerComposer
Composer
 
David Reguera & Yago Jesus - Rootkit Busters ES [rooted2019]
David Reguera & Yago Jesus - Rootkit Busters ES [rooted2019]David Reguera & Yago Jesus - Rootkit Busters ES [rooted2019]
David Reguera & Yago Jesus - Rootkit Busters ES [rooted2019]
 
kde on windows
kde on windowskde on windows
kde on windows
 
Debian
DebianDebian
Debian
 
Navegar En Internet
Navegar En InternetNavegar En Internet
Navegar En Internet
 
Internet navegador web
Internet navegador webInternet navegador web
Internet navegador web
 

Destacado

osBrain: una herramienta para la inversión automática en bolsa y mercados de ...
osBrain: una herramienta para la inversión automática en bolsa y mercados de ...osBrain: una herramienta para la inversión automática en bolsa y mercados de ...
osBrain: una herramienta para la inversión automática en bolsa y mercados de ...OpenSistemas
 
Área Education - OpenSistemas
Área Education - OpenSistemasÁrea Education - OpenSistemas
Área Education - OpenSistemasOpenSistemas
 
Área de Soporte - OpenSistemas
Área de Soporte - OpenSistemasÁrea de Soporte - OpenSistemas
Área de Soporte - OpenSistemasOpenSistemas
 
Drupal 7. Puesta en producción en sistemas multientorno
Drupal 7. Puesta en producción en sistemas multientornoDrupal 7. Puesta en producción en sistemas multientorno
Drupal 7. Puesta en producción en sistemas multientornoOpenSistemas
 
Minería de datos para trading automático
Minería de datos para trading automáticoMinería de datos para trading automático
Minería de datos para trading automáticoOpenSistemas
 
Presentacion Evento Mipe 200901013
Presentacion Evento Mipe 200901013Presentacion Evento Mipe 200901013
Presentacion Evento Mipe 200901013Pamela Castro
 
El software como acción humana
El software como acción humanaEl software como acción humana
El software como acción humanaOpenSistemas
 
El futuro Data Driven en e-Learning y RR.HH.
El futuro Data Driven en e-Learning y RR.HH.El futuro Data Driven en e-Learning y RR.HH.
El futuro Data Driven en e-Learning y RR.HH.OpenSistemas
 
Apache spark y cómo lo usamos en nuestros proyectos
Apache spark y cómo lo usamos en nuestros proyectosApache spark y cómo lo usamos en nuestros proyectos
Apache spark y cómo lo usamos en nuestros proyectosOpenSistemas
 
Apache metron meetup presentation at capital one
Apache metron meetup presentation at capital oneApache metron meetup presentation at capital one
Apache metron meetup presentation at capital onegvetticaden
 
Open sistemas es_v2011
Open sistemas es_v2011Open sistemas es_v2011
Open sistemas es_v2011Alvaro Garcia
 
Kappa Architecture, IoT of the cars - LibreCon 2016
Kappa Architecture, IoT of the cars - LibreCon 2016Kappa Architecture, IoT of the cars - LibreCon 2016
Kappa Architecture, IoT of the cars - LibreCon 2016LibreCon
 
Évaluation de l’admissibilité des réseaux municipaux au programme de renouvel...
Évaluation de l’admissibilité des réseaux municipaux au programme de renouvel...Évaluation de l’admissibilité des réseaux municipaux au programme de renouvel...
Évaluation de l’admissibilité des réseaux municipaux au programme de renouvel...Intelli³
 
Seguridad redesinalambricas
Seguridad redesinalambricasSeguridad redesinalambricas
Seguridad redesinalambricaslorenavargas123
 
Trabajo practico numero 10 Lucila zamora
Trabajo practico numero 10 Lucila zamoraTrabajo practico numero 10 Lucila zamora
Trabajo practico numero 10 Lucila zamoraluly-z
 

Destacado (20)

osBrain: una herramienta para la inversión automática en bolsa y mercados de ...
osBrain: una herramienta para la inversión automática en bolsa y mercados de ...osBrain: una herramienta para la inversión automática en bolsa y mercados de ...
osBrain: una herramienta para la inversión automática en bolsa y mercados de ...
 
Área Education - OpenSistemas
Área Education - OpenSistemasÁrea Education - OpenSistemas
Área Education - OpenSistemas
 
Área de Soporte - OpenSistemas
Área de Soporte - OpenSistemasÁrea de Soporte - OpenSistemas
Área de Soporte - OpenSistemas
 
Drupal 7. Puesta en producción en sistemas multientorno
Drupal 7. Puesta en producción en sistemas multientornoDrupal 7. Puesta en producción en sistemas multientorno
Drupal 7. Puesta en producción en sistemas multientorno
 
Minería de datos para trading automático
Minería de datos para trading automáticoMinería de datos para trading automático
Minería de datos para trading automático
 
Presentacion Evento Mipe 200901013
Presentacion Evento Mipe 200901013Presentacion Evento Mipe 200901013
Presentacion Evento Mipe 200901013
 
El software como acción humana
El software como acción humanaEl software como acción humana
El software como acción humana
 
El futuro Data Driven en e-Learning y RR.HH.
El futuro Data Driven en e-Learning y RR.HH.El futuro Data Driven en e-Learning y RR.HH.
El futuro Data Driven en e-Learning y RR.HH.
 
Apache spark y cómo lo usamos en nuestros proyectos
Apache spark y cómo lo usamos en nuestros proyectosApache spark y cómo lo usamos en nuestros proyectos
Apache spark y cómo lo usamos en nuestros proyectos
 
Apache metron meetup presentation at capital one
Apache metron meetup presentation at capital oneApache metron meetup presentation at capital one
Apache metron meetup presentation at capital one
 
Open sistemas es_v2011
Open sistemas es_v2011Open sistemas es_v2011
Open sistemas es_v2011
 
ASPgems - kappa architecture
ASPgems - kappa architectureASPgems - kappa architecture
ASPgems - kappa architecture
 
Kappa Architecture, IoT of the cars - LibreCon 2016
Kappa Architecture, IoT of the cars - LibreCon 2016Kappa Architecture, IoT of the cars - LibreCon 2016
Kappa Architecture, IoT of the cars - LibreCon 2016
 
Apache Metron: Community Driven Cyber Security
Apache Metron: Community Driven Cyber Security Apache Metron: Community Driven Cyber Security
Apache Metron: Community Driven Cyber Security
 
Cisco OpenSOC
Cisco OpenSOCCisco OpenSOC
Cisco OpenSOC
 
Évaluation de l’admissibilité des réseaux municipaux au programme de renouvel...
Évaluation de l’admissibilité des réseaux municipaux au programme de renouvel...Évaluation de l’admissibilité des réseaux municipaux au programme de renouvel...
Évaluation de l’admissibilité des réseaux municipaux au programme de renouvel...
 
Seguridad redesinalambricas
Seguridad redesinalambricasSeguridad redesinalambricas
Seguridad redesinalambricas
 
Informaticaaaaa
InformaticaaaaaInformaticaaaaa
Informaticaaaaa
 
Trabajo practico numero 10 Lucila zamora
Trabajo practico numero 10 Lucila zamoraTrabajo practico numero 10 Lucila zamora
Trabajo practico numero 10 Lucila zamora
 
Presentación blog (1)
Presentación blog (1)Presentación blog (1)
Presentación blog (1)
 

Similar a Cómo crear ports en FreeBSD #PicnicCode2015

Madrid devops empaquetamientodeb_i
Madrid devops empaquetamientodeb_iMadrid devops empaquetamientodeb_i
Madrid devops empaquetamientodeb_iEduardo Ferro Aldama
 
Creacion de un IPS utilizando Linux y hardware Soekris
Creacion de un IPS utilizando Linux y hardware SoekrisCreacion de un IPS utilizando Linux y hardware Soekris
Creacion de un IPS utilizando Linux y hardware Soekrisozikox
 
Distribucion_aplicaciones
Distribucion_aplicacionesDistribucion_aplicaciones
Distribucion_aplicacionesJuanjo Marin
 
Transcripcion (jackeline chillogalli
Transcripcion (jackeline chillogalliTranscripcion (jackeline chillogalli
Transcripcion (jackeline chillogallijackeline_chillogalli
 
Clase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasosClase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasoshydras_cs
 
Miranda castillo UNIX
Miranda castillo UNIXMiranda castillo UNIX
Miranda castillo UNIXmiranda696
 
Como instalar unix ...lili
Como instalar unix ...liliComo instalar unix ...lili
Como instalar unix ...lilijassley 2000
 
Cristian medina Instalar unix
Cristian medina Instalar unixCristian medina Instalar unix
Cristian medina Instalar unixCRISTIAN23MEDINA
 
Python Madrid empaquetamiento deb aplicaciones Python
Python Madrid empaquetamiento deb aplicaciones PythonPython Madrid empaquetamiento deb aplicaciones Python
Python Madrid empaquetamiento deb aplicaciones PythonEduardo Ferro Aldama
 
Como instalar unix
Como instalar unixComo instalar unix
Como instalar unixivanita99
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasosSoni BM
 

Similar a Cómo crear ports en FreeBSD #PicnicCode2015 (20)

Madrid devops empaquetamientodeb_i
Madrid devops empaquetamientodeb_iMadrid devops empaquetamientodeb_i
Madrid devops empaquetamientodeb_i
 
Portage2
Portage2Portage2
Portage2
 
Portage2
Portage2Portage2
Portage2
 
Creacion de un IPS utilizando Linux y hardware Soekris
Creacion de un IPS utilizando Linux y hardware SoekrisCreacion de un IPS utilizando Linux y hardware Soekris
Creacion de un IPS utilizando Linux y hardware Soekris
 
Distribucion_aplicaciones
Distribucion_aplicacionesDistribucion_aplicaciones
Distribucion_aplicaciones
 
Transcripcion (jackeline chillogalli
Transcripcion (jackeline chillogalliTranscripcion (jackeline chillogalli
Transcripcion (jackeline chillogalli
 
Clase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasosClase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasos
 
Memorias
MemoriasMemorias
Memorias
 
Transcripcion yamy
Transcripcion yamyTranscripcion yamy
Transcripcion yamy
 
Genesis campos
Genesis camposGenesis campos
Genesis campos
 
Miranda castillo UNIX
Miranda castillo UNIXMiranda castillo UNIX
Miranda castillo UNIX
 
Ambar galeas
Ambar galeasAmbar galeas
Ambar galeas
 
Como instalar unix ...lili
Como instalar unix ...liliComo instalar unix ...lili
Como instalar unix ...lili
 
Cristian medina Instalar unix
Cristian medina Instalar unixCristian medina Instalar unix
Cristian medina Instalar unix
 
Mary cervantes
Mary cervantesMary cervantes
Mary cervantes
 
Python Madrid empaquetamiento deb aplicaciones Python
Python Madrid empaquetamiento deb aplicaciones PythonPython Madrid empaquetamiento deb aplicaciones Python
Python Madrid empaquetamiento deb aplicaciones Python
 
Como instalar unix
Como instalar unixComo instalar unix
Como instalar unix
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasos
 
Ronald
RonaldRonald
Ronald
 
Nicolle
NicolleNicolle
Nicolle
 

Más de OpenSistemas

OpenSistemas Corporate Presentation
OpenSistemas Corporate PresentationOpenSistemas Corporate Presentation
OpenSistemas Corporate PresentationOpenSistemas
 
Data Platform & Analytics OpenSistemas MSFT Playbook
Data Platform & Analytics OpenSistemas MSFT PlaybookData Platform & Analytics OpenSistemas MSFT Playbook
Data Platform & Analytics OpenSistemas MSFT PlaybookOpenSistemas
 
Proceso de liberación en el marco legal del código abierto - OpenSistemas
Proceso de liberación en el marco legal del código abierto - OpenSistemasProceso de liberación en el marco legal del código abierto - OpenSistemas
Proceso de liberación en el marco legal del código abierto - OpenSistemasOpenSistemas
 
Virtualization - Solaris LDOMs - OpenSistemas
Virtualization - Solaris LDOMs - OpenSistemasVirtualization - Solaris LDOMs - OpenSistemas
Virtualization - Solaris LDOMs - OpenSistemasOpenSistemas
 
CACert - A Community-driven Certification Authority - OpenSistemas
CACert - A Community-driven Certification Authority - OpenSistemasCACert - A Community-driven Certification Authority - OpenSistemas
CACert - A Community-driven Certification Authority - OpenSistemasOpenSistemas
 
Floss leaders - OpenSistemas
Floss leaders - OpenSistemasFloss leaders - OpenSistemas
Floss leaders - OpenSistemasOpenSistemas
 
Business Intelligence and Pentaho Services - OpenSistemas
Business Intelligence and Pentaho Services - OpenSistemasBusiness Intelligence and Pentaho Services - OpenSistemas
Business Intelligence and Pentaho Services - OpenSistemasOpenSistemas
 
easyGTD - product Info
easyGTD - product InfoeasyGTD - product Info
easyGTD - product InfoOpenSistemas
 
easyGTD - presentación producto
easyGTD - presentación productoeasyGTD - presentación producto
easyGTD - presentación productoOpenSistemas
 

Más de OpenSistemas (10)

From SF with Love
From SF with LoveFrom SF with Love
From SF with Love
 
OpenSistemas Corporate Presentation
OpenSistemas Corporate PresentationOpenSistemas Corporate Presentation
OpenSistemas Corporate Presentation
 
Data Platform & Analytics OpenSistemas MSFT Playbook
Data Platform & Analytics OpenSistemas MSFT PlaybookData Platform & Analytics OpenSistemas MSFT Playbook
Data Platform & Analytics OpenSistemas MSFT Playbook
 
Proceso de liberación en el marco legal del código abierto - OpenSistemas
Proceso de liberación en el marco legal del código abierto - OpenSistemasProceso de liberación en el marco legal del código abierto - OpenSistemas
Proceso de liberación en el marco legal del código abierto - OpenSistemas
 
Virtualization - Solaris LDOMs - OpenSistemas
Virtualization - Solaris LDOMs - OpenSistemasVirtualization - Solaris LDOMs - OpenSistemas
Virtualization - Solaris LDOMs - OpenSistemas
 
CACert - A Community-driven Certification Authority - OpenSistemas
CACert - A Community-driven Certification Authority - OpenSistemasCACert - A Community-driven Certification Authority - OpenSistemas
CACert - A Community-driven Certification Authority - OpenSistemas
 
Floss leaders - OpenSistemas
Floss leaders - OpenSistemasFloss leaders - OpenSistemas
Floss leaders - OpenSistemas
 
Business Intelligence and Pentaho Services - OpenSistemas
Business Intelligence and Pentaho Services - OpenSistemasBusiness Intelligence and Pentaho Services - OpenSistemas
Business Intelligence and Pentaho Services - OpenSistemas
 
easyGTD - product Info
easyGTD - product InfoeasyGTD - product Info
easyGTD - product Info
 
easyGTD - presentación producto
easyGTD - presentación productoeasyGTD - presentación producto
easyGTD - presentación producto
 

Cómo crear ports en FreeBSD #PicnicCode2015

  • 1. Creando ports en FreeBSD Fernando Apesteguía. Project Manager @ OpenSistemas
  • 2. 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
  • 3. 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!)
  • 4. Ejemplo ls /usr/ports CHANGES 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/
  • 5. ¿Cómo se usa? $ cd /usr/ports/editors/libreoffice $ sudo make install o también portinstall libreoffice
  • 6. Behind the scenes (I) 1. Descargar software 2. Comprobar checksum 3. Descomprimir paquete 4. Aplicar parches
  • 7. Behind the scenes (II) 5. Compilar el software 6. Crear el paquete 7. Instalar el paquete
  • 8. ¿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)
  • 9. Makefile ● Conjunto de variables ● Conjunto de targets: fetch, extract, patch, install… ● Algo de lógica (if, for…)
  • 10.
  • 11. 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.
  • 12. Buenas prácticas ● Utilizar poudriere / tinderbox / redports.org ● Intentar testear con todas las opciones disponibles. ● Enviar parches upstream
  • 13. Referencias http://www.freebsd.org/doc/en/books/porters-handbook/book.html → La referencia http://scratching.psybermonkey.net/2009/08/freebsd-how-to-use-meta-ports-to.html http://portsmon.freebsd.org/ https://www.youtube.com/watch?v=LiFq5D-zmBs