sistema de ports en openbsd

Anuncio
SISTEMA DE PORTS EN OPENBSD - Fernando Quintero, http://www.openbsdcolombia.org/
SISTEMA DE PORTS EN OPENBSD
Autor: Fernando Quintero
Correo electrónico: fernando.a.quintero@gmail.com
Fecha de creación : 25/12/10
Ultima modificación:06/01/11
Índice de contenido
1.Licencia (BSD)..................................................................................................................................1
2.Introducción.......................................................................................................................................2
3.Paquetes y Ports.................................................................................................................................2
4.¿Por qué se usan los ports?................................................................................................................3
5.¿Cómo consigo los ports?..................................................................................................................4
6.Usando los ports................................................................................................................................5
6.1.Instalando un port......................................................................................................................5
6.2.Listando los paquetes instalados................................................................................................7
6.3.Eliminando un port....................................................................................................................7
7.Conclusiones......................................................................................................................................8
8.Enlaces de interés..............................................................................................................................8
1. Licencia (BSD)
Copyright (c) 2010, Fernando Quintero,
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions
are met:
•
•
•
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the OpenBSD Colombia nor the names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS
SOFTWARE
IS
PROVIDED
BY
THE
COPYRIGHT
HOLDERS
AND
CONTRIBUTORS
"AS
IS"
AND
ANY
EXPRESS
OR
IMPLIED
WARRANTIES,
INCLUDING,
BUT
NOT
LIMITED
TO,
THE
IMPLIED
WARRANTIES
OF
MERCHANTABILITY
AND
FITNESS
FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS
BE
LIABLE
FOR
ANY
DIRECT,
INDIRECT,
INCIDENTAL,
SPECIAL,
EXEMPLARY,
OR
CONSEQUENTIAL
DAMAGES
(INCLUDING,
BUT
NOT
LIMITED
TO,
PROCUREMENT
OF
SUBSTITUTE
GOODS
OR
SERVICES;
LOSS
OF
USE,
DATA,
OR
PROFITS;
OR
BUSINESS
INTERRUPTION)
HOWEVER
CAUSED
AND
ON
ANY
THEORY
OF
LIABILITY,
WHETHER
IN
CONTRACT,
STRICT
LIABILITY,
OR
TORT
(INCLUDING
NEGLIGENCE
OR
OTHERWISE)
ARISING
IN
ANY
WAY
OUT
OF
THE
USE
OF
THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
________________________________________________________________________________
1.Licencia (BSD)
1/9
SISTEMA DE PORTS EN OPENBSD - Fernando Quintero, http://www.openbsdcolombia.org/
2. Introducción
En este documento explicaremos en palabras menos técnicas lo que es el sistema de ports de
OpenBSD, la intención es que este documento haga parte de una serie de documentos que enseñen
como crear ports.
Los ports o también llamados portes son el sistema por medio del cual se construyen los paquetes
en OpenBSD, también permite que aplicaciones de terceros o que fueron programadas para otros
sistemas operativos puedan correr de una forma adecuada en el sistema OBSD.
Básicamente un port es una estructura de directorios que contienen un archivo principal llamado
Makefile1, este archivo contiene las indicaciones necesarias sobre como descargar los archivos
fuentes de un software, compilarlos e instalarlos en el sistema.
Las Urls principales donde se puede encontrar información adicional son:
http://www.openbsd.org/ports.html
http://www.openbsd.org/faq/ports/index.html
3. Paquetes y Ports
Todos sabemos que la forma más sencilla de instalar aplicaciones en un sistema operativo es usar
instaladores binarios, si bien compilar software a mano sigue siendo un proceso válido, también es
un proceso mucho mas tedioso, pero el argumento a favor para muchos es que de esta forma se
puede garantizar que el software no tenga backdoors u otros códigos maliciosos. No voy a entrar a
debatir cual de los dos mecanismos es mas “seguro” o confiable, solo quiero mostrar que en
OpenBSD podemos tener los instaladores binarios también llamados paquetes o podemos compilar
las aplicaciones usando el sistema de ports.
Lo importante que se debe entender aquí es que una vez los ports son compilados, se crearan
paquetes a partir de estos, así que la confianza o desconfianza se aumenta o reduce a quien compila
las aplicaciones, otros pensaran que entonces es mucho mas seguro compilar cada una de las
aplicaciones a usar, sin embargo el solo pensar en compilar mas de 5500 aplicaciones me da dolor
de cabeza ;)
Los paquetes de OpenBSD generalmente los vamos a identificar porque tienen una extensión .tgz,
así: paquete-1.2.3.tgz, donde 1.2.3 corresponde a la versión del mismo.
Una pregunta que inmediatamente aparece es, en que se diferencia o como se puede diferenciar una
aplicación que esta en su código fuente terminada en .tgz o .tar.gz a un paquete de OpenBSD que
usa la misma extensión?.
La respuesta la da el comando pkg_info, por ejemplo, veamos la salida de este comando con la
aplicación amsn para OpenBSD:
# pkg_info amsn-0.98.3p0.tgz
Information for amsn-0.98.3p0.tgz
Comment:
open source MSN Messenger clone
1 https://secure.wikimedia.org/wikipedia/es/wiki/Make
________________________________________________________________________________
3.Paquetes y Ports
2/9
SISTEMA DE PORTS EN OPENBSD - Fernando Quintero, http://www.openbsdcolombia.org/
Description:
aMSN is a Microsoft Messenger clone. It allows you to keep in touch with
your friends and exchange instant messages and files, with features such
as:
* Display pictures
* Custom emoticons
* Multi-language support (around 40 languages currently supported)
* Webcam support
* Sign in to more than one account at once
* Full-speed File transfers
* Group support
* Normal, and animated emoticons with sounds
* Chat logs
* Timestamping
* Event alarms
* Conferencing support
* Tabbed chat windows
Maintainer: Azwaw OUSADOU <bsdmaniak@gmail.com>
WWW: http://www.amsn-project.net/
Cuando el archivo .tgz sobre el que aplicamos el comando pkg_info NO es un paquete de
OpenBSD, no se desplegará información del mismo.
Recuerde que siempre será preferible instalar los paquetes .tgz ya creados en el repositorio oficial
que intentar instalar un port, esto por el asunto del tiempo que toma compilar algunos paquetes (a
veces horas), sin embargo si usted esta buscando una carácteristica especifica del paquete, una
librería, plugin o componente que no esta compilado por defecto, deberá buscar los subpaquetes que
puedan existir o tendrá que compilarlo a mano usando el sistema de ports.
4. ¿Por qué se usan los ports?
OpenBSD tiene aplicaciones instaladas por defecto, en su gran mayoría servicios de red que vienen
listos para usar, sin embargo no todos los usuarios trabajan en el ámbito de redes, requiriendo
instalar otras aplicaciones que no vienen en la instalación por omisión del sistema operativo. Es
aquí cuando los usuarios buscan los proyectos específicos para descargar un binario compatible con
OpenBSD, encontrandose con la sorpresa que no existe, sea porque el creador del producto no lo ha
hecho o porque la comunidad alrededor del proyecto no ha visto la necesidad de llevarlo a esta
plataforma. Esto obviamente puede hacer que muchos usuarios decidan no usar OpenBSD y
________________________________________________________________________________
4.¿Por qué se usan los ports?
3/9
SISTEMA DE PORTS EN OPENBSD - Fernando Quintero, http://www.openbsdcolombia.org/
busquen otros sistemas mas comerciales como lo son Windows, Linux e incluso MacOSX.
Sin embargo muchos otros usuarios toman la decisión de aportarle a las comunidades de software
libre tomando el programa que funciona para otros sistemas y haciendo que funcionen sobre
OpenBSD, a esto se le llama portar una aplicación, en resumen consiste en hacer que una aplicación
Z funcione adecuadamente en OpenBSD cuando la aplicación Z se desarrolló de forma nativa para
otra plataforma, generalmente creada para sistemas Linux.
Una vez el port es creado y aceptado dentro de la comunidad de OpenBSD, el mismo estará
disponible en cada release del sistema operativo siempre y cuando hayan personas encargadas de
mantener actualizado el paquete, haciendole las mejoras necesarias y estando en contacto con los
desarrolladores del software nativo.
La lista de paquetes de OpenBSD se puede descargar desde el servidor FTP y obviamente la
cantidad depende de la arquitectura en la que esté trabajando, generalmente se intenta que los ports
compilen en todas las arquitecturas donde corra OpenBSD, pero no siempre es posible hacerlo.
Listado de paquetes i386: http://openbsd.org.ar/pub/OpenBSD/4.8/packages/i386/index.txt
Un lugar donde se pueden encontrar las estadísticas actuales sobre los ports y paquetes es
http://openports.se/
En la actualidad hay mas de 5700 paquetes disponibles para OpenBSD.
5. ¿Cómo consigo los ports?
Una vez se tenga el sistema operativo instalado y funcionando puede optar por cualquiera de las
siguientes tres opciones:
Como primera opción esta el CD original que se puede ordenar2 por el sitio web de OpenBSD el
cual trae todos los fuentes necesarios para lograr la tarea.
Como segunda opción podemos descargar el archivo ports.tar.gz que pesa aproximadamente 18M
en la versión 4.8 (Diciembre 2010) y se puede obtener de: ftp://ftp.openbsd.org/pub/OpenBSD/4.8/
Y como tercera opción podemos usar el sistema de CVS. Para esto debemos ir al directorio
/usr/ports y ejecutar el siguiente comando:
cvs -d anoncvs@anoncvs.ca.openbsd.org:/cvs get -r OPENBSD_4_8 -Pd
En este ejemplo estamos hablando de OpenBSD versión 4.8, es posible que usted deba cambiar la
información del comando para lograr bajar el árbol de ports adecuado. Recuerde que también existe
un árbol de ports llamada snapshot este corresponde a la versión mas actualizada de los ports, en
palabras de OpenBSD, corresponde a la versión current.
Independiente del camino usado para descargar los ports, es necesario que la estructura quede
ubicada en el directorio /usr/ports/.
Cuando el procedimiento esté listo, debería ver algo así:
# ls /usr/ports/
2 http://www.openbsd.org/orders.html
________________________________________________________________________________
5.¿Cómo consigo los ports?
4/9
SISTEMA DE PORTS EN OPENBSD - Fernando Quintero, http://www.openbsdcolombia.org/
.cvsignore
audio
converters
games
korean
news
productivity update CVS
benchmarks
databases
geo
lang
packages
russian
www INDEX
biology
devel
graphics
mail
palm
security
x11 Makefile
books
distfiles
infrastructure math
plan9
shells README
cad
editors
inputmethods misc
plist
sysutils archivers
chinese
education
japanese
multimedia
pobj
telephony astro
comms
emulators
java
net
print
textproc
#
Esta salida corresponde a todas las categorías de ports existentes a la fecha en el árbol oficial.
6. Usando los ports
Una vez esté el árbol de ports instalado procederemos a trabajar con ellos, por ejemplo podremos
instalar, eliminar o extraer información de los ports que tenemos en el sistema.
6.1. Instalando un port
Para instalar un port binario (un port binario es un paquete) es necesario tener el archivo .tgz y
ejecutar el comando pkg_add.
Ejemplo:
# pkg_add -v amsn-0.98.3p0.tgz
amsn-0.98.3p0:tcl-8.5.8p2: ok
amsn-0.98.3p0:tk-8.5.8p1: ok
amsn-0.98.3p0:bwidget-1.9.0: ok
amsn-0.98.3p0:hicolor-icon-theme-0.12: ok
amsn-0.98.3p0:libgamin-0.1.10p3: ok
...
Si las dependencias del port existen, este se instalara sin problemas, de lo contrario mostrará una
lista de las dependencias requeridas.
Ejemplo:
# pkg_add -v amsn-0.98.3p0.tgz
Can't find desktop-file-utils-0.17
Can't find tk-8.5.8p1
Can't find tcltls-1.5.0p2
Can't find farsight2-0.0.21p0
Can't find jpeg-8b
…
Otra forma de instalar y quizás la mas sencilla es hacerlo apuntando directamente al repositorio
mencionado de paquetes para la versión y la arquitectura en la que estamos trabajando. Ejemplo:
________________________________________________________________________________
6.Usando los ports
5/9
SISTEMA DE PORTS EN OPENBSD - Fernando Quintero, http://www.openbsdcolombia.org/
# uname -a
OpenBSD ports.openbsdcolombia.org 4.8 GENERIC#513 i386
# pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/4.8/packages/i386/amsn-0.97.2p3.tgz
De esta forma se instalaran todas las dependencias de dicho paquete de forma automática y la
velocidad solo dependerá de la conexión a Internet que tenga.
En caso de no tener un archivo binario (.tgz) debemos hacer la instalación usando la estructura del
árbol de ports entrando en el directorio /usr/ports y buscando el port que nos interesa y luego
instalandolo.
Para buscar un port especifico ejecutamos el comando make search key=nombre, donde nombre es
la palabra clave que queremos buscar (puede pensar en algo asi como el comando apt-cache search
en sistemas linux debian/ubuntu).
-bash-4.1# make search key=amsn
Port: amsn-0.98.3p0
Path: net/amsn
Info: open source MSN Messenger clone
Maint: Azwaw OUSADOU <bsdmaniak@gmail.com>
Index: net x11/tk lang/tcl
L-deps: STEM->=0.10.38:devel/gettext converters/libiconv graphics/jpeg
graphics/png net/farsight2
B-deps: STEM->=0.10.38:devel/gettext archivers/bzip2 devel/gmake
security/tcltls tcl->=8.5,<8.6:lang/tcl/8.5 tk->=8.5,<8.6:x11/tk/8.5
R-deps: STEM->=0.10.38:devel/gettext devel/desktop-file-utils security/tcltls tcl>=8.5,<8.6:lang/tcl/8.5 tk->=8.5,<8.6:x11/tk/8.5 x11/bwidget
Archs: any
Al ejecutar este comando encontraremos la ruta donde debemos entrar para instalar el port.
Una vez ubicados en la ruta de interés ejecutaremos el comando que hará que se descargue el
código fuente de la aplicación, se parche y se compile de forma automatizada logrando así generar
un paquete en la ruta /usr/ports/packages/ dentro de nuestro sistema.
Ejemplo:
# cd /usr/ports/net/amsn/
# ls
CVS
Makefile distinfo patches pkg
# make install
===> Checking files for amsn-0.98.3p0
>> Fetch http://downloads.sourceforge.net/sourceforge/amsn/0.98.3/amsn-0.98.3-src.tar.bz2
amsn-0.98.3-src.tar.bz2 4% |*******
| 648 KB
01:15 ETA
Una vez finalizado el proceso el paquete quedará instalado, generalmente en la ruta /usr/local/bin/.
________________________________________________________________________________
6.Usando los ports
6/9
SISTEMA DE PORTS EN OPENBSD - Fernando Quintero, http://www.openbsdcolombia.org/
6.2. Listando los paquetes instalados
El comando pkg_info sin parámetros nos dará información sobre todos los paquetes instalados en el
sistema. Más información: man pkg_info.
Ejemplo:
# pkg_info
GeoIP-1.4.6
find the country where IP address/hostname originates from
ORBit2-2.14.19
atk-1.32.0
high-performance CORBA Object Request Broker
accessibility toolkit used by gtk+
avahi-0.6.28
framework for Multicast DNS Service Discovery
bash-4.1.9
GNU Bourne Again Shell
blas-1.0p4
Basic Linear Algebra Subprograms
bwidget-1.9.0
bzip2-1.0.6
cairo-1.10.0p0
high-level widget set for Tcl/Tk
block-sorting file compressor, unencumbered
vector graphics library
…
Una opción de la que dispone OpenBSD es la de actualizar los ports o paquetes con el comando
pkg_add -ui. Para lograr esto se debe tener la variable de sistema PKG_PATH apuntando a un
repositorio de paquetes actualizado, por ejemplo:
#export PKG_PATH=http://openbsd.org.ar/pub/OpenBSD/snapshots/packages/i386/
bash-4.1# pkg_info | grep cherokee
cherokee-1.0.14
fast, flexible and easy to configure Web Server
bash-4.1# pkg_add -uiv cherokee
Update candidates: cherokee-1.0.8 -> cherokee-1.0.14 (ok)
...
bash-4.1#
6.3. Eliminando un port
Para eliminar un port utilizamos el comando pkg_delete, más información: man pkg_delete.
Ejemplo: Desinstalado el programa quirks.
# pkg_info | grep quirks
quirks-1.31
exceptions to pkg_add rules
# pkg_delete quirks-1.31
quirks-1.31: ok
Read shared items: ok
________________________________________________________________________________
6.Usando los ports
7/9
SISTEMA DE PORTS EN OPENBSD - Fernando Quintero, http://www.openbsdcolombia.org/
#
Si estuviéramos trabajando directamente con el árbol de ports, entonces lo haríamos de esta forma:
-bash-4.1# pwd
/usr/ports/devel/quirks
-bash-4.1# make uninstall
===> Deinstalling for quirks-1.32
quirks-1.32: ok
Read shared items: ok
-bash-4.1#
Se usa el comando make clean=all para eliminar cualquier rastro de dicho paquete.
7. Conclusiones
•
Quizás el sistema de ports de OpenBSD no es tan simple como otros sistemas manejadores
de paquetes que conocemos en el mundo Linux, sin embargo en la actualidad presentan un
mecanismo eficaz para administrar el software que se instala sobre el sistema base.
•
Una forma personal que uso para tener el software que necesito es apuntar constantemente la
variable PKG_PATH al ftp de paquetes estables, de esta forma usando el comando pkg_add
y el nombre del paquete, este quedará instalado en el sistema con todas sus dependencias.
•
OpenBSD cuenta con un poco mas de 5700 paquetes disponibles, la verdad es que para los
usos que le doy (servidor, firewall, IDS) es mas que suficiente, sin embargo proyectos como
FreeBSD tienen alrededor de 22000 ports disponibles, ¿por qué tanta diferencia?.
Recordemos que OBSD es mucho mas exigente en la incorporación de software que no sea
realmente libre, la máxima excepción que se permite es la licencia GPL, pero la idea es
mantener el árbol de ports lo mas libre posible con licencias como MIT y BSD. También hay
que recordar que la comunidad de OpenBSD es mucho mas cerrada por lo tanto los
mantainers para portar el software son mas escasos. ¿Quieres ser uno?.
•
Si es la primera vez que se encuentra con el mundo de los ports le puede parecer un poco
raro o complicado la forma de usarla, pero solo es cuestión de practica para empezar a
disfrutar estas particularidades de los sistemas BSD ;)
8. Enlaces de interés
La documentación oficial sobre los ports la pueden encontrar en:
http://www.openbsd.org/faq/ports/index.html
Mas información acerca del sistema de ports se encuentra en las páginas de manual:
•
•
•
•
ports(7) - describes the different stages (make targets) of port installation, the use of flavors
and subpackages and some other options.
bsd.port.mk(5) - in depth information about all the make targets, variables, the fake
(installation directory) framework, etc.
port-modules(5) - format and conventions used in port modules.
packages-specs(7), library-specs(7) - specifications for binary package names and library
dependencies, respectively.
________________________________________________________________________________
8.Enlaces de interés
8/9
SISTEMA DE PORTS EN OPENBSD - Fernando Quintero, http://www.openbsdcolombia.org/
•
pkg_create(1) - notation used in packing lists.
Larga vida a OpenBSD y Feliz Navidad 2010!
________________________________________________________________________________
8.Enlaces de interés
9/9
Descargar