Title: Herramientas y utilidades Open Source
1Herramientas y utilidades Open Source
- Luis Suárez
- Centro de Referencia Linux UAM-IBM
2Agenda
- Herramientas de desarrollo básicas en Linux.
- Compiladores.
- Bibliotecas.
- Entornos de desarrollo.
- Control de versiones.
- Entornos gráficos. XWindow.
- GNome.
- KDE.
- Samba.
- Otras herramientas
- Plataformas OSS compatibles .NET.
- Herramientas de trabajo en grupo.
- Suites de oficina
3Herramientas de desarrollo básicas en Linux
- Basadas en los compiladores GNU, gcc
- El mejor compilador de C para arquitecturas PC.
- Cumple con más estándares que cualquier otro
compilador. - Permite generar código objeto con optimizaciones
para las múltiples arquitecturas ( x86, ia-64,
PowerPC, MIPS, R6000, M68000, ARM, Sparc, Alpha) - Incluye compilador de C / C / Objective C,
Pascal, Fortran, ADA y Java - Se puede utilizar para generar programas
ejecutables bajo Windows, utilizando las
librerías cygwin. - Herramientas de depuración
- gdb depurador con interfaz de comandos modo
texto. - Interfaces gráficas para gdb xxgdb, ddd.
- Análisis de programas en ejecución (profiler)
gprof.
4Bibliotecas de desarrollo
- Bibliotecas estándar
- glibc Biblioteca C que incluye estándares ISO C
(ISO 9899/ANSI X3.159), Posix (ISO 9945), BSD,
SystemV y XPG (X/Open Portability Guide). - libstdc. Biblioteca estándar C ISO 14882.
- libgcj, para soporte de Java.
- Existen múltiples bibliotecas de utilidades.
Entre otras muchas, se puede destacar - libpthreads Biblioteca de hilos y semáforos
POSIX. - libncurses Biblioteca de manejo de pantallas de
texto con direccionamiento de posiciones. - libpcap Biblioteca de captura de paquetes de
redes. Utilizada por herramientas de análisis de
tráfico y sniffers. - libcrypt Biblioteca de criptografía.
- libgsl Biblioteca de cálculo científico (GPL).
- Bibliotecas gráficas sobre XWindow
- GTK GIMP Toolkit. Diseñado como reemplazo de
Motif. Base de Gnome. - Qt Desarrollada por Trolltech para su plataforma
de desarrollo de GUIs. Base de KDE.
Herramientas de desarrollo
5Generación e instalación de aplicaciones
- Compilación de programas mediante gmake.
- Macros, dependencias, compilación, enlace,
instalación, borrado - autoconf
- Produce un script de configuración (configure).
Adapta los archivos genéricos de definición de
una aplicación para compilar correctamente en una
determinada plataforma. - automake
- Genera un modelo de makefile interpretable por
autoconf a partir de un modelo simple de
dependencias. - libtool
- Construye librerías compartidas adaptadas al
sistema. - Gestores de paquetes instalables (rpm, apt)
- Generación de paquetes instalables. Con scripts
de pre y post instalación. - Gestión de instalación y mantenimiento de
versiones, con verificación de dependencias.
Herramientas de desarrollo
6Proceso básico de generación de una aplicación
automake
configure
makefile.am
makefile.in
makefile
.h.in
.h
autoconf
configure.in
configure
dependencias
makefile
rpm
Paquete instalable
gmake
fuentes
ejecutables
apt
gcc libtool
Pre-instalación
.h
Post-instalación
bibliotecas
Adaptado de la fuente http//sources.redhat.com/a
utobook/
Herramientas de desarrollo
7Entornos de desarrollo integrados
- Anjuta
- Editor de textos que integra las herramientas GNU
( gcc, automake, autoconf, make y gdb ) en un
entorno que hace más fácil el seguimiento de los
cambios. - Permite desarrollar proyectos en varios lenguajes
de programación. - Soporte para resaltar la sintaxis en función del
lenguaje. - Visión de la estructura del directorio del
proyecto. - Integración del depurador gdb con el texto.
- Generación automática de los archivos necesarios
para la configuración previa a la instalación del
proyecto. - Kdevelop y QtDesigner
- Facilita el desarrollo de aplicaciones con
interfaz gráfica. - Características similares a Visual C.
Programación visual arrastrando y soltando. - Emplean librería gráfica Qt, en lugar de MFC.
Herramientas de desarrollo
8Entornos de desarrollo integrados. Anjuta
Herramientas de desarrollo
9Entornos de desarrollo integrados. Kdevelop y
Qt-designer
Herramientas de desarrollo
10Otros entornos de desarrollo Open Source
- Eclipse
- Framework de desarrollo desarrollado por IBM.
- Existen multitud de PlugIns que le dan toda la
funcionalidad necesaria. - NetBeans
- Entorno de desarrollo visual para Java 2.
Desarrollado por Sun. - Permite diseño de aplicaciones con componentes
gráficas mediante la técnica arrastrar y
soltar. - Glade Generador de interfaces gráficas sobre
GTK y Gnome. - BloodShed Dev-C Entorno de desarrollo para gcc
sobre MS Windows. - XBasic IDE y generador de interfaces gráficas
multiplataforma. - Maguma studio (antes phpIDE) Entorno de
desarrollo para php en Windows.
Herramientas de desarrollo
11Control de versiones (I)
- El control de versiones es especialmente
necesario con el modelo de desarrollo de las
aplicaciones de software libre, donde cientos de
desarrolladores pueden estar trabajando con
partes del mismo código - Se dispone de dos aplicaciones principales OSS
para resolver este problema - Concurrent Version System, CVS
- Es el más utilizado en la comunidad de software
libre. - Mantiene todos los archivos fuente del proyecto
en un servidor, almacenando los cambios que se
producen entre cada una de las versiones. - Los usuarios trabajan de manera local y solo se
aplican los cambios a los ficheros de desarrollo
cuando todos los usuarios han terminado de
trabajar con ellos. - Permite actualización compartida sobre archivos
(unreserved check-out). Facilita integración de
cambios y detección de conflictos.
Herramientas de desarrollo
12Control de versiones (II)
- Subversion Se crea como alternativa, mejora y
evolución de CVS, para ofrecer todo lo que se
echa en falta de CVS - Control de versiones de los directorios, cambios
de nombre y meta-datos. - Atomicidad de los cambios de versión. Los números
de versión se mantienen por revisión, no por
fichero. - Utiliza Apache y WebDAV/DeltaV como servidor del
repositorio. - Facilidad para crear nuevas ramas de desarrollo.
- Diseño de librerías pensadas en el entorno
cliente/servidor por capas, lo que evita los
problemas de mantenimiento que tienen algunas de
las aplicaciones asociadas a CVS.
Herramientas de desarrollo
13Entornos gráficos. El entorno X-Window
- XWindow es una Interfaz de Usuario Gráfica
(Graphical User Interface, GUI) desarrollada por
el Massachusetts Institute of Technology, MIT. - XFree86 es la versión de uso público de la
Versión 11 Release 6 de Xwindows, disponible en
muchas plataformas, Linux entre ellas. - Está estructurado en dos niveles
- Servidor gráfico Programa ejecutado en la
estación de trabajo que sirve recursos llamados
Displays. Un Display es la combinación de un
dispositivo gráfico de salida y uno (o varios)
dispositivos de entrada. - Cliente Programa de aplicación, capaz de
comunicarse a través del protocolo de TCP/IP con
un servidor (local o remoto). - El sistema X-Window es por tanto transparente a
la red. Sobre un mismo Display se pueden
proyectar aplicaciones ejecutadas desde varios
ordenadores distintos de manera simultánea.
14Elementos del entorno X-Window
- El servidor Controla la pantalla y los
dispositivos de entrada / salida. Comunica con
los clientes a través de TCP/IP (TCP well known
port 6000 y siguientes). - API básica de clientes xlib. Funciones básicas
de dibujo. - Widget toolkits Bibliotecas de elementos
gráficos de alto nivel menús, botones, canvas,
etc. Los más empleados Open Source son GTK y Qt. - Gestor de ventanas Cliente específico XWindow
que controla la creación, destrucción,
movimiento, cambio de tamaño, superposición de
las ventanas. Ejemplos fvwm, Enlightenment,
sawfish, kwm - Características y comparaciones en
http//xwinman.org/. - El entorno de trabajo. Programa de gestión del
escritorio. Estandarizan la interfaz de usuario
de las aplicaciones. Los más extendidos son - GNU Network Object Model Environment, GNOME.
- K Desktop Environment, KDE.
- Alternativa ligera XFce.
XWindow
15Arquitectura del servidor XFree86
- Estructura modular con carga dinámica de módulos,
similar al kernel. - Los módulos pueden, por lo general, ser
independientes del sistema operativo. - Los módulos se pueden cargar
- Por configuración estática del servidor.
- Por especificación en el archivo de
configuración. - Por ser necesarios para la carga de otro módulo.
- La carga de un módulo tiene funciones para
verificar que el módulo funcionará correctamente.
Si fallan, el módulo no se inicia. - La funcionalidad de los módulos es diversa
drivers, gestión fuentes, frame buffer
Fuente http//www.linux-mag.com/2000-09/gear_01
.html
XWindow
16GNOME
- Es un entorno de trabajo que permite a los
usuarios un acceso sencillo a las funciones del
ordenador. Incluye - Panel de arranque de aplicaciones y visualización
de su estado. - Escritorio de trabajo.
- Un conjunto de herramientas y aplicaciones
estándar. - Un conjunto de convenciones que permiten la
cooperación y consistencia entre las aplicaciones
que contiene. - Es un entorno de distribución gratuita. Funciona
en muchos sistemas Unix. - Construido sobre una infraestructura básica
CORBA. - Basado en el widget toolkit GTK. Incluye
bibliotecas de desarrollo adicionales propias
para integrar aplicaciones en el entorno.
XWindow
17Elementos de GNOME
XWindow
18Arquitectura Gnome
GTK
Fuente
Fuente http//wiki.cs.uiuc.edu/cs427/thearchite
ctureofGNOME
XWindow
19KDE
- K Desktop Environment.
- Es un entorno de trabajo similar a GNOME, que
cubre las mismas funciones y de un modo similar. - Posee los mismos elementos para ejecutar
aplicaciones y organizarlas en menús. - Herramientas de configuración del entorno y del
gestor de ventanas similares a las proporcionadas
por GNOME. - Las diferencias importantes con GNOME están al
nivel de la arquitectura de componentes y no son
apreciables por el usuario común. - KDE tiene un modelo de objetos que permite mayor
integración de las aplicaciones desarrolladas con
sus librerías. - Se pueden intercambiar aplicaciones y menús entre
ambos entornos, así como acceder a aplicaciones
propias de un entorno desde otro. - Las librerías Qt que utiliza KDE hacen que C
sea el lenguaje indicado para realizar
aplicaciones integradas con KDE.
XWindow
20SAMBA Opening Windows to a wider world
- SAMBA es la implementación para sistemas UNIX del
protocolo SMB/CIFS para compartición de archivos
e impresoras en red. - Permite la compartición de archivos en red entre
sistemas operativos UNIX y cualquiera de las
versiones de Windows. - Permite realizar autenticación de usuarios en
dominios Windows. - Proporciona resolución de nombres de Windows
(WINS). - Fácil de administrar, con posibilidades de
configuración vía web.
21Netbios sobre TCP/IP
Resolución Nombres
Datagramas
Netbios
Servicios Orientados a Conexión
TCP/IP
UDP137
TCP137
UDP138
TCP139
Servidor
Cliente
Samba
22SAMBA como servidor de archivos
- Permite que los usuarios accedan a los archivos e
impresoras compartidas en la red
independientemente de que utilicen un sistema
UNIX, Apple OS X o Microsoft Windows. - Permite compartir archivos siguiendo el modelo de
seguridad ACL de Windows NT/2000/XP. - Además aporta
- Mayor fiabilidad.
- Mayor rendimiento.
- Sin costes de licencias.
- Mayor independencia del hardware.
Samba
23SAMBA como método de autenticación de usuarios en
la red
- SAMBA permite realizar la autenticación de
usuarios (tanto Linux como Windows) en el sistema
a través de la red. - Permite utilizar un servidor LDAP para realizar
la autenticación. - Permite actuar a un sistema Linux como
controlador primario (Primary Domain Controller,
PDC) de un dominio Windows, con la posibilidad de
añadir servidores Windows o SAMBA como miembros
del dominio - Si el PDC del dominio es un servidor SAMBA, se
puede utilizar otro servidor SAMBA o Windows como
servidor secundario (Backup Domain Controller,
BDC) del mismo. - Debido a la falta de especificaciones de la base
de datos Security Accounts Management (SAM) de
Windows NT, aún no es posible utilizar un
servidor SAMBA como BDC de un PDC Windows. - Soporta plenamente las características del perfil
móvil de Windows. Sin embargo, con la versión
actual de SAMBA aún no están soportadas todas las
características de directorio activo incorporadas
en Windows 2000.
Samba
24SAMBA para usuarios Linux
- SAMBA también resulta una alternativa a NFS en
entornos UNIX en los que no son necesarias todas
las características de ese sistema. - En entornos Linux permite montar los recursos
compartidos y ejecutar comandos sobre ellos del
mismo modo que NFS. - El perfil móvil no solo es aplicable a entornos
Windows, sino que también es posible en entornos
Linux con SAMBA, por tanto la movilidad de
usuarios también se aplica a este sistema
operativo - El soporte de SAMBA está integrado en los
navegadores de archivos de los entornos de
escritorio más comunes ( KDE y GNOME ), por lo
que los usuarios inexpertos pueden acceder a los
recursos compartidos del mismo modo que lo harían
en Windows.
Samba
25SAMBA casos de uso (I)
- Servidor Samba integrado en dominio Windows
Servidor Windows
Win 2K Active Directory Domain Controller
Servidor Samba
Clientes Windows o Linux
Samba
26SAMBA casos de uso (II)
- Dominio Samba con servidores Windows
Servidor Windows
Linux Domain Controller (no completamente compatib
le AD)
Servidor Samba
Clientes Windows o Linux
Samba
27SAMBA casos de uso (III)
- SAMBA permite una gestión centralizada con LDAP,
múltiples dominios, múltiples PDCs e integración
con directorio activo
IBM Dir Integrator
Servidor Active Directory
Servidor LDAP
Linux Domain Controller
Linux Domain Controller
Samba
28Otras herramientas OSS
- Existen múltiples herramientas OSS, entre las que
se pueden destacar - Todos los servicios TCP/IP básicos Correo,
Telnet, FTP, Web, SSH, NFS, RPCs, NNTP, NTP - Sistemas de Oficina.
- Sistemas de gestión del trabajo en grupo.
- Emuladores de plataforma .NET.
- Plataformas de producción J2EE.
- Gestores de bases de datos.
- Diseño gráfico.
- Gestión de red y de aplicaciones.
- Mecanismos de seguridad y detección de
intrusiones. - Análisis de tráfico.
29Plataformas OSS compatibles .NET
- Existen dos proyectos para realizar un sistema
OSS compatible con la plataforma .NET - Mono, de Ximian Inc. Es el más avanzado. Cuenta
con los siguientes componentes en funcionamiento
- Core ensamblado de las clases mscorlib, System,
System.Security y System.XML - ADO.NET System.Data y otros proveedores de bases
de datos. - ASP.NET Soportados WebForms y Web Services.
- Compiladores C, VB.NET
- Librerías específicas Open Source, Unix y Gnome
- En desarrollo clases correspondientes a las
ventanas y formularios de Windows - DotGNU. Ha desarrollado los siguientes
componentes - DotGNU Portable.NET Implementación de .NET CLI,
y los compiladores de C y C. - DGEE Servidor de webservices.
Otras aplicaciones
30Herramientas de oficina
- Suites integradas que contienen las principales
herramientas necesarias para realizar el trabajo
de oficina - Procesador de textos, hoja de cálculo,
presentaciones, flowcharts, dibujo vectorial,
dibujo raster, generación de informes, gráficos
de negocio, editor de fórmulas, acceso a bases de
datos. - Las más extendidas son
- KOffice Integrada en KDE
- Gnome Office Integrada en Gnome.
- Open Office
- La más completa y utilizada.
- Liberada por Sun como Open Source a partir de
Star Office. - El entorno de oficina puede ser la killer
application que decante el uso de la plataforma
cliente.
Otras aplicaciones
31Compatibilidad Open Office / Star Office
Fuente Tech Republic, Examine Open Offices
Interoperability with Microsoft Office,
http//techrepublic.com.com/5100-6270-5083657.html
Otras aplicaciones
32Herramientas de trabajo en grupo Kroupware
- Para gestionar los proyectos comunes y la
gestión entre el personal de la empresa se
desarrollan las suites de trabajo en grupo que
incorporan las funcionalidades de correo
electrónico, mensajería entre usuarios, agenda y
calendarios comunes, asignación de tareas, etc. - En el mercado existen desde hace tiempo programas
que permiten realizar este tipo de tareas, Lotus
Notes es un ejemplo de ellas. - Existen alternativas de suites OSS que
disponibles, basadas en una interfaz web y las
nativas. - Entre estas últimas destaca Kroupware,
desarrollada para la agencia federal para la
seguridad en tecnologías de la información del
gobierno alemán - Si solo necesitamos un lector de correo
electrónico compatible con Microsoft Exchange,
Ximian Inc. ofrece un programa que permite a su
lector de correo electrónico Evolution utilizar
un servidor de correo Exchange.
Otras aplicaciones
33Herramientas de trabajo en grupo Kroupware
- Qué ofrece Kroupware ?
- Correo electrónico, con posibilidad de
utilización de comunicaciones cifradas. - Agenda privada.
- Agenda global mantenida en un directorio LDAP.
- Calendarios privados.
- Notas privadas que se pueden pasar a otros
usuarios. - Listas de tareas, que se pueden asignar a otros
usuarios. - Gestión de uso de recursos compartidos ( ej.
Salas de reuniones ), mediante calendarios de
eventos. - Sincronización con agendas PDA Palm.
- Posibilidad de integración con Outlook.
Otras aplicaciones
34Herramientas de trabajo en grupo Kroupware
- El gestor de calendarios de kroupware
Otras aplicaciones
35Herramientas de trabajo en grupo Kroupware
- Viendo las notas personales
Otras aplicaciones
36Herramientas de trabajo en grupo Kroupware
- Invitando a un evento a otro usuario
Otras aplicaciones
37Herramientas de trabajo en grupo Evolution
- Desarrollada por Ximian Inc.
- Agrupa en una herramienta las siguientes
funcionalidades - Correo electrónico, con agenda, filtros,
múltiples cuentas, etc. - Calendario.
- Gestión integrada de la información Visión
general de notas, citas, to-do lists, etc. - Seguridad y cifrado de la información.
- Compatibilidad con otras herramientas. Mediante
Ximian Connector (no gratuito), se puede enlazar
con servidor Microsoft Exchange.
Otras aplicaciones
38Referencias
- The GCC Home Page http//gcc.gnu.org/.
- The GNU C Library http//www.gnu.org/software/lib
c/libc.html. - Gary V. Vaughan, Ben Elliston, Tom Tromey and Ian
Lance Taylor, GNU Automake, Autoconf and Libtool,
May 2001. http//sources.redhat.com/autobook/. - Daniel Manrique, XWindow System Architecture
Overview HOWTO, May 2001. http//www.tldp.org/HOWT
O/XWindow-Overview-HOWTO/ - Dirk Hohndel, The XFree86 Architecture, Linux
Magazine, September 2000. http//www.linux-mag.com
/2000-09/gear_01.html. - Gnome Architecture Overview, http//developer.gnom
e.org/arch/. - The Architecture of Gnome, http//wiki.cs.uiuc.ed
u/cs427/thearchitectureofGNOME.