autorizada la entrega del proyecto de alumno: el ...aplicaciones. este proyecto nació en el año...
TRANSCRIPT
Autorizada la entrega del proyecto de alumno:
FRANCISCO MOLINERO SANZ ____________________________
El Directores del proyecto:
MARIO CASTRO PONCE
Fdo: , a 12 de Septiembre de 2008
RAFAEL VIDA DELGADO
Fdo: , a 12 de Septiembre de 2008
Vº Bº del Coordinador del proyecto:
DAVID CONTRERAS BÁRCENA
Fdo: , a 12 de Septiembre de 2008
UNIVERSIDAD PONTIFICIA DE COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO SUPERIOR INFORMÁTICO
PROYECTO FIN DE CARRERA
Entorno web para la creación de distribuciones
KNOPPIX personalizadas
AUTOR: Francisco Molinero Sanz
MADRID, Septiembre 2008
A mis padres por la educación y el apoyo incondicional recibidos. A mis abuelos cuya
ilusión por la finalización de mis estudios supera la mía propia. A Leticia que sin su
comprensión y ánimo hubiera sido imposible sacar adelante este proyecto.
Francisco Molinero Sanz, Septiembre 2008
“Entorno web para la creación de distribuciones
KNOPPIX personalizadas”
Resumen
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
II
RESUMEN
El software libre está experimentando una época de gran auge y popularidad
en nuestros días, lo cual se refleja en el gran aumento del número de usuarios y
aplicaciones.
Este proyecto nació en el año 1984 de la mano de Richard Stallman y la FSF
(Free Software Foundation) basado en una idea muy simple: la creación de un sistema
operativo funcional, libre y gratuito que comenzó llamándose proyecto GNU (GNU´s
not UNIX).
El concepto de software libre hace referencia a cuatro libertades principales de
los usuarios:
1. Libertad de usar los programas, con cualquier propósito.
2. Libertad de estudiar el funcionamiento de los programas y adaptarlos a
las propias necesidades.
3. Libertad de distribuir copias.
4. Libertad de actualizar los programas y hacer públicas las mejoras.
Knoppix es una distribución de GNU/Linux basada en Debian muy conocida.
Esta popularidad se debe principalmente a ser la primera distribución Linux-Live, es
decir, permite iniciar Knoppix en un PC sin necesidad de instalar nada, simplemente a
partir de un CD o un DVD de arranque. Además, gracias al desarrollo de un sistema de
compresión (cloop), se consigue sobrepasar los 650-700MB de capacidad del CD por lo
que se consigue introducir hasta 2 GB de datos.
Esto ha supuesto un claro intento de acercamiento de GNU/Linux a usuarios
menos avanzados o con menos experiencia, poniendo al alcance de todo el mundo una
distribución gratuita, diferente y sin dificultades para ejecutar o instalar en una máquina.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
III
De aquí surge la motivación de este proyecto, que tiene como objetivo el
desarrollo de un entorno web ameno y de fácil navegación a través del cual hacer más
accesibles las nuevas tecnologías del software libre a los usuarios. Principalmente
ofrece la posibilidad de adquirir distribuciones personalizadas o bien predeterminadas
basadas en la distribución Linux-Live por excelencia: Knoppix. También contará con
acceso a noticias relacionadas, guías, manuales, encuestas, enlaces y un foro dedicado
con el fin de ofrecer el mayor apoyo y las mayores facilidades a la comunidad de
usuarios.
La distribución Knoppix estándar puede no ajustarse a las necesidades de un
usuario, bien porque existan paquetes innecesarios en la misma o por la carencia de
otros fundamentales en otras situaciones. Un grave problema de las distribuciones
Live-CD es que pueden no tener total compatibilidad con el hardware de un
determinado usuario. Puede ser que los controladores de algún hardware de la máquina
de un usuario no estén configurados o instalados perfectamente para su pleno
rendimiento. Este proyecto soluciona este problema en cierta medida, permitiendo al
usuario crearse un Live-CD con los paquetes que específicamente necesita. La base de
la creación de distribuciones Knoppix personalizadas reside en la posibilidad de
modificar la gama de paquetes del CD, borrando los indeseados e instalando a la carta,
todo ello dentro del margen de tamaño del CD (Puede ser sobrepasado y grabado en un
DVD).
Otra posibilidad que ofrece la re-masterización es la de cambiar parte de la
configuración, donde el usuario puede establecer su propio fondo de escritorio, textos de
bienvenida, sonidos de entrada y salida del sistema y varias configuraciones más
avanzadas para crear una distribución aparentemente diferente pero con las mismas
bases que la original.
“Web environment for creating custom KNOPPIX´s
distributions”
Abstract
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
v
ABSTRACT
Free software is experiencing an era of boom and popularity today, which is
reflected in the large increase in the number of users and applications.
The project was born in 1984 created by Richard Stallman and the FSF (Free
Software Foundation) based on a very simple idea: the creation of a functional and free
operating system, which began called GNU (GNU's not Unix ).
The concept of free software refers to four main freedoms of users:
1. Freedom of using the programs for any purpose.
2. Freedom to study the programs and adapt them to their own needs.
3. Freedom to distribute copies.
4. Freedom of updating programs and make public the improvements.
Knoppix is a GNU/Linux’s distribution based in Debian and well known. This
popularity is due mainly to be the first Linux distribution Live, this means it allows start
Knoppix on a PC without installing anything, simply from a CD or DVD boot. Also,
thanks to the development of a compression system (cloop), it has accomplished to
surpass the 650-700MB capacity of the CD and it manages to install over 2 GB of data.
This was a clear attempt at rapprochement GNU / Linux users with less
sophisticated or less experience, putting in the hands of everyone around the world a
free, different distribution, and smoothly to execute or install on a machine. Here comes
the motivation for this project, which aims at developing a web environment fun and
easy to navigate through which to bring new technologies to free software users. Mainly
offers the possibility of acquiring customized distributions or predetermined based on
the Linux distribution-Live par excellence: Knoppix. Apart from this, users will have
access to related news, guides, manuals, surveys, links and a forum dedicated to
providing the widest possible support and better facilities to the user community.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
vi
The Knoppix standard distribution can not meet clients' needs, either because
there are unnecessary packages installed on it or the lack of other vital in other
situations. A serious problem with Live-CD distributions is that they can not have full
compatibility with the hardware of a particular user. Maybe some hardware controllers
of the user’s machine is not fully installed or configured for its full capacity. This
project solves this problem to some extent, allowing the user to create a Live-CD
distribution with packages that he specifically requires. The basis for creating custom
Knoppix distributions lies in the possibility of modifying the range of packages installed
on the CD, removing unwanted and installing to fit needs, all within the margin size of
the CD (may be exceeded and recorded on a DVD) .
Another possibility offered by the re-mastering is to change the user’s
configuration, where the user can establish its own background image, welcoming texts,
beginning and ending sounds … and endless configurations to create a more advanced
distribution apparently different but with the same engine as the original.
“Entorno web para la creación de distribuciones
KNOPPIX personalizadas”
Índice
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
viii
ÍNDICE
Capítulo 1 – INTRODUCCIÓN ........................................................................... 1
1.1 OBJETIVOS DEL PROYECTO...................................................................... 2
1.2 ALCANCE DEL PROYECTO ........................................................................ 4
1.3 METODOLOGÍA DE TRABAJO ................................................................... 5
Capítulo 2 – KNOPPIX ........................................................................................... 7
2.1 HISTORIA ....................................................................................................... 8
2.2 POSIBILIDADES .......................................................................................... 10
2.3 LIVE-CD ........................................................................................................ 11
2.4 CARACTERÍSTICAS Y CONFIGURACIÓN ESTÁNDAR ....................... 15
2.5 RE-MASTERIZACIÓN................................................................................. 16
2.5.1 REQUERIMIENTOS MÍNIMOS............................................................ 16
2.5.2 FASES DEL PROCESO......................................................................... 17
Capítulo 3 – DESARROLLO DEL PROYECTO ..................................................... 28
3.1 PRÓLOGO ..................................................................................................... 29
3.2 ENTORNO DE DESARROLLO ................................................................... 30
3.2.1 JOOMLA GESTOR DE CONTENIDOS........................................................ 32
3.2.1.1 Introducción....................................................................................... 32
3.2.1.2 Usuarios............................................................................................. 33
3.2.1.3 Extensiones......................................................................................... 34
3.2.2 APACHE SERVER.................................................................................. 41
3.2.3 PHP........................................................................................................ 42
3.2.4 MySQL.................................................................................................... 43
3.3 ANÁLISIS DEL PROBLEMA ...................................................................... 44
3.3.1 DIAGRAMA CONCEPTUAL....................................................................... 44
3.3.2 MODELO DE CASOS DE USO................................................................... 45
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
ix
3.3.2.1 Descripción de los casos de uso............................................................. 46
3.4 IMPLEMENTACIÓN ....................................................................................51
3.4.1 INTRODUCCIÓN.......................................................................................... 51
3.4.2 PROCESO DE RE-MASTERIZACIÓN......................................................... 51
3.4.3 ENTORNO WEB............................................................................................ 76
Capítulo 4 – PLANIFICACIÓN ........................................................................ 81
4.1 INTRODUCCIÓN.......................................................................................... 82
4.2 DIAGRAMA EDT ......................................................................................... 83
4.3 PLANIFICACIÓN ......................................................................................... 84
4.4 VALORACIÓN ECONÓMICA..................................................................... 85
4.4.1 PERFILES DE TRABAJO............................................................................. 85
4.4.2 COSTES......................................................................................................... 86
Capítulo 5 – CONCLUSIONES......................................................................... 87
5.1 CONCLUSIONES DEL PROYECTO........................................................... 88
5.2 TRABAJOS FUTUROS................................................................................. 91
Capítulo 6 – BIBLIOGRAFÍA ............................................................................ 92
ANEXO A – Paquetes de la distribución Knoppix 5.1.1........................... 97
Capítulo 1
INTRODUCCIÓN
1
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
2
CAPÍTULO 1 – INTRODUCCIÓN
1.1 OBJETIVOS DEL PROYECTO
El proyecto fin de carrera “Desarrollo de un entorno web para la creación de
distribuciones KNOPPIX a Medida” pretende conseguir los siguientes objetivos:
1. Desarrollo de un entorno web
Desarrollo de un entorno web de navegación fácil e intuitiva cuya principal
funcionalidad sea la creación de distribuciones KNOPPIX personalizadas.
• Desarrollo de un apartado de gestión de noticias relacionadas con el
software libre.
• Desarrollo de un apartado de encuestas en las que el usuario participa de
forma interactiva.
• Desarrollo de una sección de descargas con archivos relacionados con la
personalización de distribuciones KNOPPIX:
i. Fondos de escritorio.
ii. Imágenes Ksplash
iii. Distribuciones ya personalizadas en distintos ámbitos enfocadas a
los usuarios con menos experiencia.
• Gestión de usuarios. Registro y acceso con permisos.
• Gestión de la ayuda y soporte a través de un foro dedicado.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
3
2. Estudio detallado del proceso de re-masterización de KNOPPIX
El proceso de re-masterización es el pilar principal en el cual se basa este
proyecto fin de carrera. Este es un proceso complejo que se puede resumir
brevemente como adaptar una distribución KNOPPIX (en nuestro caso 5.1) a
nuestras necesidades. Se puede personalizar tanto el aspecto externo (cambiar
fondo de escritorio, imagen de arranque, sonidos de inicio y salida del
sistema…) como la configuración de paquetes, es decir, borrar paquetes de la
distribución inicial que no sean adecuados a nuestras necesidades e instalar otros
que por el contrario se necesitan o desean tener y no están instalados en la
distribución inicial. En principio, es la parte más importante y notable del
proyecto, puesto que supone una manera fácil y guiada mediante formularios
HTML de conseguir una distribución KNOPPIX personalizada.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
4
1.2 ALCANCE DEL PROYECTO
El proyecto que nos ocupa consiste en el desarrollo de un entorno web en el que
un usuario previamente registrado en la base de datos de la aplicación pueda crearse una
distribución GNU/Linux personalizada basada en la Knoppix 5.1. La aplicación estará
basada en formularios a través de los cuales el usuario configura paso a paso su
distribución para luego poder descargarla del sitio web.
Las principales características serán:
1. Gestión de usuarios: Registro de nuevos usuarios y petición de
login para acceder al menú de usuario en el que se encuentra la
opción de creación de la distribución Knoppix personalizada con
el fin de evitar el uso indebido de los recursos del servidor web
por parte de usuarios malintencionados.
2. Re-masterización de Knoppix: El sistema ofrecerá la posibilidad
de crear la distribución a medida de una forma guiada, sencilla y
automática para facilitar la tarea a usuarios inexpertos y
amenizarla para usuarios más experimentados. Se recopilará toda
la información requerida en el proceso de re-masterización
mediante formularios interactivos. Con esta información se creará
un script ejecutable en consola (shell script) que se almacenará en
el servidor para su posterior ejecución en tareas batch del
servidor.
3. Descarga de distribuciones: Las descargas de las distribuciones
creadas por los usuarios se efectuarán vía FTP a través de la web,
con un tiempo de vida finito en el servidor. Para facilitar dicha
tarea se avisará al usuario cuando su distribución este disponible
para descarga a través de un correo electrónico.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
5
1.3 METODOLOGÍA DE TRABAJO
La metodología empleada en el desarrollo del Proyecto Fin de Carrera
“Desarrollo de un entorno web para la creación de distribuciones KNOPPIX a medida”
puede describirse en las siguientes fases:
� Estudio del entorno de desarrollo
En primer lugar, se realiza una primera toma de contacto con las tecnologías
existentes enfocadas al desarrollo web:
� Estudio del ciclo de vida de aplicaciones web y funcionamiento básico
del protocol HTTP (Hypertext Transfer Protocol) en el cual se basa la
transferencia de datos (páginas web) entre un cliente (navegador web) y
un servidor.
� Estudio del manejo de lenguajes de programación en entornos web PHP
y Javascript.
� Configuración básica del servidor web y del gestor de bases de datos
asociado a él.
Nuestra poca experiencia con estas tecnologías ha supuesto un mayor esfuerzo
y dedicación durante esta fase.
� Fase de análisis
La identificación de necesidades y la adquisición del conocimiento conforman la
parte más importante del desarrollo software. Identificar las especificaciones del cliente
y adquirir el conocimiento necesario son tareas fundamentales para obtener una buena
base a partir de la cual comenzar el desarrollo del proyecto.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
6
� Fase de diseño y programación
En esta fase se busca el diseño lógico óptimo de la aplicación a desarrollar y su
posterior programación modular. Parte por parte se busca la mejor solución de
programación para cada una de las utilidades descritas en la fase anterior. Después de la
fase de estudio del entorno de desarrollo ésta es la fase más laboriosa y que más tiempo
requiere.
� Fase de pruebas y mejoras
Fase importante en donde se solventan los posibles errores de ejecución y se
mejora la interfaz. Un primer prototipo en funcionamiento incita a mejorar la aplicación
módulo por módulo para acercar más el proyecto a sus objetivos principales o incluso
añadir nuevos objetivos con el fin de mejorar el funcionamiento o la interfaz de la
aplicación.
� Documentación
Es la fase que está presente en casi la totalidad del desarrollo del proyecto,
puesto que durante todo el estudio y desarrollo de la aplicación se ha de documentar y
especificar por escrito todas las fases, tecnologías, herramientas y recursos empleados.
Capítulo 2
KNOPPIX
2
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
8
CAPÍTULO 2 – KNOPPIX
2.1 HISTORIA
Knoppix es una distribución de GNU/Linux basada en Debian. Está desarrollada
por el consultor de GNU/Linux Klaus Knopper.
Klaus Knopper
Klaus Knopper nació en Alemania, en 1968. Es graduado en Ingeniería
Electrónica. Desde 1998, trabaja de forma independiente como Consultor en IT, además
entre sus múltiples actividades destaca como profesor, asesor, conferencista y realiza
personalizaciones para hardware. Su trabajo más reseñable y popular ha sido el Live-cd
Knoppix.
El comienzo (Demolinux)
El primer Live-CD Linux fue ‘Yggdrasil Linux’ en 1995, aunque no tubo mucho
éxito. Poco después nació DemoLinux 1.0, que se dio a conocer en Febrero del 2000 en
la "Linux Expo" que se celebró en París. Estaba basada en Mandrake 5.3 pero no así la
versión DemoLinux 2.0, que fue la Pre-release de la distribución Debian "Potato".
DemoLinux fué desarrollada por 3 estudiantes de la Universidad de Paris en Francia. Al
darse a conocer se apuntaron al proyecto varios desarrolladores americanos y
Demolinux consiguió un auge importante, publicando versiones en ingles, francés y
español.
Respecto a los requisitos técnicos, Demolinux necesitaba un AMD K6- 2 550
MHz y un mínimo de RAM de unos 32 MB para poder usar un entorno básico (twm),
64 MB para un entorno más elegante como KDE o GNOME y hasta 128 MB para el uso
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
9
de StarOffice de Sun y The Gimp. Este sistema usaba mucha memoria y la razón es
porque el sistema usa la RAM como disco duro al no instalarse en un sistema físico. Por
ello, en la actualidad Demolinux se considera como la distribución Linux-Live
predecesora de Knoppix.
Las siguientes generaciones
El Live-CD que más auge ha tenido aprovechando el boom de Demolinux fue
Knoppix rondando el año 2003, de origen Alemán y basada en Debian. Knoppix pasó a
ser el referente de los Live-CD y de hecho actualmente se hacen Live-CD de todo tipo y
gustos basados en Knoppix.
Knoppix es una distribución muy completa, contando con todo tipo de
programas tanto para Internet como para ofimática, gráficos y desarrollo, y usa un
entorno KDE. Dado el éxito de Knoppix, los usuarios de Gnome desarrollaron Gnoppix
a principios del año 2004, versión Knoppix con el entorno Gnome en lugar del KDE
utilizado por Knoppix. Knoppix, además, incorpora la novedad de poder instalarse en el
disco duro como sistema completo lo que la hizo imparable.
Debido a la cantidad de programas que se querían introducir en el Live-CD y el
espacio que esto conlleva, se desarrolló "Comprensión cloop", un sistema que permite
sobrepasar los 650-700 MB de CD usando la capacidad del kernel drive loop, por lo que
se logra introducir hasta 2 GB de datos.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
10
2.2 POSIBILIDADES
Las posibilidades que ofrece Knoppix son comparables a las de cualquier
sistema operativo pero añadiendo las ventajas Live-CD. Entre los diferentes usos que se
le pueden dar podemos destacar algunas más especiales y peculiares de las
distribuciones Live-CD:
• Enseñar y demostrar de manera sencilla el sistema GNU/Linux,
especialmente como sistema operativo, siendo una forma de atraer
usuarios que lo desconocen.
• Una de las principales ventajas de estas distribuciones es la portabilidad
de las mismas, ya que en un simple CD se tiene todo un sistema
operativo listo para funcionar sin necesidad de perder tiempo en
instalación.
• Probar rápidamente la compatibilidad de hardware bajo GNU/Linux
antes de comprarlo o usarlo, especialmente para tarjeta de vídeo. Así se
puede garantizar que el hardware de nuestro ordenador es adecuado para
una próxima instalación del sistema operativo.
• Como aplicabilidad estrella de Knoppix se puede reseñar el utilizar las
herramientas incluidas para restaurar un sistema corrupto o sus datos
perdidos. Un sistema puede no arrancar o fallar en un momento dado con
el sistema operativo y mediante el arranque desde la unidad de CD con
Knoppix se puede acceder a los discos duros del sistema y usando las
herramientas necesarias se pueden recuperar datos que se podrían dar por
perdidos.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
11
• A diferencia de otras distribuciones Live-CD, Knoppix posee la
posibilidad de instalación de la distribución en el disco duro de manera
fácil y guiada. Con esto el sistema de archivos, que anteriormente residía
en el CD con su consecuente retardo en operaciones de lectura, pasa al
disco duro abriendo un amplio abanico de posibilidades de instalación de
más paquetes y guardado de configuraciones y archivos.
2.3 LIVE-CD
Un Live-CD o Live-DVD, es un sistema operativo almacenado en un medio
extraíble, tradicionalmente un CD o un DVD, que es capaz de ejecutarse desde éste sin
necesidad de instalarlo en el disco duro de una máquina, para lo cual usa la memoria
RAM como disco duro virtual y el propio medio como sistema de ficheros. Esto supone
un inconveniente a la hora de guardar configuraciones propias o trabajos realizados
sobre archivos, también a la hora de utilizar nuevas aplicaciones no contenidas por la
imposibilidad de instalación en el Live-CD. Para ello se suele utilizar un Pen-Drive, que
por su portabilidad facilita el trabajo a la hora de guardar archivos y configuraciones.
Con esta solución se sigue manteniendo la principal característica de los Live-CD de no
requerir instalación alguna en el disco duro.
La mayoría de los Live-CD usan el kernel linux, pero hay muchos más basados
en otros sistemas. Aquí hacemos un repaso de las distribuciones Live-CD más populares
en la actualidad divididas por sistema en el que están basadas:
1. Basados en Apple Macintosh OS
� System Folder
� BootCD
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
12
2. Basados en BSD
� DragonFlyBSB
� FreeSBIE
� Frenzy
� NetBSD
� FuguIta
� BLACKBSD
� Jibbed
� TRUEBSD
� DesktopBSD
3. Basados en Linux
� Adrenalinux
� Anis GNU/Linux
� Aprende Click
� ArtistX
� Beatriz
� Catix
� CentOS Live-CD
� Damn Small Linux
� Debian-Live
� DNALinux
� Elive
� Famelix
� Flonix
� Gentoo
� Geubuntu
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
13
� GoblinX
� Gnix
� Gnoppix
� Guadalinex
� GnuLinEx
� GnuStep
� K-DEMar
� Jarro Negro
� Kaella
� Kanotix
� Knoppix
� Linspire Live
� Linuxinf
� LliureX
� LNX-BBC (Linux Bootable Business Card)
� Mandriva One
� kMAX
� MEPIS
� Molinux
� Morphix
� Musix
� NimbleX
� Ominiverdi Live
� PCLinuxOS
� ROCK Linux
� Sabayon Linux
� SLAX
� OpenSuSe
� SystemRescueCD
� Trisquen
� Tumix
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
14
� Tuquito
� Ubuntu
� ULAnix / ULAnux
� Utotu
� VENENUX
� Planktum
� Puppy Linux
� Uninortix
� Nurix
� ZENWALK
� SIDUX
4. Basados en Windows
� Hiren's boot CD.
� BartPE
� 911 Rescue CD
� Ultimate Boot CD for Windows (Windows XP)
� Avast Bart CD
� Minipe
� DIAMOND BOOT CD
� VistaPE
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
15
2.4 CARACTERÍSTICAS Y CONFIGURACIÓN ESTÁNDAR
En este apartado resumimos las principales características de la distribución
estándar de Knoppix (en nuestro caso la versión 5.1):
• Gnome o KDE como los escritorios estándares, con Konqueror como explorador
web.
• X Multimedia System xmms con MPEG video y soporte MP3, así como Vorbis
Ogg Vorbis Audio Player.
• Programas de acceso a Internet kppp y utilidades RDSI.
• GNU Image Manipulation Program GIMP
• Herramientas para rescate de datos y reparación del sistema.
• Análisis de red y herramientas de administración.
• OpenOffice.org, la versión GPL de la bien conocida suite ofimática StarOffice.
• Muchos lenguajes de programación, herramientas de desarrollo kdevelop, entre
otros, así como librerías para desarrolladores de programas.
• Aceleración 3D gracias a X.Org 7.0 Knoppix 5.0.1
Esta versión que nos ocupa viene con la siguiente relación de paquetes instalados: (ver
anexo A).
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
16
2.5 RE-MASTERIZACIÓN
Al proceso por el cual, a partir de una distribución básica, un usuario crea otra
nueva basada en la anterior con su propia configuración y aplicaciones se denomina re-
masterización. El Proyecto Fin de Carrera “Desarrollo de un entorno web para la
creación de distribuciones KNOPPIX a medida” tiene como objetivo principal la
consecución del proceso de re-masterización de una manera automática, sencilla y
guiada.
2.5.1 REQUERIMIENTOS MÍNIMOS
Para la consecución del proceso son necesarias las siguientes características
mínimas en el ordenador:
� 1 Gigabyte de memoria física (RAM) ���� En este caso también se
puede utilizar memoria SWAP (espacio de intercambio) que puede
sustituir a la memoria física con algún inconveniente de tiempo. Por
lo que el Gigabyte de memoria podría estar compuesto por 256 Mb
de RAM real + 750 Mb de espacio de intercambio Swap. Si lo que se
quiere es re-masterizar el DVD Knoppix se necesitarán 5 Gigabytes
de memoria mínima.
� 4 Gigabytes libres de espacio en disco ���� para copiar el sistema de
archivos descomprimido del Live-CD y trabajar añadiendo, borrando
o modificando los archivos necesarios. La partición en la que se
realiza esta gestión de ficheros requiere por su parte estar formateada
con un sistema de ficheros de Linux (ext2, ext3, xfs,…).
Por su parte el proceso con un DVD requiere 15 Gigabytes libres en
una partición de idénticas características a las anteriores citadas.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
17
En los siguientes apartados se desestima la opción DVD ya que no forman parte
de nuestra ocupación.
2.5.2 FASES DEL PROCESO
1.º Preparando la estructura base de ficheros
Primeramente será necesario tener configurada la conexión a Internet, en el caso
de usar DHCP estará configurado. Si se usa Wifi quizás se tengan más problemas, pero
nada más allá de una simple configuración de los parámetros de la máquina. Mediante
el comando ifconfig comprobaremos el estado. Esto es imprescindible puesto que para
la gestión de paquetes se necesita conectar con los servidores para la descarga de
paquetes que interese instalar y actualizar las dependencias de otros ya instalados.
Buscamos la partición en la que trabajará el proceso. Por ejemplo usaremos sda5
formateada en sistema de archivos ext2. Montaremos esta partición con permisos de
lectura y escritura para ello usaremos:
� mount –rw /dev/sda5 /media/sda5
Si se desea comprobar los privilegios de la partición se usa el comando:
� mount
Ahora es necesario crear el sistema de archivos para trabajar con la copia del de
Knoppix. Para ello se creará una carpeta dentro de la partición montada anteriormente y
unas subcarpetas master y source, que como su propio nombre indican albergarán la
copia personalizada y la fuente de archivos. Aquí se muestran los comandos necesarios:
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
18
� mkdir /media/sda5/knx
� mkdir /media/sda5/knx/master/KNOPPIX
� mkdir /media/sda5/knx/source/KNOPPIX
En caso de no tener el Gigabyte libre de memoria RAM necesario para la
consecución del proceso (comprobarlo mediante el comando egrep
"(MemTotal|SwapTotal)" /proc/meminfo && echo "(physical+swap)") se ejecutará el
siguiente comando para la creación de memoria de intercambio SWAP:
� cd /media/sda5/knx
� dd if=/dev/zero of=swapfile bs=1M count=750
� mkswap swapfile
� swapon swapfile
Ahora ya tenemos las carpetas creadas, es el momento de copiar el sistema de
archivos de la distribución a la carpeta source/KNOPPIX que es donde posteriormente
realizaremos los cambios deseados en la gestión de paquetes y configuración:
� cp -Rp /KNOPPIX/* /media/sda5/knx/source &
También es necesario copiar algunos archivos puntuales a la carpeta de master
como son el index.html y la carpeta “boot” que será necesaria para la creación de la
ISO:
� cp /cdrom/index.html /media/sda5/knx/master/
� cp –ar /cdrom/boot /media/sda5/knx/master/boot
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
19
Y por supuesto todos los archivos del cd necesarios a la carpeta /master:
� cd /cdrom;find . -size -10000k -type f -exec cp -p --parents {}
/media/sda5/knx/master/ \;
Con esto tenemos el entorno de trabajo preparado para poder continuar con el
proceso.
2.º Chroot
Antes de cambiar la raíz del sistema es necesario configurar el entorno, para
ello mediante lo siguiente:
� mount --bind /dev /media/sda5/knx/source/KNOPPIX/dev
� mount --bind /proc /media/sda5/knx/source/KNOPPIX/proc
� mount --bind /sys /media/sda5/knx/source/KNOPPIX/sys
Ahora ya está todo dispuesto para cambiar la raíz del sistema a la nueva copia de
Knoppix:
� chroot /media/sda5/knx/source/KNOPPIX
Con esto nuestra nueva raíz del sistema, es decir “/”, será a partir de ahora
“ /media/sda5/knx/source/KNOPPIX”. Así podemos cambiar todo lo deseado en la
nueva copia como si fuese el sistema de archivos legítimo.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
20
3.º Gestión de paquetes
Teniendo configurada la conexión a Internet correctamente, podemos empezar a
personalizar los paquetes que queremos que tenga nuestra distribución Live-CD.
Existen una serie de comandos que nos facilitan esta tarea, bien mostrando los paquetes
instalados en la distribución, los posibles a instalar o actualizando los ya instalados. La
base de toda esta gestión reside en la herramienta APT.
Advanced Packaging Tool, (APT), es un sistema de gestión de paquetes creado
por el proyecto Debian. APT simplifica en gran medida la instalación y eliminación de
programas en sistemas GNU/Linux.
No existe un programa ‘apt’ en sí mismo, sino que APT es una biblioteca de
funciones C++ que se emplea por varios programas de línea de comandos para distribuir
paquetes. En especial ‘apt-get’ y ‘apt-cache’.
Existen también programas que realizan dicha gestión mediante una interfaz
gráfica, como es el caso de ‘Synaptic’, que facilita en gran medida el trabajo a usuarios
reacios a utilizar consola. Existe un repositorio central con más de 21.000 paquetes APT
utilizados por ‘apt-get’ y programas derivados para descargar e instalar aplicaciones
directamente desde Internet, conocida como una de las mejores cualidades de Debian.
Los siguientes comandos son los empleados en la re-masterización, todos se han
de realizar con permisos de root en línea de comandos.
Primero antes de instalar o eliminar nada se recomienda realizar una
actualización de la lista de paquetes instalados en la distribución, puesto que los
paquetes GNU/Linux de Debian están siempre en continuo desarrollo e incorporando
mejoras. Para ello se ejecuta el siguiente comando:
� apt-get update
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
21
Ahora bien, antes de instalar nada se recomienda quitar paquetes de la
distribución (la distribución Knoppix estándar viene casi al completo del CD). Para
obtener una lista de los paquetes que trae Knoppix ejecutamos:
� dpkg-query –l
Como se puede observar en una primera ejecución la lista es bastante amplia. Si
se desea obtener la misma lista pero ordenando los paquetes por tamaño ascendente:
� dpkg-query –W –showformat=’${Installed-Size} ${Package}\n’ | sort –n
Para eliminar paquetes utilizaremos:
� apt-get remove --purge nombre-paquete-a-elimiar
Y para instalar paquetes usaremos:
� apt-get install nombre-paquete-a-elimiar
Cuando eliminamos paquetes puede ser que algún paquete o librería nos quede
en nuestro sistema sin ser dependencia de ningún otro paquete o sin tener función
alguna. A estos paquetes se les denomina ‘paquetes huérfanos’ y suelen ocupar espacio
con lo que sería interesante eliminarlos.
Para mostrar estos paquetes procedemos así:
� deborphan
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
22
Si existe alguno y lo queremos eliminar (lo más usual) ejecutamos el siguiente
comando:
� deborphan | xargs apt-get –y remove
A la hora de instalar puede ser de gran ayuda una lista con todos los posibles
(más de 13000 líneas). También se puede utilizar /<search-term> para búsquedas
específicas:
� apt-cache search .* | sort | less
Cuando se haya finalizado de eliminar e instalar paquetes una buena forma de
hacer una limpieza de datos residuales puede ser:
� COLUMNS=200 dpkg -l |grep ^rc |awk '{print $2} ' | xargs dpkg -P
También, como el sistema de paquetes Debian guarda en caché los paquetes
descargados se recomienda una limpieza del mismo ejecutando el siguiente comando:
� apt-get clean
Con esto se da por finalizada la fase de configuración de paquetes.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
23
4.º Configuración
En este apartado vamos a describir algunas de las muchas posibilidades que
tiene el proceso de re-masterización en lo que a personalización y configuración se
refiere. Antes recordamos que a la hora de modificar archivos de configuración es
necesario un alto conocimiento de programación y de estos archivos; cualquier
modificación puede tener consecuencias en el buen funcionamiento de la distribución
que estamos creando.
Para la personalización de la distribución tenemos varias opciones de entre las
que se han seleccionado tres para el desarrollo de nuestro proyecto que pasamos a
explicar:
� CAMBIO DEL FONDO DE ESCRITORIO: Podemos cambiar la imagen
que aparece en el escritorio de nuestra distribución de una manera sencilla.
Únicamente tenemos que copiar la imagen que elijamos en el directorio de
la copia nueva, y sustituirla por la imagen que se encuentra en:
� /media/sda5/knx/master/KNOPPIX/background.jpg
* Tenemos que tener en cuenta que dependiendo de la versión de Knoppix
que estemos empleando en el proceso de re-masterización será un archivo
diferente (versiones anteriores a la 3.4 usan ‘background.gif’).
� CAMBIO DEL GRÁFICO DE ARRANQUE: El gráfico de arranque es la
primera imagen que el usuario ve al arrancar la distribución. Un punto
importante a tener en cuenta es que esta imagen ha de ser de unas
características específicas:
o Ha de ser un gráfico de 640x400 píxeles.
o Ha de utilizar una gama de un máximo de 16 colores.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
24
Para llevar a cabo el cambio del gráfico de arranque es necesario realizar
los siguientes pasos:
Primero cambiamos el directorio donde vamos a realizar los cambios:
� cd /media/sda5/knx/master/boot/isolinux
Ahora creamos el gráfico que queramos con un editor de gráficos (GIMP
por ejemplo), y nos aseguramos que sea de las características
anteriormente citadas. Lo guardaremos como logo.16.gif.
Se puede emplear una imagen que en principio no sea de 16 colores pero
es crítico transformarla posteriormente mediante:
� gifttopnm < 640x400x16.gif > logo.ppm
� ppmtolss16 <logo.ppm> logo.16
� CAMBIO DEL GRÁFICO KSPLASH: Se puede cambiar los gráficos que
muestra el KDE al cargar (ksplash). Estos gráficos están en el directorio
/media/sda5/knx/source/KNOPPIX/usr/share/apps/ksplash/Themes/Default
. Lo más común es el cambio de ‘splash_top.png’ de 400x248. Se
cambiaría simplemente copiando la imagen en este directorio y
sustituyéndola por la ya mencionada ‘splash_top.png’.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
25
A parte de los cambios mencionados, se pueden realizar infinidad más
modificando archivos de configuración para que realice unas acciones u otras o
simplemente para que cargue unas cosas y no otras. Entre las muchas posibilidades
citamos las siguientes:
1.- Cambio de la configuración del KDE (Entorno de escritorio). Se puede
modificar casi cualquier aspecto de imagen, ya sean botones, barras,
ventanas…
2.- Cambio de los parámetros de inicio. Todos estos parámetros se generan
automáticamente mediante el script
/media/sda5/knx/source/KNOPPIX/etc/init.d/knoppix-autoconfig. Este archivo
se puede modificar a gusto del usuario.
3.- Cambio del sonido de inicio y fin de sesión.
4.- Cambio del mensaje de arranque (texto debajo del gráfico de arranque).
5.- Cambio del texto del script de inicio.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
26
5.º Creación de la imagen del CD
Antes de crear la imagen del CD será necesario realizar algunas operaciones de
limpieza:
� rm –rf /media/sda5/knx/source/KNOPPIX/ .rr_moved
Y también asegurarse de desmontar /sys, /proc, /dev:
� umount /dev
� umount /sys
� umount /proc
Teniendo esto podemos ejecutar el comando para crear el archivo de Knoppix
que es un sistema de ficheros basado en la norma ISO 9660 ‘cloop comprimido’:
� mkisofs -R -U -V "KNOPPIX.net filesystem" -publisher "KNOPPIX
www.knoppix.net" -hide-rr-moved -cache-inodes -no-bak -pad
/mnt/hda1/knx/source/KNOPPIX | nice -5 /usr/bin/create_compressed_fs –B 65536 -f
/mnt/hda1/isotemp - /mnt/hda1/knx/master/KNOPPIX/KNOPPIX
El estándar ISO 9660 es una norma publicada inicialmente en 1986 por la ISO,
que especifica el formato para el almacenaje de archivos en los soportes de tipo disco
compacto. El estándar ISO 9660 define un sistema de archivos para CD-ROM. Su
propósito es que tales medios sean legibles por diferentes sistemas operativos, de
diferentes proveedores y en diferentes plataformas, por ejemplo, MS-DOS, Microsoft
Windows, Mac OS y UNIX.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
27
Para actualizar la verificación de los md5 hash, necesarios para la integridad de
los archivos de la imagen es necesario:
� cd /mnt/hda1/knx/master
� find –type f –not –name md5sums –not –name boot.cat –not –name isolinux.bin \
-exec md5sum ‘{}’ \; > KNOPPIX/md5sums
Y ahora creamos el archive .iso de nuestra imagen de CD:
� mkisofs -pad -l -r -J -v -V "KNOPPIX" -no-emul-boot -boot-load-size 4 -boot-
info-table -b boot/isolinux/isolinux.bin –c boot/isolinux/boot.cat -hide-rr-moved -o
/mnt/hda1/knx/knoppix.iso /mnt/hda1/knx/master
Y así tenemos el archivo imagen ‘.iso’ listo para grabar a un CD.
Capítulo 3
DESARROLLO DEL PROYECTO
3
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
29
CAPÍTULO 3 – DESARROLLO DEL PROYECTO
3.1 PRÓLOGO
La cantidad de usuarios de Windows (generalmente Windows Xp) supera
enormemente en porcentaje a cualquier otro sistema operativo (Apartado 1.4), pero eso
no quiere decir que sea el mejor. Cada sistema operativo tiene sus ventajas y sus
inconvenientes. Uno de los factores que más influyen a la hora de elegir uno u otro es la
facilidad de uso; esto es debido al gran problema que tiene los usuarios para adaptarse a
nuevas tecnologías y en este apartado Windows le lleva bastante ventaja a GNU/Linux.
También muchos usuarios experimentados en Windows son conocedores de sus
numerosos problemas: se bloquea fácilmente (incluso cuando ejecuta operaciones
aparentemente simples), numerosas vulnerabilidades y escasa seguridad… La mayoría
de estos usuarios se conforman con lo que tienen por el desconocimiento de otras
alternativas, o por simple pereza. El proyecto fin de carrera “Desarrollo de un entorno
web para la creación de distribuciones KNOPPIX a Medida” persigue, de algún modo,
simplificar las cosas para estas personas. Su aplicación principal permite la creación de
distribuciones a medida de una manera sencilla y guiada. Estas distribuciones son
fácilmente ejecutables y no exigen compromiso alguno en el ordenador en el que se
ejecutan, puesto que no es necesario instalar nada en el disco duro ni tampoco se
modificará nada referente al sistema de archivos que se tenga ya instalado.
Con esto se persigue que los usuarios conozcan otras alternativas al clásico
Windows de toda la vida. Probar y valorar otras alternativas puede hacer que la decisión
final a la hora de elegir el sistema operativo que corra en un ordenador no se base en:
“No conozco ningún otro” ó “Es el que me venía instalado” y se elija uno con propiedad
y criterio dependiendo del uso que se le vaya a dar a esa máquina.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
30
3.2 ENTORNO DE DESARROLLO
El proyecto fin de carrera “Desarrollo de un entorno web para la creación de
distribuciones KNOPPIX a Medida” consiste en una aplicación para la re-masterización
de Knoppix dentro de un entorno web con lo que los recursos y herramientas utilizados
para su consecución serán los propios de una arquitectura web.
Un cliente (navegador) envía peticiones a través de Internet al servidor web, este
se comunica con su servidor de Bases de Datos, ejecuta código o realiza las operaciones
pertinentes y devuelve paginas html al cliente.
A parte de esta estructura web necesitamos ciertos recursos, de entre los que
cabe destacar un gestor de contenidos y lenguajes de programación de alto nivel
adecuados para la programación web. En el caso de la programación se ha elegido PHP
que junto con Javascript son los lenguajes que monopolizan la programación de
entornos web.
Hacemos ahora una breve descripción de los recursos mostrados anteriormente:
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
31
1. Servidor web: Un servidor web es un programa que implementa el
protocolo HTTP (Hypertext Transfer Protocol). Dicho protocolo tiene
como objetivo transferir hipertextos, páginas web o páginas HTML
(Hypertext Markup Languaje). Este programa se ejecuta continuamente
en un ordenador, esperando peticiones por parte de un cliente (navegador
de Internet) y respondiendo a dichas peticiones adecuadamente, mediante
páginas web que se mostrará en el navegador del cliente.
Entre los más destacables centramos el estudio en el servidor Apache por
ser software libre y muy popular, con lo que el soporte en Internet es
bastante amplio.
2. Sistema de gestión de Base de Datos: Es un tipo de software muy
específico, dedicado a servir de interfaz entre la base de datos, el usuario
y las aplicaciones que la utilizan. El principal cometido de estos sistemas
es el de manejar de manera clara, sencilla y ordenada conjuntos de datos
agrupados en tablas, tanto de manera directa (mediante sentencias SQL)
como embebida y automática en otras aplicaciones. En nuestro caso
elegimos la tecnología MySql por estar familiarizado con ella y por ser
software libre.
3. Sistema gestor de contenidos: Un Sistema gestor de contenidos
(Content Management System en inglés, abreviado CMS) es un
programa que permite crear una estructura de soporte para la creación y
administración de contenidos por parte de los participantes
principalmente en páginas web. Consiste en una interfaz que controla la
base de datos donde se aloja el contenido propiamente dicho del sitio.
Estos sistemas permiten aislar el contenido del diseño de la página web
con lo que se puede modificar el aspecto de la web sin tocar el contenido.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
32
3.2.1 JOOMLA GESTOR DE CONTENIDOS
3.2.1.1 Introducción
Joomla es un sistema de administración de contenidos de código abierto
construido con PHP bajo una licencia GPL. Este administrador de contenidos se usa
para publicar en Internet e intranets utilizando una base de datos MySQL. En Joomla se
incluyen características como: hacer caché de páginas para mejorar el rendimiento,
versiones imprimibles de páginas, flash con noticias, blogs, foros, encuestas,
calendarios, búsqueda en el sitio web, e internacionalización del lenguaje. Su nombre es
una pronunciación fonética para anglófonos de la palabra swahili jumla que significa
"todos juntos" o "como un todo". Se escogió como una reflexión del compromiso del
grupo de desarrolladores y la comunidad del proyecto.
La primera versión de fue publicada el 16 de septiembre de 2005. Se trataba de
una versión mejorada de Mambo 4.5.2.3 combinada con otras modificaciones de
seguridad y anti-bugs. Actualmente se ha publicado Joomla 1.5 Stable bajo un código
completamente reescrito y construido bajo PHP 5.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
33
3.2.1.2 Usuarios
Un sistema gestor de contenidos permite a los usuarios, dependiendo de los
privilegios otorgados, editar, modificar o eliminar contenidos. De esta forma existen
usuarios que sin ser administradores tienen la posibilidad de subir documentos e
interaccionar en mayor medida con el entorno web.
Existen cuatro tipos de usuarios en joomla dependiendo de los privilegios
otorgados, en la siguiente tabla se muestran las posibilidades de cada uno. Como
podemos observar el administrador posee todos los privilegios y el contribuyente
únicamente puede crear entradas nuevas sin siquiera poder publicarlas.
En nuestro desarrollo en un principio hemos tomado la decisión de que sólo los
usuarios registrados puedan descargarse distribuciones ya configuradas o crearse la suya
propia.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
34
3.2.1.3 Extensiones
Las extensiones en Joomla hacen referencia a módulos desarrollados en entornos
Joomla que permiten crear otro tipo de contenidos, no sólo artículos y posts. En nuestro
caso, la utilidad principal esta basada en formularios HTML programados con PHP, con
lo que hemos tenido que instalar extensiones acordes a nuestro trabajo que explicaremos
más adelante.
La instalación básica de Joomla contiene los siguientes componentes:
� Banners���� son los anuncios de portada en forma de imágenes.
� Contactos���� se trata de que cualquier persona pueda dirigirse a un
miembro de la administración por medio de correo electrónico.
� Correo masivo���� es la opción de enviar mensajes de correo a todos o a
parte de los usuarios, privilegio de los administradores del portal.
� Encuestas���� es el componente que permite realizar encuestas.
� Enlaces web���� se trata de enlaces a páginas web de interés.
� Noticias externas���� son enlaces a páginas web que permiten mostrar los
títulos y el contenido de sus artículos mediante la tecnología RSS
(sencillo formato de datos que es utilizado para redifundir contenidos a
suscriptores de un sitio web).
� Sindicación� aquí se organizan los llamados ‘feeds’ del portal, es decir,
los archivos que permiten a cualquier visitante publicar en otro gestor las
noticias de nuestro portal en forma de titular con la tecnología RSS.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
35
ChronoForms
A parte de estas la principal herramienta de trabajo empleada es la extensión
llamada ChronoForms que permite una creación, tratamiento y gestión de formularios
HTML dentro de un entorno web joomla. La apariencia de la pantalla principal es la
siguiente:
Aquí encontramos todos los formularios creados con opciones generales de cada
uno como copiar formulario, publicar o ‘despublicar’ en la web, borrar…
Cada formulario tiene infinidad de posibilidades de configuración de las cuales
describiremos las más relevantes en nuestro trabajo:
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
36
En la pestaña general se editan la configuración y datos principales del
formulario, entre todas las opciones describimos las principales y más empleadas en
nuestros formularios:
� Email the results: opción para enviar un correo electrónico tras ejecutar el
‘submit’ del formulario.
� Datos del email: en caso de enviar email, se necesitarán los campos del
mismo: dirección, asunto, CC, BCC.
� Form tag attachment: En nuestro caso utilizamos
“enctype='multipart/form-data'” que nos permite la subida de archivos al
servidor a través del formulario.
� Form method: POST o GET, dependiendo de la funcionalidad del
formulario, en nuestro caso POST puesto que requerimos de subida de
archivos.
� Debug: ChronoForms tiene la opción de debug de código en los formularios,
una utilidad muy importante y que facilita en gran medida la programación.
Mediante esta herramienta podemos conocer el estado de las variables
empleadas en nuestro código PHP ejecutado en el formulario y conocer
errores ahorrando los ineficientes print/echo.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
37
En esta pestaña se escribe el código asociado a cada formulario, como podemos
observar existen varios apartados. El principal es el del código HTML que puede ser de
dos formas:
� Estático: El código se escribe directamente en HTML nativo y se
genera siempre de igual manera, sin variaciones. Podemos llamarlo
formulario clásico. El ejemplo de código escrito en la figura anterior
es estático.
� Dinámico: El código HTML se genera dinámicamente a partir de
otro código. En nuestro caso, hemos tenido que generar tablas HTML
dinámicamente con paquetes dependiendo de parámetros obtenidos
en formularios anteriores por lo que el código PHP de estos
formularios sigue un flujo que imprime mediante echo código HTML
dependiendo de esos parámetros. Veremos el código empleado más
adelante.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
38
A parte de código HTML tiene la opción de incluir código Javascript, aunque en
nuestros formularios lo hemos evitado en la medida de lo posible. En alguno hemos
empleado alguna función Javascript para manejar eventos, pero nuestra decisión en
cuanto a programación se refiere ha sido PHP en la medida de lo posible.
Existen dos opciones para incluir código PHP que sólo serán empleadas en el
caso que se haya seleccionado la opción de envío posterior de email con los resultados,
pudiendo diferenciar entre código ejecutado previa y posteriormente al envío de dicho
email. En nuestro caso al no emplear en ningún formulario el envío de email, hemos
utilizado únicamente la opción de ejecución de código posterior, que viene a ser el
código PHP que se ejecuta cuando se presiona el botón de ‘submit’ del formulario.
También tiene la posibilidad de incluir Anti-Spam, con el objeto de evitar
saturación y peticiones masivas. En nuestro caso hemos desestimado la opción en todos
los formularios, ya que resultaría pesado para el usuario introducir en cada formulario
información extra no relevante para la creación de distribuciones; y estos formularios a
modo de pasos buscan fundamentalmente simplicidad para el usuario.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
39
Gestor de archivos
Otra extensión instalada a destacar es el gestor de archivos, mediante el cual,
como su propio nombre indica, se gestionan archivos en una página web. En la
siguiente imagen vemos el menú principal de la extensión:
Al principio se indican las rutas de las carpetas destinadas para la subida y
descarga de archivos. Ahora haremos una breve descripción de las opciones de
configuración y gestión más empleadas en el desarrollo del proyecto fin de carrera
“Desarrollo de un entorno web para la creación de distribuciones KNOPPIX a
Medida”.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
40
En primer lugar vemos las opciones de administración:
� Administrar secciones: con ello podemos diferenciar los archivos en
el servidor mediante la creación de secciones que pueden ser
comparables a carpetas en un sistema de archivos.
� Administrar archivos: para gestionar los archivos del servidor,
incluyendo cada uno en la sección que corresponda con las opciones
que se deseen. Se pueden añadir archivos en local.
� Configuración: permite modificar opciones de configuración, como
tamaños de archivos, rutas empleadas, número máximo de archivos
descargados por un usuario, permisos….
A parte de la administración el módulo contiene herramientas para la gestión y
mantenimiento de los archivos, así como de información y de estadísticas de la gestión.
Como ejemplo pueden revisarse los logs de descargas, los archivos más descargados….
No es una parte fundamental de nuestro trabajo con lo que evitamos describirlas ya que
a penas se han empleado.
En nuestro proyecto, el gestor de archivos nos sirve de gran utilidad, lo
utilizaremos para la descarga de las distribuciones personalizadas de cada usuario, para
descarga de distribuciones ‘preconfiguradas’ y para descargas de fondos de escritorio,
imágenes ksplash y gráficos de arranque que ayuden al usuario en la creación de su
distribución personalizada.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
41
3.2.2 APACHE SERVER
El servidor HTTP Apache
servidor HTTP de código abierto
multiplataforma, que implementa el
protocolo http. Otorga a la máquina en
la que se ejecuta la capacidad de
funcionar como un sitio virtual.
Apache presenta entre otras características mensajes de error altamente
configurables, bases de datos de autenticación y ejecución de lenguajes de alto nivel. La
arquitectura del servidor Apache es muy modular. El servidor consta de una sección
‘core’ y diversos módulos que aportan mucha de la funcionalidad que podría
considerarse básica para un servidor web.
En nuestra máquina fue instalada la versión Apache 2.2.4.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
42
3.2.3 PHP
PHP es un acrónimo que
significa Hypertext Pre-processor.
Publicado bajo la PHP License. La Free
Software Foundation considera esta
licencia como software libre. Es un
lenguaje de programación interpretado,
diseñado originalmente para la creación
de páginas web dinámicas. Al contrario
que Javascript, es usado principalmente
en interpretación del lado del servidor
(código ejecutado en la máquina
servidora y no en la máquina cliente).
PHP es un lenguaje de propósito general ampliamente usado y que está
diseñado especialmente para desarrollo web y, como se ha explicado en la sección
ChronoForms puede ser embebido dentro de código HTML para generar ese
dinamismo que lo describe. Se ejecuta en un servidor web, tomando el código en PHP
como su entrada y creando páginas web como salida. Puede ser desplegado en la
mayoría de los servidores web y en casi todos los sistemas operativos y plataformas sin
costo alguno.
La versión empleada en el desarrollo de este trabajo ha sido PHP 5.2.3.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
43
3.2.4 MySQL
Como ya se ha mencionado en
la introducción de este capítulo,
MySQL es el servidor de base de datos
empleado por el gestor de contenidos
Joomla. Es un sistema de gestión de
bases de datos relacionales, multihilo
(permite ejecución simultánea de tareas)
y multiusuario (permite proveer servicio
simultáneamente a varios usuarios).
La tecnología mencionada anteriormente no tiene mucho sentido por
separado, pero conjuntamente forman la herramienta de desarrollo web más empleada y
de las más potentes de la actualidad. En muchas ocasiones, generalmente en entornos
Microsoft Windows se encuentran aplicaciones preparadas para trabajar así en el
mercado, sea el ejemplo de XAMP que engloba Apache server, MySQL y PHP. Estas
herramientas son la base fundamental del entorno de desarrollo del proyecto fin de
carrera “Desarrollo de un entorno web para la creación de distribuciones KNOPPIX a
Medida”.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
44
3.3 ANÁLISIS DEL PROBLEMA
El principal problema con el que se encuentra un analista de sistemas es
interpretar las necesidades del cliente y ajustar el alcance del sistema a desarrollar
conforme a esas necesidades. Este paso es considerado el más importante y constituye
la base de cualquier proyecto de desarrollo de sistemas. Para este análisis se ha
empleado un diagrama conceptual con los objetos relacionados en el problema a tratar y
se ha desarrollado el modelo de los casos de uso que simulan las funcionalidades del
sistema.
3.3.1 DIAGRAMA CONCEPTUAL
USUARIO
SERVIDOR WEB
BB.DD.
SECCIÓN REMASTERIZACIÓN
� Accede a través � Introduce datos necesarios � Interacciona
SISTEMA DE ARCHIVOS
� Almacena configuración y ficheros necesarios
� Conecta
� Interacciona
NAVEGADOR WEB
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
45
3.3.2 MODELO DE CASOS DE USO
Mediante este modelo se pretenden identificar los actores que intervienen en
los procesos del sistema plasmando de una manera modular las acciones que realiza
dicho sistema respondiendo a los estímulos de los actores.
En nuestro modelo existe un único actor que representamos como el usuario.
Este usuario interacciona con el sistema de varias formas y eso es lo que se pretende
representar con los siguientes casos de uso.
Usuario
Login
Subir archivo
Lectura paquetes
Escritura paquetes
REMASTERIZACIÓN
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
46
3.3.2.1 DESCRIPCIÓN DE CASOS DE USO
En este apartado describimos los casos de uso representados en el apartado anterior:
� Login: El actor principal se autentica en el sistema, introduciendo nombre
de usuario y contraseña.
� Lectura de paquetes: El actor principal selecciona las opciones que desea y
el sistema muestra los paquetes correspondientes a esa selección.
� Escritura de paquetes: El actor principal selecciona los paquetes que desea
y estos son escritos en un archivo que será utilizado en el proceso posterior
de re-masterización.
Ahora pasaremos a describir el proceso de cada caso de uso con más detalle.
Nótese que en esta descripción detallada no se especifican todos los posibles escenarios
ya que podría llegar a ser repetitivo. Con el fin de que este documento sea plenamente
comprensible para el lector se ha expuesto el escenario principal en el que se
desarrollan estos casos de uso.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
47
Login
Caso de uso Login
Actor Primario Usuario
Trigger El usuario selecciona la opción identificarse.
Precondiciones
CURSO DE EVENTOS
Acción del actor Respuesta del sistema
1. El usuario introduce su nombre y
contraseña
2. El sistema comprueba que el usuario
existe y que la contraseña corresponde a
ese usuario.
3. El sistema muestra mensaje de
bienvenida
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
48
Subir archivo
Caso de uso Subir archivo
Actor Primario Usuario
Trigger El usuario selecciona la opción de re-masterización.
Precondiciones El usuario ha de estar autenticado
CURSO DE EVENTOS
Acción del actor Respuesta del sistema
1. El sistema muestra el formulario de
petición de archivo correspondiente
(Pasos 1,2 y 3). *
2. El usuario selecciona el archivo que
desea subir al servidor correspondiente a
la petición realizada por el sistema.
3. El sistema comprueba la extensión del
archivo y lo guarda en la carpeta y con el
nombre correspondientes.
4. El sistema actualiza el archivo del
script y muestra el siguiente formulario.
* Durante el proceso de re-masterización el sistema pedirá al usuario tres archivos
correspondientes al fondo de escritorio, imagen ksplash y gráfico de arranque.
Este caso de uso es representativo de los tres procesos debido a su gran similitud.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
49
Leer paquetes
Caso de uso Leer paquetes
Actor Primario Usuario
Trigger El usuario pulsó siguiente tras subir los archivos.
Precondiciones El usuario ha de estar autenticado
CURSO DE EVENTOS
Acción del actor Respuesta del sistema
1. El sistema muestra el formulario de
instalar paquetes. (Paso 4/5)
2. El usuario selecciona el archivo del
repositorio y la sección que desea
comprobar.
3. El sistema recoge los datos del usuario
y ejecuta una lectura del archivo
correspondiente.
4. El sistema muestra en una tabla los
paquetes correspondientes.
Paquetes: Se mostrará el nombre del paquete junto con su sección y su tamaño
tras la instalación.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
50
Escribir paquetes
Caso de uso Escribir paquetes
Actor Primario Usuario
Trigger
Precondiciones El usuario ha de estar autenticado
CURSO DE EVENTOS
Acción del actor Respuesta del sistema
1. El usuario selecciona los paquetes que
desea eliminar (o añadir dependiendo si
está en el paso 4 ó 5) **
2. El sistema recoge los paquetes y crea
un archivo para la desinstalación con los
paquetes seleccionados (o de instalación)
Paquetes: Se escribirá el nombre del paquete separados por un salto de línea
para facilitar su posterior lectura en el proceso de re-masterización.
** Los casos de uso lectura y escritura de paquetes se dan en los pasos 4 y
5 de la re-masterización. Cuando el usuario está eliminando paquetes se realiza
una lectura de los paquetes base de un archivo de texto; y cuando está instalando
se realiza una lectura del repositorio seleccionado.
En el caso de la escritura se realiza escritura de un archivo para los
paquetes a instalar y otro para los paquetes a desinstalar por lo que el caso de uso
es usado en ambos escenarios.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
51
3.4 IMPLEMENTACIÓN
3.4.1 INTRODUCCIÓN En este apartado se describe la implementación de la principal función del
entorno web. En la etapa de análisis anterior se ha expuesto el objetivo principal del
proyecto: re-masterización. Se ha dividido el proceso en módulos que se ordenarán
formando una secuencia de formularios web que irán aportando la información
necesaria al servidor. Paralelamente a la captura de esta información se construye un
archivo de ejecución en ‘shell’ (línea de comandos), que se auto-ejecutará en el
servidor posteriormente para crear la copia personalizada de cada usuario.
Este proceso no puede realizarse on-line, con el usuario en el otro lado de la
pantalla, puesto que partes de la ejecución del script de re-masterización pueden tardar
varios minutos. Un claro ejemplo de lentitud puede ser uno de los primeros pasos, en
donde se copia el sistema de archivos del Knoppix sobre el cual se harán las
modificaciones posteriores que ocupa alrededor de dos Gigabytes. También el proceso
de instalación de paquetes se realiza descargando uno por uno de Internet, lo cual
supone mucho tiempo de espera.
A la vista de los anteriores inconvenientes se ha decidido que el script se cree
mientras el usuario realiza la configuración personal y el script pueda ser ejecutado
mediante un gestor de ejecución de procesos automático.
3.4.2 PROCESO DE RE-MASTERIZACIÓN
En este apartado describimos la implementación del proceso de re-
masterización mediante formularios en el entorno web.
Ahora pasamos a describir las partes de código que representan la lógica del
proceso formulario a formulario:
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
52
Formulario 1
En este primer formulario se ofrece al usuario la posibilidad de modificar su
imagen de fondo de escritorio en la distribución que se quiere personalizar. El código
que genera este formulario es estático, es decir, siempre es el mismo, no se crea en
tiempo de ejecución:
Como puede observarse únicamente consta de un campo del tipo file para
subir el archivo al servidor, y un botón del tipo submit (Siguiente) para confirmar el
formulario. A continuación se muestra el código PHP que es ejecutado cuando se pulsa
el botón de siguiente:
<style> @import url(templates/form.css); </style> <p align="center"> <h1><strong><u>Paso 1 - Fondo de escritorio</u></strong></h1> </p> <p align="center">Cambiar fondo de escritorio: <input name="file" type="file" id="archivo"> </p> No quiero modificar la imagen de background<INPUT type="checkbox" name="check1"> <input name="boton" type="submit" id="boton" value="Siguiente">
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
53
En este primer paso se comprueba la extensión del archivo seleccionado para
subir al servidor por parte del usuario mediante la función getExtension(). También se
crea el script y se empieza a escribir con las primeras líneas. En los próximos pasos se
actualizará este archivo con nuevas líneas.
<? function getExtension($str) { $i = strrpos($str,"."); if (!$i) {
return ""; } $l = strlen($str) - $i; $ext = substr($str,$i+1,$l); return $ext; } $usuario =& JFactory::getUser(); $user = $usuario->name; $destino = '/var/www/carpeta_joomla/upload' ; $filename = stripslashes($_FILES['file']['name']); $extension = getExtension($filename); $extension = strtolower($extension); $nombre=$destino.'/'.$user; $fp=fopen($nombre, 'a'); fwrite($fp, "#! /bin/bash\r\n"); $linea='mkdir /media/sda5/knx'.$user; fwrite($fp, $linea); fwrite($fp,"\r\n"); $linea='mkdir -p /media/sda5/knx'.$user.'/master'; fwrite($fp, $linea); fwrite($fp,"\r\n"); $linea='mkdir -p /media/sda5/knx'.$user.'/source'; fwrite($fp, $linea); fwrite($fp,"\r\n"); $linea='cp -Rp /media/sda5/source /media/sda5/knx'.$user.'/'; fwrite($fp, $linea); fwrite($fp,"\r\n"); $linea='cp -Rp /media/sda5/master /media/sda5/knx'.$user.'/'; fwrite($fp, $linea); fwrite($fp,"\r\n"); fclose($fp);
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
54
En esta segunda parte del código se direcciona la secuencia a un formulario u
otro dependiendo del archivo subido. Si se ha seleccionado la opción de ‘No deseo
cambiar la imagen de background’ mediante el checkbox correspondiente el proceso
continuará al siguiente paso sin escribir la línea de cambiar la imagen en el script. Si
por el contrario se ha seleccionado una imagen, el proceso subirá la imagen a la
carpeta: /var/www/carpeta_joomla/upload/'.$user.'background.jpg donde $user es la
variable que almacena el nombre del usuario registrado que está realizando el proceso.
Esto se realiza con el fin de obtener una carpeta personal con la configuración de cada
usuario en tiempo de ejecución para así poder separar datos de un usuario u otro.
if(( $_POST[check1] == "on" )) {
header("Location:index.php?option=com_chronocontact&chronoformname=knoppixpersonalizado1"); } else {
if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif"))
{ header("Location:index.php?option=com_chronocontact&chronoformname=knoppi
xpersonalizado");
} else {
copy($_FILES['file']['tmp_name'], $destino.'/'.$user .$_FILES['file']['name']);
$fp=fopen($nombre, 'a'); $linea='cp /var/www/carpeta_joomla/upload/'.$user.'background.jpg
/media/sda5/knx'.$user.'/master/KNOPPIX/background.jpg'; fwrite($fp, $linea); fwrite($fp,"\r\n"); fclose($fp);
header("Location:index.php?option=com_chronocontact&chronoformname=knoppi
xpersonalizado1"); }
} ?>
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
55
Formulario 2
Este segundo formulario y el tercero son prácticamente iguales. En todos ellos
se le da la posibilidad al usuario de cambiar archivos para personalizar externamente la
distribución. En este apartado se trata de la imagen ksplash de la distribución, que es la
imagen que aparece cuando se inicia el kde (entorno de escritorio). El código html es
muy similar al anterior, se añade un nuevo botón de ‘Atrás’ que permite regresar al
paso anterior mediante una función Javascript que retrocede un paso en el historial de
visitas:
El código PHP que se ejecuta tras confirmar el formulario también es muy
similar al anterior, por lo que ahorraremos espacio introduciendo ahora únicamente los
cambios con respecto al anterior. También se emplea la función getExtension() para
comprobar la extensión del archivo subido. Los direccionamientos obviamente son
<style> @import url(templates/form.css); </style> <p align="center"> <h1><strong><u>Paso 2 - Imagen de arranque del KDE</u></strong></h1> </p> <p align="center">Cambiar ksplash (Grafico .png 400x248): <input name="file" type="file" id="archivo"> </p> No quiero modificar la imagen ksplash<INPUT type="checkbox" name="check1"> <input type=button value="Atrás" onClick="history.go(-1)"> <input name="boton" type="submit" id="boton" value="Siguiente">
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
56
diferentes al anterior, y la línea que nos interesa para el script (en caso de que se haya
seleccionado una imagen adecuada) se crea de la siguiente manera:
Formulario 3
Observamos la similitud entre los tres primeros formularios, ahora el usuario
puede subir al servidor una imagen para el gráfico de arranque de las proporciones
indicadas. El código es muy similar al empleado en los dos formularios anteriores con
lo que no lo especificamos a fin de no ser repetitivos. Cabe destacar la nueva línea que
se escribiría al actualizar el archivo script de nuevo:
copy($_FILES['file']['tmp_name'], $destino.'/'.$user .$_FILES['file']['name']); $nombre=$destino.'/'.$user; $fp=fopen($nombre, 'a'); $linea='cp /var/www/carpeta_joomla/upload/'.$user.'ksplash.png /media/sda5/knx'.$user.'/source/KNOPPIX/usr/share/apps/ksplash/Themes/Default/splash_top.png'; fwrite($fp, $linea); fwrite($fp,"\r\n"); fclose($fp); header("Location:index.php?option=com_chronocontact&chronoformname=knoppixpersonalizado2"
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
57
Como en el caso anterior, primero se copia la imagen en la carpeta de upload
del servidor y posteriormente se escribe una nueva línea en el script y se direcciona al
formulario correspondiente.
Formulario 4
Ya hemos llegado a la parte de la gestión de paquetes. El formulario anterior
muestra la parte correspondiente a la desinstalación de paquetes de la distribución base
del Knoppix. El usuario puede seleccionar paquetes a eliminar. Dichos paquetes están
organizados por orden alfabético donde cada letra contiene una referencia. En el
siguiente fragmento se muestra el código HTML que genera el formulario:
copy($_FILES['file']['tmp_name'], $destino.'/'.$user .$_FILES['file']['name']); $nombre=$destino.'/'.$user; $fp=fopen($nombre, 'a'); $linea='cp /var/www/carpeta_joomla/upload/'.$user.'logo.16.gif /media/sda5/knx'.$user.'/master/boot/isolinux/logo.16.gif'; fwrite($fp, $linea); fwrite($fp,"\r\n"); header("Location:index.php?option=com_chronocontact&chronoformname=desinstalapaquetes");
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
58
Podemos observar que al final del formulario se incluyen dos enlaces a otros
formularios: uno hace referencia al formulario de instalación de paquetes y el otro al
siguiente paso en el proceso (cuando se haya finalizado de instalar y desinstalar
paquetes). Para hacer el proceso más interactivo se da la posibilidad al usuario de
alternar entre instalación y desinstalación de paquetes, unificando así los dos procesos
en un único paso a vista del usuario.
También se puede observar que este formulario no tiene código PHP
asociado al botón de siguiente (‘submit’). Lo único que requeriría ser programado sería
el paso de la variable ‘letter’ de este formulario al siguiente, puesto que el formulario al
<style> @import url(templates/form.css); </style> <p align="center"> <h1><strong><u>Paso 4 - Eliminar/Instalar paquetes</u></strong></h1> </p> <p align="center"> Paquetes correspondientes a la distribución Knoppix 5.1 - Eliga los paquetes que desee eliminar </p> <a href="index.php?&letra=a&option=com_chronocontact&chronoformname=desinstalapaquetesA&letter=a">[ A ]</a> <a href="index.php?option=com_chronocontact&chronoformname=desinstalapaquetesA&letter=b">[ B ]</a> //…………………. <br> <br> <br> <input type=button value="Instalar Paquetes" onclick = "location='index.php?option=com_chronocontact&chronoformname=instalapaquetes1'" > <input type=button value="Crear ISO" onclick = "location='index.php?option=com_chronocontact&chronoformname=knoppixpersonalizado5'" >
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
59
que enlazan las letras del abecedario necesita saber la letra elegida para con ella sacar
los paquetes de un archivo paquetes.txt (contiene todos los paquetes de la distribución
Knoppix 5.1) ubicado en una carpeta del servidor. Este archivo ha sido generado
mediante el comando:
Con “>> paquetes.txt” conseguimos que el listado completo de paquetes
(salida del comando) se guarde en un archivo paquetes.txt.
Formulario 5
Este formulario se genera de forma dinámica, mediante código PHP embebido
en el HTML del formulario. Así el formulario es válido para cualquier letra
seleccionada. Este parámetro se envía de un formulario a otro mediante la URL, así se
direcciona al mismo formulario pero con la variable ‘letter’ especificada en cada
referencia:
index.php?option=com_chronocontact&chronoformname=desinstalapaquetes&letter=b
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
60
Ahora mostramos el código HTML que genera dinámicamente el formulario:
<? $usuario =& JFactory::getUser(); $user = $usuario->name; echo "<table id='tablapaquetes' border = '1'> \n"; echo "<tr>"; echo "<td bgcolor='#FF0000'><strong> </strong></td>"; echo "<td align='center' bgcolor='#FF0000'><strong>Paquete</strong></td>"; echo "<td align='center' bgcolor='#FF0000'><strong>Tamaño</strong></td>"; echo "<tr>"; $i=0; $tam=0; $letra=$_GET['letter']; $fichero='/var/www/carpeta_joomla/listas/paquetes.txt'; $archivo = fopen ($fichero, "r"); while (!feof ($archivo)) { while($linea = fgets($archivo)) { $temp1=substr ($linea, 0, 6); $size=trim($temp1); $num=(int)$size; $temp=substr ($linea, 6, 25); $pack=trim($temp); if($pack[0]==$letra[0]) { echo "<td> <input type='checkbox' name='chk[]' value='$i'></td>"; echo "<td <input type='text' name='paquetes[]' value='$pack'></td>"; echo "<td <input type='text' name='tamano[]' value='$size'></td>"; echo "</tr>"; $i++; } } } echo "</table>"; $nombre = '/var/www/carpeta_joomla/listas/actual'.$user.'.txt'; $fp=fopen($nombre, 'r'); while (!feof ($fp)) { while($linea = fgets($fp)) { $temp=substr ($linea, 0, 15); $tam=trim($temp); $size=(int)$tam; } } fclose($fp); $porcentaje=($size/2255166)*100; echo '<br>'; echo 'Tamaño aproximado de ocupación CD: '; echo $porcentaje; ?> <p align="center"><INPUT type="submit" name="boton1" value="Eliminar de la distribución"></p>
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
61
Como se puede observar el código entre los símbolos “<? ?>” es PHP
embebido en HTML. Mientras se lean líneas del fichero paquetes.txt generará una fila
de la tabla con su correspondiente tamaño asociado y un checkbox para su selección. El
siguiente código que se ejecuta al validar el formulario (‘Eliminar de la distribución’)
simplemente guarda en otro fichero de texto (unins$nombre_usuario.txt), los paquetes
seleccionados y realiza unos cálculos estimados del tamaño que conlleva la operación
sobre la distribución final.
<?php $usuario =& JFactory::getUser(); $user = $usuario->name; $array = $_POST['chk']; $array1 = $_POST['paquetes']; $array2 = $_POST['tamano']; for($a=0;$a<count($array);$a++) { $nombre = '/var/www/carpeta_joomla/listas/actual'.$user.'.txt'; $fp=fopen($nombre, 'r'); while (!feof ($fp)) { while($linea = fgets($fp)) { $temp=substr ($linea, 0, 15); $tam=trim($temp); $size=(int)$tam; } } fclose($fp); $num=$array[$a]; $size1=(int)$array2[$num]; $tama=$size-$size1; $fp=fopen($nombre, 'w+'); $linea=$tama; fwrite($fp, $linea); fclose($fp); $destino = '/var/www/carpeta_joomla/upload'; $nombre=$destino.'/unins'.$user; $fp=fopen($nombre, 'a'); $linea=$array1[$num]; fwrite($fp, $linea); fwrite($fp,"\r\n"); fclose($fp); } header("Location:index.php?option=com_chronocontact&chronoformname=desinstalapaquetes"); ?>
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
62
Al ejecutar el código puede observarse que nos enlaza de nuevo con el
formulario principal de desinstalación de paquetes para poder seleccionar otra letra de
nuevo. Tras eliminar todos los paquetes deseados se seleccionará “Instalar paquetes” o
“Continuar con el siguiente paso”.
Formulario 6
En este formulario se gestiona la instalación de paquetes en la distribución.
Este formulario tiene dos opciones de instalación definidas: una para buscar un paquete
por su nombre y otra para buscar según los repositorios de Ubuntu. Hemos utilizado los
repositorios de Ubuntu por ser la distribución, también basada en Debian (paquetes
válidos), que tenemos funcionando en la máquina servidora.
Ubuntu divide todo el software en cuatro secciones, llamadas componentes,
para mostrar diferencias en licencias y la prioridad con la que se atienden los problemas
que informen los usuarios. Estos componentes son: main, restricted, universe y
multiverse. Pasamos a describir brevemente sus diferencias:
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
63
� Main (SOPORTADO OFICIALMENTE): El componente main contiene
solamente los paquetes que cumplen los requisitos de la licencia de
Ubuntu, y para los que hay soporte disponible por parte de su equipo. Éste
está pensado para que incluya todo lo necesario para la mayoría de los
sistemas Linux de uso general. Los paquetes de este componente poseen
ayuda técnica garantizada y mejoras de seguridad oportunas.
� Restricted (COPYRIGHT RESTRINGIDO): El componente restricted
contiene el programa soportado por los desarrolladores de Ubuntu debido
a su importancia, pero que no está disponible bajo ningún tipo de licencia
libre para incluir en main. En este lugar se incluyen los paquetes tales
como los controladores propietarios de algunas tarjetas gráficas, como por
ejemplo, los de ATI y nVIDIA. El nivel de la ayuda es más limitado que
para main, puesto que los desarrolladores puede que no tengan acceso al
código fuente.
� Universe (MANTENIDO POR LA COMUNIDAD): El componente
universe contiene una amplia gama de programas, que puede o no tener
una licencia restringida, pero que no recibe apoyo por parte del equipo de
Ubuntu. Esto permite que los usuarios instalen toda clase de programas en
el sistema guardándolos en un lugar aparte de los paquetes soportados:
main y restricted.
� Multiverse (SOFTWARE NO LIBRE): Finalmente, se encuentra el
componente multiverse, que contiene los paquetes sin soporte debido a
que no cumplen los requisitos de Software Libre.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
64
A parte de elegir componente, al usuario se le pide también que elija entre las
diferentes secciones en las que se organizan los paquetes dentro de los componentes
mencionados. Estas secciones son las siguientes:
Admin Paquetes de administración (backup, herramientas de hardware,
métodos de autentificación, etc.).
Base Paquetes para una distribución básica.
Comm Paquetes de comunicaciones (faxes, accesos remotos, etc.).
Devel Desarrollo de programas (compiladores, ficheros de cabecera,
herramientas de programación, etc.).
Doc Documentación y revistas electrónicas.
Editors Editores de texto.
Electronics Programas de electrónica y diseño de circuitos.
Games Juegos y programas de aprendizaje.
Graphics Paquetes de gráficos (3D, scaners, conversores, etc.).
Hamradio Paquetes de comunicación por emisoras de radioaficionado.
Interpreters Lenguajes interpretados y sus extensiones.
Libs Bibliotecas de funciones.
Mail Gestores y clientes de correo, gestores de listas, etc.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
65
Math Programas de cálculos matemáticos.
Misc Variados (servidores SQL, agendas, calendarios, etc.).
Net Paquetes de red (gestión de redes, servidores FTP, DNS, SMB,
etc.).
News Servidores y clientes de noticias (NNTP).
Oldlibs Bibliotecas de funciones antiguas (para compatibilidad con
programas antiguos.
Otherosfs Utilidades para otros sistemas operativos (acceso a ficheros de
NT, grabación de CDs, etc.).
Science Programas para ciencias.
Shell Intérpretes de comandos (bash, csh, ksh).
Sound Programas de sonido.
Tex Procesamiento de documentos (LaTeX).
Text Paquetes de textos (diccionarios, traductores, etc.).
Utils Utilidades (monitores, compresores, etc.).
Web Servidores y navegadores Web, manejadores de contenido,
PHP, etc.
X11 Entorno gráfico X11R6.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
66
Dependiendo de la selección del usuario, el siguiente formulario le mostrará la
lista de paquetes correspondientes con su tamaño, descripción y un checkbox asociado
para su posterior selección.
A parte de esta cómoda selección, al usuario se le da también la oportunidad
de buscar un paquete sin conocer la sección a la que este corresponde, mediante el link
‘Buscar paquete por nombre’. Vemos el código HTML del formulario:
<p align="center"> <h1><strong><u>Paso 4 - Eliminar/Instalar paquetes</u></strong></h1> </p> <p align="center"> Seleccione el repositorio: <SELECT name="repositorio"> <option value="main">Main</option> <option value="restricted">Restricted</option> <option value="universe">Universe</option> <option value="multiverse">Multiverse</option> </SELECT> </p> <p align="center"> Seleccione la seccion: <SELECT name="seccion"> <option value="utils">Utils</option> ………….. <option value="shells">Shells</option> <option value="metapackages">Metapackages</option> <option value="base">Base</option> </SELECT> </p> <p align="center"><input name="boton" type="submit" id="boton" value="Mostrar paquetes"></p> <p align="center"><a href="index.php?option=com_chronocontact&chronoformname=buscapaquete">Buscar paquete por nombre</a></p> <p align="center"><a href="index.php?option=com_chronocontact&chronoformname=desinstalapaquetes"><h1><strong><u>Desinstalar paquetes</u></strong></h1></a></p> <p align="center"><a href="index.php?option=com_chronocontact&chronoformname=knoppixpersonalizado5">Cuando haya terminado de instalar/desinstalar paquetes pulse aquí</a></p>
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
67
Simplemente muestra los dos SELECT para la selección del repositorio y la
sección y los links descritos anteriormente.
La lógica del mismo es descrita en el código siguiente (PHP del submit):
El código es muy simple y básicamente recoge la opción del usuario y la envía
al siguiente formulario. En este caso se ha utilizado el concepto de *SESSION PHP
para el paso de variables de un formulario al siguiente.
* Básicamente una sesión es la secuencia de páginas que un usuario visita en
un sitio web. Desde que entra en nuestro sitio, hasta que lo abandona. El término
sesión en PHP, session en inglés, se aplica a esta secuencia de navegación, para ello
se crea un identificador único que se asigna a cada una de estas sesiones de
navegación. A este identificador de sesión se le denomina, comúnmente, como la
sesión.
Formulario 7
<?php session_start(); $archiv=$_POST['repositorio']; $secc=$_POST['seccion']; $_SESSION["archivo"] = $archiv; $_SESSION["sec"] = $secc; header("Location:index.php?option=com_chronocontact&chronoformname=instalapaquetes2"); ?>
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
68
En este formulario se realiza la búsqueda de paquetes correspondientes a la
selección del usuario, en lo que a repositorio y sección se refiere. A continuación
vemos el código HTML con PHP embebido que lo produce:
<? $usuario =& JFactory::getUser(); $user = $usuario->name; session_start(); $repositorio=$_SESSION["archivo"]; $sec=$_SESSION["sec"]; echo "<table id='tablapaquetes' border = '1'> \n"; echo "<tr>"; echo "<td bgcolor='#FF0000'><strong> </strong></td>"; echo "<td align='center' bgcolor='#FF0000'><strong>Paquete</strong></td>"; echo "<td align='center' bgcolor='#FF0000'><strong>Seccion</strong></td>"; echo "<td align='center' bgcolor='#FF0000'><strong>Tamaño de isntalacion</strong></td>"; echo "<td align='center' bgcolor='#FF0000'><strong>Descripcion</strong></td>"; echo "<tr>"; $i=0; $fichero='/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_gutsy_'.$repositorio.'_binary-i386_Packages'; $archivo = fopen ($fichero, "r"); while (!feof ($archivo)) { while($linea = fgets($archivo)) { if (($linea[0] == 'P') && ($linea[1] == 'a')&& ($linea[2] == 'c')) { $temp=substr ($linea, 9, 40); $pack=trim($temp); } if(($linea[0]=='S')&&($linea[1]=='e')&&($linea[2]=='c')) { if(($repositorio[0]=='m')&&($repositorio[1]=='a')) { $temp=substr ($linea, 9, 40); $seccion=trim($temp); }if(($repositorio[0]=='m')&&($repositorio[1]=='u')) { $temp=substr ($linea, 20, 40); $seccion=trim($temp); }if(($repositorio[0]=='u')&&($repositorio[1]=='n')) { $temp=substr ($linea, 18, 40); $seccion=trim($temp); }if(($repositorio[0]=='r')&&($repositorio[1]=='e')) { $temp=substr ($linea, 20, 40); $seccion=trim($temp); } }
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
69
if(($linea[0]=='I')&&($linea[1]=='n')&&($linea[2]=='s')) { $temp=substr ($linea, 16, 25); $tam=trim($temp); $size=(int)$tam; } if (($linea[0] == 'D') && ($linea[1] == 'e')&& ($linea[2] == 's')) { $temp=substr ($linea, 13, 150); $desc=trim($temp); if(($seccion[0]==$sec[0])&&($seccion[1]==$sec[1])&&($seccion[2]==$sec[2])&&($desc[0]!='')) { echo "<td> <input type='checkbox' name='chk[]' value='$i'></td>"; echo "<td <input type='text' name='paquetes[]' value='$pack'></td>"; echo "<td align='center' bgcolor='#CCCCCC'><strong>$seccion</strong></td>"; echo "<td <input type='text' name='tamano[]' value='$size'></td>"; echo "<td align='center' bgcolor='#CCCCCC'><strong>$desc</strong></td>"; echo "</tr>"; $i++; } } } } echo $i; echo "</table>"; $nombre = '/var/www/carpeta_joomla/listas/actual'.$user.'.txt'; $fp=fopen($nombre, 'r'); while (!feof ($fp)) { while($linea = fgets($fp)) { $temp=substr ($linea, 0, 15); $tam=trim($temp); $size=(int)$tam; } } fclose($fp); $porcentaje=($size/2255166)*100; echo '<br>'; echo 'Tamaño aproximado de ocupación CD: '; echo $porcentaje; ?> <p align="center"><INPUT type="submit" name="boton1" value="Añadir a la distribución"></p>
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
70
Como podemos observar, se toma el valor de las variables repositorio
($repositorio=$_SESSION["archivo"];) y sección ($sec=$_SESSION["sec"];) de la
sesión del usuario. Con la variable repositorio se busca en un fichero u otro (main,
restricted, universe, multiverse) y con la variable sec se eligen los paquetes de ese
archivo que correspondan con esa sección. Con estos datos se genera una tabla con una
fila por paquete mostrando su nombre, sección, tamaño de instalación y una breve
descripción del mismo. También mediante la variable i se realiza una cuenta de los
paquetes que se muestran para dar una idea al usuario del tamaño de la tabla, puede
haber tablas de hasta seiscientos paquetes.
Formulario 8
Formulario en el que simplemente se buscan paquetes por nombre dentro de
los cuatro repositorios mencionados anteriormente. Vemos el código HTML simple:
<style> @import url(templates/form.css); </style> <p align="center"> <h1><strong><u>Busqueda</u></strong></h1> </p> <INPUT type="text" name="paquete"> <input name="boton" type="submit" id="boton" value="Buscar">
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
71
Y ahora vemos el código PHP asociado:
Simplemente se coge el valor del ‘textbox’ asociado en el que se escribe el
nombre del paquete y se asocia dicho valor a la sesión del usuario.
Formulario 9
<? session_start(); $package=$_POST['paquete']; $_SESSION["paquete"] = $package; header("Location:index.php?option=com_chronocontact&chronoformname=buscapaquete2"); ?>
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
72
En este formulario simplemente se muestra un resumen de los paquetes
seleccionados por el usuario para instalar y desinstalar. Así el usuario puede repasar de
forma general como va a ser su nueva distribución y puede confirmar o volver atrás
para modificar sus listas.
Vemos el código HTML:
<p align="center"> <h1><strong><u>Paso 5 - Resumen de Paquetes</u></strong></h1> </p> <? $usuario =& JFactory::getUser(); $user = $usuario->name; $destino = '/var/www/carpeta_joomla/upload'; $nombre=$destino.'/unins'.$user; echo "<strong>PAQUETES A ELIMINAR</strong>"; echo "<br>"; $fp=fopen($nombre, 'r'); while (!feof ($fp)) { while($linea = fgets($fp)) { $temp=substr ($linea, 0, 20); $paquete=trim($temp); echo $paquete; echo "<br>"; } } fclose($fp); echo "<strong>PAQUETES A INSTALAR</strong>"; echo "<br>"; $nombre=$destino.'/ins'.$user; $fp=fopen($nombre, 'r'); while (!feof ($fp)) { while($linea = fgets($fp)) { $temp=substr ($linea, 0, 20); $paquete=trim($temp); echo $paquete; echo "<br>"; } } fclose($fp); ?> <input type=button value="Atrás" onClick="history.go(-1)"> <input name="boton" type="submit" id="boton" value="Confirmar">
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
73
Se leen los archivos ‘ins$user.txt’ (paquetes a instalar) y ‘unins$user.txt’
(paquetes a desinstalar) y se muestran por pantalla.
A la hora de confirmar el código PHP que se ejecuta deberá finalizar el script
de re-masterización correspondiente a ese usuario
<? $usuario =& JFactory::getUser(); $user = $usuario->name; $destino = '/var/www/carpeta_joomla/upload'; $nombre=$destino.'/'.$user; $fp=fopen($nombre, 'a'); $linea='mount --bind /dev /media/sda5/knx'.$user.'/source/KNOPPIX/dev'; fwrite($fp, $linea); fwrite($fp,"\n"); $linea='mount --bind /proc /media/sda5/knx'.$user.'/source/KNOPPIX/proc'; fwrite($fp, $linea); fwrite($fp,"\n"); $linea='mount --bind /sys /media/sda5/knx'.$user.'/source/KNOPPIX/sys'; fwrite($fp, $linea); fwrite($fp,"\n"); $destino = '/var/www/carpeta_joomla/upload'; $nombre=$destino.'/unins'.$user; $fich=fopen($nombre, 'r'); while (!feof ($fich)) { while($line = fgets($fich)) { $temp=substr ($line, 0, 20); $paquete=trim($temp); $linea='chroot /media/sda5/knx'.$user.'/source/KNOPPIX apt-get -y remove '.$paquete;
fwrite($fp, $linea); fwrite($fp,"\n");
} } fclose($fich); $linea); fwrite($fp,"\n");
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
74
$nombre=$destino.'/ins'.$user; $fich1=fopen($nombre, 'r'); while (!feof ($fich1)) { while($line = fgets($fich1)) { $temp=substr ($line, 0, 20); $paquete=trim($temp);
$linea='chroot /media/sda5/knx'.$user.'/source/KNOPPIX apt-get install '.$paquete; fwrite($fp, $linea); fwrite($fp,"\n");
} } fclose($fich1); $linea='chroot /media/sda5/knx'.$user.'/source/KNOPPIX deborphan | xargs apt-get -y remove'; fwrite($fp, $linea); fwrite($fp,"\n"); $linea='chroot /media/sda5/knx'.$user.'/source/KNOPPIX apt-get clean'; fwrite($fp, $linea); fwrite($fp,"\n"); $linea='umount /dev'; fwrite($fp, $linea); fwrite($fp,"\n"); $linea='umount /sys'; fwrite($fp, $linea); fwrite($fp,"\n"); $linea='umount /proc'; fwrite($fp, $linea); fwrite($fp,"\n"); $linea='rm -rf /media/sda5/knx'.$user.'/source/KNOPPIX/.rr_moved'; fwrite($fp, $linea); fwrite($fp,"\n");
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
75
Principalmente, en este último formulario del proceso de re-masterización, se
finaliza la creación del script personalizado que crea la distribución del usuario.
Primero se prepara el entorno para cambiar la raíz del sistema a la carpeta con el
sistema de archivos Knoppix. Seguidamente se realiza una lectura de los ficheros
‘ins$user.txt’ y ‘unins$user.txt’ donde residen los paquetes que el usuario ha
seleccionado para instalar y desinstalar respectivamente. Por cada paquete a
instalar/desinstalar se añadirá una nueva línea al script indicando la nueva raíz y la
operación a realizar (apt-get install, apt-get remove).
Finalmente se realiza una limpieza para eliminar dependencias innecesarias y
paquetes huérfanos residentes tras la instalación/desinstalación y se utilizan los
comandos ‘mkisofs’ para la creación del archivo .iso de la distribución.
$linea='mkisofs -R -U -V "KNOPPIX.net filesystem" -publisher "KNOPPIX www.knoppix.net" -hide-rr-moved -cache-inodes -pad /media/sda5/knx'.$user.'/source/KNOPPIX | nice -5 /usr/bin/create_compressed_fs - 65536 > /media/sda5/knx'.$user.'/master/KNOPPIX/KNOPPIX'; fwrite($fp, $linea); fwrite($fp,"\n"); $linea='cd /media/sda5/knx'.$user.'/master'; fwrite($fp, $linea); fwrite($fp,"\n"); $linea="find -type f -not -name md5sums -not -name boot.cat -not -name isolinux.bin -exec md5sum '{}' \; > KNOPPIX/md5sums"; fwrite($fp, $linea); fwrite($fp,"\n"); $linea='mkisofs -pad -l -r -J -v -V "KNOPPIX" -no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -hide-rr-moved -o /var/www/carpeta_joomla/downloads/knx'.$user.'.iso /media/sda5/knx'.$user.'/master'; fwrite($fp, $linea); fwrite($fp,"\n"); fclose($fp); header("Location:http://localhost/carpeta_joomla/index.php"); ?>
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
76
3.4.3 ENTORNO WEB
Mediante la herramienta de gestión de contenidos Joomla la creación y
gestión de un entorno web se hace de manera simple y no requiere de demasiada
experiencia por parte del usuario. En este apartado realizaremos un breve repaso a los
pasos de configuración y acciones más destacables en el desarrollo del proyecto
“Desarrollo de un entorno web para la creación de distribuciones KNOPPIX a
Medida”.
En la siguiente imagen vemos la configuración global del sitio. Cabe destacar
la configuración del servidor y la configuración de la base de datos:
Parámetros de la BB.DD. Parámetros del servidor
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
77
En la siguiente captura se muestra la gestión de menús del sitio web. Todos
poseen una configuración personalizada. Por ejemplo el menú Usuario se creó con la
opción de que sólo fuese visible para un usuario registrado previamente identificado
mediante el Login.
Únicamente desde este menú de usuario se da la opción privilegiada de crear
la distribución Knoppix personalizada o descargas de otras distribuciones ya
preconfiguradas.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
78
Como ejemplo a continuación se expone la captura de pantalla de la
configuración del menú de usuario:
Propiedad de publicado
Nivel de acceso Opciones del menú
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
79
Y la configuración de uno de los objetos del mismo:
Lo más destacable de esta configuración puede ser el nombre, el enlace al que
se accede al pulsar en la referencia del índice, el nivel de acceso de dicho enlace y la
opción de mostrar el enlace en la misma ventana o abrir otra nueva.
También se ha incluido en el entorno la opción de encuestas on-line, mediante
un módulo llamado Encuestas. La gestión de la configuración de una encuesta incluida
se puede ver en la siguiente captura:
Nombre Opciones
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
80
Se ven claramente las posibles opciones de entre las que puede elegir el
usuario y el nombre para identificar la encuesta.
También se ha realizado un noticiario en donde únicamente el administrador
del entorno web esta posibilitado para subir noticias. Estas se pueden ver en la sección
de Noticias en el menú principal por cualquier usuario, bien sea registrado o no, y a
modo de flash se mostrarán los titulares variando cada vez que se cambie de pantalla al
lado derecho de la portada del entorno (siempre visible en la parte superior de la
página). En la siguiente captura de pantalla se muestra el apartado de la administración
correspondiente a la gestión de artículos, usado en nuestro caso para noticiario:
Capítulo 4
PLANIFICACIÓN
4
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
82
CAPÍTULO 4 – PLANIFICACIÓN
4.1 INTRODUCCIÓN
En este epígrafe se va a hacer un estudio de la planificación llevada a cabo en
el proyecto “Desarrollo de un entorno web para la creación de distribuciones
KNOPPIX a medida”. Para ello se ha dividido el proyecto en fases de desarrollo y se ha
estimado la duración a priori de las mismas. Se ha empleado la técnica de diagrama
EDT (Estructura de División de Trabajo). En nuestro caso hemos amoldado las fases de
desarrollo de una aplicación informática al de un entorno web.
Una fase de análisis en donde se analiza el problema planteado y se estudian
las tecnologías más apropiadas para su consecución. De aquí surge la idea del modelo
de casos de uso que simplificará las principales funciones que se realizan en la re-
masterización automatizada mediante formularios.
Otra fase es la de gestión del proyecto que se realiza durante todo el ciclo de
vida del proyecto, se valora el estado del mismo y se toman medidas al respecto.
En la fase de implantación se desarrolla el proyecto, en nuestro caso se crea el
entorno web y se programan los módulos estipulados. Tras tener un primer prototipo de
desarrollo se realizan las pruebas necesarias a todos los niveles de su funcionalidad con
el fin de encontrar fallos y mejorar el rendimiento.
La fase de documentación tiene un ciclo de vida igual que el del proyecto. Es
importante documentar todas las acciones y estudios realizados según se desarrolla el
proyecto y no dejarlo para el final, puesto que esta documentación no sería de la misma
calidad.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
83
4.2 DIAGRAMA EDT
PFC – Desarrollo de un entorno web para la creación de
distribuciones Knoppix a medida
FASE DE ANÁLISIS ANA01
FASE DE GESTIÓN GES01
IMPLANTACIÓN IMP01
DOCUMENTACIÓN DOC01
ESTUDIO DE TECNOLOGÍAS
ANA01.1
MODELO CASOS DE USO ANA01.2
PROGRAMACIÓN IMP01.2
CREACIÓN ENTORNO WEB
IMP01.1
PRUEBAS IMP01.3
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
84
4.3 PLANIFICACIÓN
Como se puede observar en el diagrama, la etapa de estudio de las tecnologías
llevó mucho tiempo y se tuvo que modificar la planificación con respecto a la primera
realizada al comienzo del proyecto. Esto fue debido al desconocimiento casi total de las
herramientas y tecnologías a emplear en el desarrollo del proyecto.
También podemos apreciar una etapa en medio sin actividades debido en gran
parte a la época de exámenes y de entregas por lo que se decidió entregar el proyecto en
la convocatoria de septiembre.
Las etapas de gestión del proyecto y documentación están presentes en todo el
ciclo de desarrollo del proyecto. En algunos meses se empleo más tiempo que en otros
pero ha sido un trabajo continuo.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
85
4.4 VALORACIÓN ECONÓMICA
4.4.1 PERFILES DE TRABAJO
En este apartado se va a realizar una estimación de costes para el desarrollo
del proyecto “Desarrollo de un entorno web para la creación de distribuciones
KNOPPIX a medida”. Para ello es necesario estudiar los perfiles de recursos humanos
necesarios en este desarrollo.
Jefe de proyecto: Es el máximo responsable de la gestión y avance del
proyecto. Será el encargado de velar por que se cumplan los plazos
establecidos y los objetivos. Se propone un jefe de proyecto.
Analista: Es el encargado de realizar las tareas de análisis y diseño del
proyecto. Es el responsable de establecer un modelo que englobe las funciones
requeridas para la consecución de los objetivos. Se proponen dos analistas.
Programador: Es el responsable de implantar y codificar el modelo
propuesto por los analistas. También se encarga de las pruebas unitarias de los
módulos que componen la aplicación. Se proponen 3 programadores.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
86
4.4.2 COSTES
Debemos asignar el coste por horas de cada perfil que interviene en el
desarrollo del proyecto:
PERFIL COSTE
Jefe de proyecto 25€/h
Analista 20€/h
Programador 15€/h
A continuación mostramos que fases del proyecto realiza cada perfil de
trabajo. Se realiza también una estimación del esfuerzo medido en horas de trabajo:
Fase Asignación de perfil Horas Coste
GES01 Jefe de proyecto (100%) 100 2500€
ANA01 150 3225€
ANA01.1 Analistas (70%) Jefe de proyecto (30%) 100 2150€
ANA01.2 Analistas (70%) Jefe de proyecto (30%) 50 1075€
IMP01 250 3875€
IMP01.1 Programadores (90%) Analistas (10%) 100 1550€
IMP01.2 Programadores (90%) Analistas (10%) 100 1550€
IMP01.3 Programadores (90%) Analistas (10%) 50 775€
DOC01 Jefe de proyecto (100%) 50 1250€
TOTAL 10850€
Capítulo 5
CONCLUSIONES
5
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
88
CAPÍTULO 5 – CONCLUSIONES
5.1 CONCLUSIONES DEL PROYECTO
Durante el estudio realizado sobre el proceso de re-masterización de Knoppix
Live-CD se ha puesto de manifiesto la dificultad que tiene este tipo de procesos para ser
llevados a cabo por un usuario con poca experiencia en manejo de sistemas operativos
basados en GNU/Linux.
Este proceso no es recomendable para usuarios con poca experiencia en
GNU/Linux, principalmente porque la instalación de paquetes conlleva actualizaciones
y eliminación de paquete. Esto es, para cada paquete a instalar, el gestor APT descarga
todas las dependencias necesarias para el correcto funcionamiento, bien sean para
instalar o para actualizar existentes. Pero también, en muchos casos, conlleva
eliminación de paquetes instalados y que, en algunas situaciones, pueden ser de gran
importancia para la distribución. Por ejemplo al instalar el paquete ‘kolf’ (pequeña
aplicación de entretenimiento que simula un mini-golf) se eliminan unos cuantos
paquetes de entre los cuales se encuentra uno llamado ‘knoppix-services’ sin el cual la
distribución no arranca correctamente.
Debido a este hecho, es necesario saber que paquetes se pueden instalar sin
tener problemas con las dependencias que se crean. Este es uno de los grandes
inconvenientes de automatizar el proceso de re-masterización de Knoppix.
Otro problema que surge es que la ejecución del script creado para la re-
masterización necesita, en la mayoría de los casos, interacción con el usuario. En la
instalación de muchos paquetes se requiere actualizar librerías, o simplemente el
reinicio de servicios para que el sistema de archivos funcione correctamente. Esto no se
puede hacer simplemente ejecutando el comando con la opción de que asuma ‘yes’ en
todas las cuestiones que se planteen.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
89
A lo largo del desarrollo del proyecto “Desarrollo de un entorno web para la
creación de distribuciones KNOPPIX a medida” se han obtenido una serie de
conclusiones que describiremos a continuación:
1.- Un sistema operativo como GNU/Linux tiene sus ventajas y desventajas
como ya se ha comentado en la introducción de este proyecto. Una de las
desventajas más reseñables es la dificultad de manejo. El correcto
funcionamiento de estos sistemas carga mucha responsabilidad sobre el
usuario (esto puede ser visto por un usuario habitual de GNU/Linux como una
ventaja puesto que otorga más posibilidades que otros sistemas operativos
como Microsoft Windows). Aunque GNU/Linux ya tiene desarrollados
entornos gráficos de escritorio basados en ventanas (Gnomo, Kde, ...) el uso
de consola es básico y un usuario nuevo en este tipo de sistemas puede llegar
con facilidad a la desesperación por no estar acostumbrado al uso de línea de
comandos.
2.- Mediante el entorno web desarrollado el usuario obtendrá las siguientes
ventajas:
- Descarga de distribuciones Knoppix preconfiguradas para usos
específicos. Este tipo de descargas son las más recomendadas para
usuarios principiantes por su facilidad de adquisición y su
simplicidad de manejo mediante el entorno gráfico de escritorio Kde.
- Creación de distribuciones personalizadas de manera sencilla
evitando así el complicado proceso de re-masterización y, a su vez,
la necesidad de poseer una partición en el disco duro con formato
ext2/ext3 (requerimiento primordial para el proceso de re-
masterización). Este apartado es recomendable únicamente a
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
90
usuarios con un mínimo de experiencia en sistemas GNU/Linux, ya
que son necesarios ciertos conocimientos de gestión de paquetes para
una buena personalización.
- Un proceso de creación de distribuciones ameno, amigable y de
fácil navegación a través de formularios en donde el usuario, casi
únicamente con el uso del ratón, puede crearse una copia
personalizada en gran medida del Live-CD Knoppix.
- El usuario tendrá acceso a encuestas, noticias y artículos propios
de una página web. El ámbito de estos módulos del entorno será el
software libre y sus distribuciones.
Hoy en día la informática se ha introducido en muchísimos ámbitos de nuestra
vida. La automatización, control y gestión de procesos está presente en todo lo que nos
rodea. Dentro de esta era de la informática, los sistemas operativos basados en
GNU/Linux están adquiriendo mayor importancia y presencia, tanto en entornos a nivel
de usuario como a nivel empresarial. Esto ha sido en gran parte debido a su seguridad y
bajos costes. El desarrollo del proyecto “Desarrollo de un entorno web para la
creación de distribuciones KNOPPIX a medida” pretende fomentar el uso de estos
sistemas a nivel de usuario con poca experiencia.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
91
5.2 TRABAJOS FUTUROS
La gestión y administración de un entorno web debe ser realizada por una
persona (administrador) con el fin de poner al día apartados necesarios del entorno. Un
claro ejemplo puede ser la gestión de artículos y noticias. Es necesario mantener
actualizado estos apartados para mantener el atractivo del sitio. Además la gestión del
foro debe ser llevada a cabo también por un administrador.
Siguiendo las líneas de investigación del proyecto “Desarrollo de un entorno
web para la creación de distribuciones KNOPPIX a medida” se puede llegar a
desarrollar un entorno web mucho más completo en cuanto a funcionalidades.
Una de ellas podría ser la de automatizar aún más la creación de
distribuciones Knoppix personalizadas, incluyendo la posibilidad de modificar
configuraciones de usuario más complejas, como podrían ser retocar el archivo
/etc/X11/Xsession.d/45xsession o /etc/init.d/knoppix-autoconfig. Para estos casos es
necesario un amplio conocimiento del tema debido a su complejidad.
Otra posibilidad que se abre con el desarrollo de este proyecto es la
posibilidad de incluir la re-masterización automatizada de otras distribuciones Live-
CD. Al principio del proyecto se pensó que sería una muy buena idea añadir la
posibilidad de crear copias basadas en Ubuntu (otra de las distribuciones más populares
a nivel de usuario de GNU/Linux en nuestros días), pero debido a la falta de tiempo se
desestimó.
Capítulo 6
BIBLIOGRAFÍA
6
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
93
CAPÍTULO 6 – BIBLIOGRAFÍA
Durante el desarrollo de este proyecto se ha empleado el siguiente material,
clasificado en referencias bibliográficas y referencias online. La mayor parte de
consultas y dudas se han gestionado a través de referencias online, mediante manuales
y soporte en foros especializados.
1.- REFERENCIAS BIBLIOGRÁFICAS
[MAES] Metodología del Análisis Estructurado de Sistemas (Jesús Barranco de
Areba) UPCO 2006
[EDISII] Escritos y Documentación de Ingeniería del Software II (Juan Carlos
Esquivel) UPCO 2006
[EDGPI] Escritos y Documentación de Gestión de Proyectos Informáticos
(Manuel Muñoz García) UPCO 2006
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
94
2.- REFERENCIAS ONLINE
[1] http://www.knoppix.net/wiki/Knoppix_Remastering_Howto
Documentación básica sobre el proceso de re-masterización de la
distribución de Knoppix
[2] http://www.knoppix.net/forum/
Foro de soporte para dudas y consultas sobre cualquier tema relacionado con
la distribución Knoppix.
[3] http://www.joomlaspanish.org/
Página principal de Joomla en español.
[4] http://ayuda.joomlaspanish.org/ayuda-joomla/
Manual de instalación y manejo del gestor de contenidos empleado en
nuestro desarrollo.
[5] http://www.linuxespanol.com/
Foro para dudas relacionadas con entornos GNU/Linux en general.
[6] http://www.espaciolinux.com/foros.html
Otro foro relacionado con GNU/Linux para dudas generales.
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
95
[7] http://www.forosdelweb.com/
Ayuda y soporte para desarrolladores y programadores PHP.
[8] http://www.beezmo.com/FloobyDustDir/FDKnoppixRemasterDir.html
Guía del proceso re-masterizar Knoppix
[9] http://www.gilesorr.com/papers/knoppixRM.html
Otra guía del proceso re-masterizar Knoppix
[10] http://www.debian.org/distrib/packages.es.html
Guía de todos los paquetes disponibles para distribuciones basadas en
Debian, como es Knoppix.
[10] http://es.wikipedia.org/wiki/Portada
Enciclopedia on-line.
ANEXOS
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
97
ANEXO A – Paquetes de la distribución Knoppix 5.1.1
En este apartado listamos todos los paquetes instalados en la distribución
básica Knoppix 5.1.1, mostrando en la columna izquierda el tamaño y en la derecha el
nombre del paquete.
0 cdda2wav 0 mkisofs 4 cdrecord 8 g++ 12 laptop-detect 12 libssp0 16 fileutils 16 mount-ntfs-knoppix 16 nxtunnel-client 16 nxtunnel-server 20 build-essential 20 knoppix-remountrw 20 nxproxy 20 update 24 beryl 24 cpp 24 mktemp 24 modemlink-knoppix 26 bluetooth 28 aalib1 28 gcc 28 knoppix-workarounds 28 libxinerama1 28 lsb-base 28 xsession-knoppix 32 euro-support-console 32 java2-runtime-knoppix 32 ssh 32 unp 32 xorgconfig-knoppix 32 xsession-initscript-knoppix 36 infobash 36 libattr1 36 smbconf-pfeifle 36 xlibs 36 xpdf 40 aufs-cvs-utils 40 cloop-module-2.6.19 40 libhtml-tagset-perl 40 libident 40 libijs-0.35 40 libpaper-utils 40 mkdesktophdicons-knoppix 40 playvideodisk-knoppix 40 rebuildfstab-knoppix
40 startnessus-knoppix 40 usleep-knoppix 44 knoppix-image 44 libacl1 44 libogg0 44 libpango1.0-common 44 modemtool-knoppix 44 network-setup-knoppix 44 scanpartitions-knoppix 44 sudoers-knoppix 44 tftp 44 xlibmesa-gl 44 xorg 44 xserver-xorg-video-all 44 xzoom 48 0wn 48 btpin-knoppix 48 ddcxinfo-knoppix 48 dmsetup 48 k3b-defaults 48 kbdconfig 48 libgcc1 48 mouseconfig 49 kbackup-multibuf 52 checkmem 52 debian-archive-keyring 52 fdflush 52 knoppix-setrootpassword 52 mkbootdev 52 stress 56 automount-knoppix 56 gprsconnect-knoppix 56 knoppix-dma 56 knoppix-swm 56 libdm0 56 libnet0 56 libxau6 56 libxcomposite1 56 libxdamage1 56 libxres1 56 libxss1 56 networkconfig-knoppix 56 ngrep 56 nxsetup-knoppix 56 rdate 56 restartx-knoppix
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
98
56 xmms-volnorm 60 foomatic-bin 60 kdelock-knoppix 60 knoppix-ndiswrapper 60 libcap1 60 libgsf-1-common 60 libiw28 60 libpaper1 60 libsdl1.2debian 60 libxmuu1 60 libxrandr2 60 libxxf86misc1 60 mesa-utils 60 recover 60 symlinks 62 lockfile-progs 64 dd-rescue 64 dpkg-repack 64 fortunes-debian-hints 64 hexedit 64 kde-services-knoppix 64 libconfhelper-perl 64 libesd-alsa0 64 libsdl-net1.2 64 libusb-0.1-4 64 libxfixes3 64 libxv1 64 libxxf86vm1 64 ppp-scripts-knoppix 64 python-imaging-tk 64 s3switch 64 sun-java5-plugin 64 type-handling 64 xserver-xorg-video-dummy 66 icmpush 68 cpuburn 68 esound-common 68 giftrans 68 kdessh 68 libartsc0 68 libavc1394-0 68 libconfig-file-perl 68 libfontenc1 68 libxdmcp6 68 libxtst6 68 libxxf86dga1 68 rootshell-knoppix 68 tofrodos 68 ttf-f500 68 xserver-xorg-video-ark 68 xtv 72 acpi 72 artwiz-cursor 72 convertfs 72 cryptcat 72 etherwake 72 genliloconf
72 kdeservicemenus-knoppix 72 keyboard-tr-knoppix 72 libdrm2 72 liblockdev1 72 libportaudio0 72 libraw1394-8 72 libsasl2 72 mysql-client 72 thunderbird 72 wakeonlan 76 bsdiff 76 cupsconfig-knoppix 76 finger 76 knoppix-initscripts 76 libavahi-common-data 76 libpcd2 76 libsdl-ttf2.0-0 76 libtext-wrapi18n-perl 76 libvorbisfile3 76 libxi6 76 libxp6 76 menu-xdg 76 poster 76 sshstart-knoppix 76 startsyslog-knoppix 76 statserial 76 unzoo 76 xdelta 80 buffer 80 diffstat 80 fttools 80 giflib3g 80 hostname 80 libcomerr2 80 libdb1-compat 80 libevent1 80 libgdbm3 80 libnids1.20 80 libsdl-pango1 80 libsm6 80 libxtrap6 80 netcardconfig-knoppix 80 xserver-xorg-video-fbdev 80 xserver-xorg-video-imstt 80 xserver-xorg-video-vga 84 aalib-bin 84 apache2 84 apt-method-installed 84 drdsl 84 dvdbackup 84 kdebase 84 libdc1394-13 84 libgtk2.0-bin 84 liblockfile1 84 libopenobex1 84 libsysfs2 84 libuuid1
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
99
84 libweakref-perl 84 libwrap0 84 libxcursor1 84 libxrender1 84 mkdosswapfile-knoppix 84 python-minimal 84 radio 84 saveconfig-knoppix 84 soundcardconfig-knoppix 84 wlcardconfig-knoppix 84 xmms-cdread 88 base-passwd 88 bing 88 debsums 88 knoppix-bookmarks 88 libapm1 88 libavahi-qt3-1 88 libnewt-utf8-0 88 libnfsidmap2 88 libsigc++-2.0-0c2a 88 openoffice.org-emailmerge 88 powermgmt-base 88 umlrun-uml 88 update-inetd 88 xserver-xorg-input-kbd 88 xserver-xorg-video-cyrix 88 xserver-xorg-video-voodoo 92 atitvout 92 cramfsprogs 92 foremost 92 idswakeup 92 iputils-tracepath 92 irssi-plugin-icq 92 libao2 92 libbz2-1.0 92 libfs6 92 libpci2 92 libss2 92 libstartup-notification0 92 libtext-charwidth-perl 92 libxvmc1 92 logrotate 92 mbr 92 pgpgpg 92 ppmd 92 whiptail 92 xserver-xorg-input-evdev 92 xserver-xorg-video-newport 92 xserver-xorg-video-vesa 92 x-ttcidfont-conf 96 apt-file 96 autotrace 96 bonnie++ 96 e00compr 96 kde-menu-knoppix 96 knoppix-sounds 96 liblogfile-rotate-perl
96 liblualib50 96 libpoppler0c2-qt 96 libtext-iconv-perl 96 memtester 96 ssl-cert 96 xserver-xorg-video-tga 100 adtool 100 i810switch 100 libavahi-compat-libdnssd1 100 libdevmapper1.02 100 libieee1284-3 100 libsdl-image1.2 100 libzzip-0-12 100 mtr-tiny 100 php4-mysql 100 print-utils-pfeifle 100 urlview 100 wavemon 100 xserver-xorg-video-rendition 100 xserver-xorg-video-vmware 104 dds2tar 104 firefox 104 iftop 104 irda-tools 104 knoppix-udev-config 104 libatm1 104 libblkid1 104 libgpmg1 104 libxcompext1 104 libxext6 104 perl-suid 104 python-support 104 xserver-xorg-video-i740 108 firewall-knoppix 108 ftp 108 liba52-0.7.4 108 libavahi-common3 108 libbluetooth2 108 libdv-bin 108 libfam0 108 libgssapi2 108 liblocale-gettext-perl 108 liblua50 108 libxplc0.3.13 108 openoffice.org-kde-integration 108 vcdtools 108 vrms 112 dosfstools 112 gpart 112 gqcam 112 gtk2-engines-smooth 112 intltool-debian 112 libberylsettings0 112 libgdchart-gd2-noxpm 112 liblircclient0
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
100
112 libxpm4 112 mpack 112 procinfo 112 pump 112 traceroute 112 type1inst 116 aufs-cvs-modules-2.6.19 116 cdparanoia 116 file 116 gsfonts-x11 116 knoppix-menu 116 libavahi-compat-howl0 116 libcapi20-3 116 libmpcdec3 116 libpostproc0d 116 libvolume-id0 116 ndiswrapper-utils 116 openoffice.org-core04 116 pia 116 pptp-linux 116 xserver-xorg-input-mouse 116 xserver-xorg-video-s3 116 xserver-xorg-video-tseng 120 attr 120 fping 120 fuse-utils 120 gif2png 120 imlib-base 120 iputils-ping 120 libgnome-keyring0 120 libgsm1 120 libjcode-pm-perl 120 librpcsecgss3 120 parted-bf 120 wprint 120 xserver-xorg-video-i128 120 xserver-xorg-video-v4l 124 cdbackup 124 ftpd 124 libadns1 124 libklibc 124 libksieve0 124 libmad0 124 libmyspell3c2 124 libnet1 124 libpam-ncp 124 libxdelta2 124 ms-sys 124 netcat6 128 aespipe 128 at 128 httptunnel 128 ibod 128 ipcalc 128 kudzu-knoppix-vesa 128 libfuse2 128 libgtkspell0
128 liboggflac3 128 libxft2 128 mikmod 128 mpg321 128 mysql-common 128 speex 128 ttf-staypuft 128 vlan 128 xkbset 132 dupload 132 libavahi-client3 132 libid3tag0 132 libsexy2 132 libungif4g 132 openbsd-inetd 132 setserial 132 wipe 136 apt-show-versions 136 configure-xawtv 136 dvbtune 136 ijsgutenprint 136 iperf 136 kdeadmin-kfile-plugins 136 libice6 136 libsdl-gfx1.2-4 136 libxmu6 136 loadlin 136 lzop 136 readline-common 136 vnc-common 136 xserver-xorg-video-cirrus 136 xserver-xorg-video-neomagic 136 xserver-xorg-video-sisusb 140 debconf-utils 140 klogd 140 libhfsp0 140 lvm-common 140 pciutils-dev 140 user-euro-es 140 xserver-xorg-video-s3virge 140 xserver-xorg-video-tdfx 144 cddb 144 ed 144 fortune-mod 144 hping2 144 knoppix-terminalserver 144 xserver-xorg-input-synaptics 148 binfmt-support 148 bridge-utils 148 gpstrans 148 irda-common 148 isdntool-knoppix 148 kdenetwork-kfile-plugins 148 libexpat1 148 libslp1
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
101
148 linux-sound-base 148 netbase 148 portmap 148 prism54-nonfree 148 sgml-base 148 sniffit 148 squidclient 148 tftpd-hpa 148 tnef 148 udpcast 152 cups-pdf 152 libcapi20-dev 152 libgtop2-7 152 libktnef1 152 libplrpc-perl 152 netpipe-tcp 152 xserver-xorg-video-siliconmotion 156 knoppix-splash-utils 156 libbind9-0 156 libfribidi0 156 libisccc0 156 libnet-daemon-perl 156 makedev 156 pcmciautils 156 python-tk 156 sslwrap 156 ttmkfdir 160 bochsbios 160 ktimer 160 libedit2 160 sambastart-knoppix 160 scantv 164 autotools-dev 164 bsdutils 164 cupsys-bsd 164 libexif-gtk5 164 zlib1g 168 bluez-firmware 168 dmidecode 168 escputil 168 ethtool 168 libaa1 168 libart-2.0-2 168 libcdparanoia0 168 libtasn1-3 168 sysvinit-utils 172 gcc-3.3-base 172 hwsetup 172 ipx 172 kdepim-kfile-plugins 172 ksysguardd 172 lha 172 libpam0g 172 libsamplerate0 172 psfontmgr 176 fbi
176 libelfg0 176 libflac++5 176 libpth20 176 mime-support 176 networkstatus 176 scanmodem 177 user-profile-knoppix 180 airsnort 180 aspell-gl-minimos 180 doc-base 180 initrd-tools 180 libaudio2 180 libpopt0 180 mt-st 180 v4l-conf 180 xtightvncviewer 184 cabextract 184 libiso9660-4 184 libnetpbm10 184 libpam-runtime 184 libspeex1 184 libxkbfile1 184 sound-recorder 184 uml-utilities 188 anacron 188 bc 188 hfsutils 188 libaprutil1 188 libcupsimage2 188 libdvdread3 188 libneon25 188 pkg-config 188 sitar 192 libpcap0.7 192 libsdl-console 192 madwifi-tools 192 patch 192 telnetd-ssl 192 xserver-xorg-video-nv 196 e2fslibs 196 fdisk-udeb 196 libgpg-error0 196 libisccfg1 196 liblzo1 196 ltrace 196 p0f 196 ttf-summersby 196 xmms-modplug 196 xserver-xorg-video-apm 200 bind9-host 200 dash 200 dc 200 debianutils 200 fortunes-min 200 libatk1.0-0 200 libjpeg62
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
102
200 openoffice.org-onlineupdate 200 python-central 200 tpconfig 204 dvbstream 204 gimp-print 204 hunt 204 kcharselect 204 libdv4 204 liblwres9 204 libpcap0.8 204 po-debconf 204 wavtools 204 xserver-xorg-video-savage 208 freenx 208 isdnvboxclient 208 libjpeg-progs 208 loop-aes-modules-2.6.19 208 ntpdate 208 tcpd 208 vpnc 208 zip 212 bin86 212 debfoster 212 hostap-utils 212 imlib11 212 libglade2-0 212 libidl0 212 libselinux1 212 outguess 212 sendip 212 sysklogd 212 vgabios 212 xfonts-dosemu 212 xserver-xorg-video-chips 216 ash-knoppix-26 216 kfloppy 216 libntfs9-knoppix 216 libvorbis0a 216 thttpd 220 gcc-4.1-base 220 igalician-minimos 220 mawk 220 openoffice.org-javafilter 220 pppstatus 224 dict 224 ipchains 224 libft-perl 224 libkpimidentities1 224 libvcdinfo0 224 wvdial 224 xml-core 228 debootstrap 228 gzip 228 ipsec-tools 228 libaudiofile0 228 libopencdk8
228 libzvbi-common 228 netcat 228 telnet-ssl 228 xserver-xorg-video-trident 230 dante-client 232 eject 232 libapt-pkg-perl 232 shaper 232 xserver-xorg-video-mga 236 deborphan 236 hfsplus 236 libcaca0 236 libltdl3 236 libsasl2-2 236 ttf-isabella 237 efax 240 afio 240 gnuchess 240 hdparm 240 kexec-tools 240 ksync 240 libapr1 240 libsensors3 240 xviddetect 241 libcdk5 244 ifupdown 244 libdbus-qt-1-1c2 244 libemeraldengine0 244 libgsf-1-114 244 libhtml-parser-perl 244 libreadline4 244 odbcinst1debian1 244 openoffice.org-gnome-integration 248 libjack0.100.0-0 248 sane 248 sndconfig-knoppix 248 strace 252 alevt 252 dvgrab 252 libdbus-glib-1-2 252 nxssh 252 usbutils 252 xpdf-common 256 kamera 256 libksba8 256 lrzsz 256 wireless-tools 260 cloop-utils 260 libcdio6 260 librsvg2-2 260 txt2regex 264 capiutils 264 fontconfig 264 libautotrace3 264 libnessus2 264 libnspr4
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
103
264 libpisock9 264 sane-utils 264 sysv-rc 268 apmd 268 cowsay 268 less 268 libgutenprintui2-1 268 libmodplug0c2 268 libmusicbrainz4c2a 268 libsmpeg0 268 stunnel 268 tshark 268 xutils 272 aumix-gtk 272 libntfs9 272 mknbi 272 partimage-server 272 sysvinit 272 whois 276 freeglut3 276 gconf2 276 isapnptools 276 knoppix-certificates 276 konsolekalendar 276 libglib1.2 276 libwnck18 276 xosview 284 cupsys-client 284 xmms-goom 288 amanda-client 288 libmimelib1c2a 288 sharutils 288 twm 288 unzip 288 xloadimage 289 beryl-manager 292 gpgv 292 mailx 293 gtk-smooth-themes 296 cron 296 libbeecrypt6 296 libcurl3-gnutls 296 libtheora0 300 aspell-es 300 dvb-mpegtools 300 liblcms1 300 ncurses-base 300 procmail 304 fakeroot 304 libcurl3 304 ndiswrapper-modules-2.6.19 308 clamav 308 libidn11 308 module-init-tools 312 kfax 312 ksnapshot 312 libreadline5
312 playmidi 312 pppoe 316 libcroco3 316 libdbd-mysql-perl 316 libflac7 316 libjasper-1.701-1 316 libmikmod2 316 libtag1c2a 316 macutils 316 pppoeconf 320 html2text 324 fbset 324 libncp 324 libnspr4-0d 328 info 328 ktip 328 openoffice.org-xsltfilter 332 alsa-base 332 java-common 332 libldap2 332 libsdl-mixer1.2 332 pmount 332 psutils 332 speedtouch 332 zile 336 fontconfig-config 336 libkmime2 336 liburi-perl 340 dh-make 340 foomatic-filters 340 libfontconfig1 340 mount 340 nfs-kernel-server 340 xserver-xorg-video-glint 340 xserver-xorg-video-nsc 344 libpcre3 344 vimpart 344 xbattle 348 libcupsys2 348 libhal1 348 libhal-storage1 348 uudeview 352 base-files 352 cpio 352 ldap-utils 352 libpng12-0 352 nxdesktop 356 dvdauthor 356 gscanbus 356 libt1-5 360 aspell-ca 360 ksudoku 360 libsepol1 360 lsof 368 ext2resize 368 kpager 368 libxt6
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
104
368 loop-aes-utils 372 distcc 372 dnsutils 372 initramfs-tools 372 libgpgme11 372 xfonts-bolkhov-cp1251-misc 376 dcraw 376 initscripts 380 arpwatch 380 dsniff 380 hwtools 380 kmailcvt 380 libglibmm-2.4-1c2a 384 libisc11 384 libkscan1 384 myspell-gl-es 384 nfs-common 388 clamav-base 388 kteatime 388 libsasl2-modules 392 ding 392 dvd+rw-tools 392 ucf 396 sudo 400 gs-common 400 xfonts-utils 404 konqueror-nsplugins 408 ispanish 408 mplayer-skin-blue 408 xawtv-plugins 412 ispell 412 libxaw7 416 ksmserver 416 libgcrypt11 416 xserver-xorg-video-i810 420 libsqlite3-0 420 libttf2 420 reportbug 420 xserver-xorg-video-via 424 icedax 424 ipppd 424 libjpeg62-dev 428 klibc-utils 428 ktnef 433 knoppix-installer 436 bzip2 436 libdate-manip-perl 436 libdbus-1-3 436 libxslt1.1 437 xaw3dg 440 gksu 440 rdesktop 440 syslinux 444 kandy 444 pppdcapiplugin 444 units 444 xskat
448 gsm-utils 448 libkcddb1 448 libparted1.6-0 449 kbackup 452 libconsole 452 libparted1.7-1 452 rt2x00-cvs-modules-2.6.19 456 console-common 456 libgksu2-0 456 libtiff-tools 456 psmisc 456 recode 457 kdemultimedia-kfile-plugins 460 libhtml-tree-perl 460 libuniconf4.2 460 ncurses-bin 460 ttf-opensymbol 464 alien 464 libsndfile1 468 busybox 468 libexif12 468 xbitmaps 472 autofs 472 libenchant1c2a 472 m4 476 dctrl-tools 476 libxfont1 484 apt-utils 484 arj 484 isdnutils-base 484 libclamav1 484 mtools 488 giflib-bin 488 openoffice.org-core10 488 php4-common 488 vim-gui-common 496 gv 496 kdeaddons-kfile-plugins 496 libgl1-mesa-glx 500 libsdl1.2debian-alsa 500 rsync 508 openoffice.org-graphicfilter 512 defoma 512 libgphoto2-port0 516 apache2-utils 520 gq 520 libscrollkeeper0 520 qobex 525 kdemultimedia-kio-plugins 528 ettercap-gtk 532 libmng1 536 libgconf2-4 537 kiconedit 540 ca-certificates 540 kdepasswd
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
105
540 libwmf0.2-7 540 qps 544 libncurses5 544 smartmontools 548 gaim-encryption 548 openssh-server 549 libpq4 552 hostapd 556 dvbackup 556 smbconf-pfeifle-nonfree 560 ace-of-penguins 560 kcalc 560 slang1 564 ksokoban 564 openhackware 564 slang1a-utf8 568 liborbit2 568 vim-common 572 libldap-2.3-0 572 libpam-modules 572 vorbis-tools 576 nessus 576 rxvt-beta 576 wordtrans-data 580 zlib1g-dev 584 libncursesw5 584 libzvbi0 588 libglu1-mesa 588 procps 588 tsocks 592 libgsmme1c2a 596 dhcp3-common 596 libavformat0d 600 lisa 604 bsdmainutils 604 freemind 604 rcs 608 python 608 tcpdump 609 emerald 612 dmraid 612 ffmpeg 612 kghostview 612 libmagick++9c2a 616 bittorrent 616 icatalan 616 libgd2-xpm 616 libwvstreams4.2-base 616 nessusd 620 expect 620 kpf 620 libcairo2 620 sed 620 xfonts-scalable 624 ipw2200-nonfree 628 libfreetype6 632 libcucul0
632 libnasl2 636 knoppix-graphics 636 ksysv 636 star 636 usbview 640 wpasupplicant 640 xserver-xorg-video-sis 644 grep 648 mdadm 648 xawtv 652 libsvga1 656 apache2-mpm-prefork 656 net-tools 660 sendfile 664 gocr 664 pciutils 668 ipw2100-nonfree 668 libgnutls13 672 dump 672 sox 676 iceweasel-l10n-es-es 676 xfsdump 684 dpkg-dev 684 gpm 684 libgmp3c2 688 i2e 688 kfind 700 chkrootkit 700 dbus 700 sash 704 scli 708 grub-disk 708 hpijs 708 qtparted 712 frozen-bubble 712 gpgsm 712 madwifi-modules-2.6.19 712 xsane 716 cdbs 716 x11-common 724 katomic 725 klaptopdaemon 728 gtans 732 iceweasel-l10n-eu 732 iptraf 732 ttf-bitstream-vera 736 icedove-locale-es-es 744 bind9 744 diff 744 grub 744 libsane-extras 745 dictionaries-common 748 bluez-utils 748 xchat 752 cryptsetup 752 iproute 752 modutils
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
106
752 myspell-en-us 753 myspell-es 756 wordtrans-kde 760 xdm 772 libkonq4 776 pnm2ppa 776 wordtrans-qt 780 kdf 780 xgalaga 784 iceweasel-l10n-ca 788 libnewt0.52 788 unixodbc 789 ntfsprogs-knoppix 796 ark 796 kpersonalizer 800 kuickshow 800 kuser 800 libquicktime0 808 dhcp3-server 812 libstdc++5 812 mobilemesh 816 etcskel-knoppix 820 foomatic-db-engine 824 dialog 824 kbattleship 828 manpages 836 knotes 840 libpango1.0-0 844 lvm2 849 wspanish 852 gtk2-engines 852 gtkam 852 lde 856 atmel-firmware 860 proll 872 libdb4.2 876 kreversi 878 kdegraphics-kfile-plugins 880 transfig 880 xfonts-encodings 880 xserver-xorg-video-ati 881 libopenexr2c2a 884 libwvstreams4.2-extras 891 beryl-settings 892 console-tools 892 libstdc++6 892 screen 896 imaze 896 openvpn 900 adduser 900 pcmcia-cs 904 pppconfig 904 wodim 912 libxcomp1 924 libdb4.3 928 gphoto2 928 unifont
932 debconf-i18n 932 smbfs 936 biew 936 klipper 940 libgtk1.2-common 944 libgeoip1 944 nvtv 944 partimage 944 udev 948 dvbsnoop 948 vcdimager 956 hwdata-knoppix 972 krdc 972 libkdegames1 976 fdutils 976 gettext-base 980 xterm 984 libwnck-common 988 icedove-locale-eu 988 libkrb53 988 libwww-perl 992 kmenuedit 994 kwlan 996 util-linux 1008 libgtop2-common 1008 lilo 1008 nxlibs 1012 ppp 1016 libdb4.4 1024 hicolor-icon-theme 1024 icedove-locale-ca 1029 khexedit 1032 amanda-server 1033 kmix 1037 beryl-core 1040 libslang2 1043 winetools 1048 libvorbisenc2 1048 openoffice.org-testtool 1056 libvte-common 1064 aspell 1064 jfsutils 1064 reiserfsprogs 1069 libpstoedit0c2a 1084 libglib2.0-0 1089 kview 1101 kooka 1112 minicom 1120 euro-support 1124 cdrdao 1128 xdialog 1132 libx11-6 1136 devscripts 1136 ettercap-common 1144 joe 1144 python-imaging 1156 libasound2
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
107
1164 xfonts-bolkhov-cp1251-75dpi 1168 libperl5.8 1184 kget 1188 libpoppler0c2 1217 ntfs-3g 1224 kphone 1248 debhelper 1260 xserver-xorg 1268 findutils 1272 librecode0 1276 cupsys-driver-gutenprint 1292 gcc-4.1 1292 ttf-openoffice 1304 dvb-utils 1320 ktuberling 1324 ksplash 1324 libstdc++2.10-glibc2.2 1331 scrollkeeper 1332 iptables 1346 beryl-plugins 1354 sgml-data 1360 libdns21 1368 libkleopatra1 1372 kappfinder 1388 kpackage 1388 lftp 1396 hal 1404 tightvncserver 1408 vim 1424 libvte4 1424 libxml2 1436 genisoimage 1460 lesstif2 1488 debconf 1492 manpages-es-extra 1493 fb-music-low 1496 gnome-keyring 1508 kdm 1520 openssh-client 1532 wireshark 1536 sweep 1544 libnss3-0d 1560 ksysguard 1572 make 1584 ipv6calc 1592 gparted 1592 squid 1604 xfonts-terminus 1616 nano 1620 e2fsprogs 1624 libmagic1 1636 smail 1644 krfb 1652 icewm 1652 xutils-dev 1660 man-db
1660 vim-gtk 1676 autoconf 1676 libtiff4 1712 openoffice.org-debian-menus 1716 kdesktop 1720 libdbi-perl 1724 menu 1728 kmahjongg 1732 libgtk1.2 1736 nedit 1740 fetchmail 1740 libgstreamer0.10-0 1776 testdisk 1792 libsdl-perl 1800 libdirectfb-0.9-25 1832 bb 1832 libgimp2.0 1848 bash 1848 libkdepim1a 1888 kalarm 1892 xpdf-reader 1908 dselect 1916 libsmbclient 1926 kpdf 1928 tar 1940 alsa-utils 1948 wget 1964 gawk 2016 libx11-data 2016 openoffice.org-core08 2024 perl-base 2052 librpm4 2065 kviewshell 2080 gnupg2 2088 openoffice.org-core03 2128 libgutenprint2 2132 passwd 2192 konsole 2192 myspell-ca 2216 kate 2216 libglib2.0-data 2216 ncpfs 2280 xaos 2296 openssl 2308 login 2340 fluxbox 2348 enscript 2348 gpsdrive 2364 dietlibc-dev 2384 libplot2c2 2392 kdeprint 2396 groff-base 2436 kismet 2440 libaspell15 2456 nmap 2456 python2.4-minimal
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
108
2456 xchat-common 2476 docbook-xml 2492 avm-firmware 2496 icewm-common 2496 libk3b2 2568 tk8.4 2580 ingerman 2604 openoffice.org-ca-res 2776 nasm 2784 xboard 2788 tiger 2800 irssi 2812 xfsprogs 2900 amanda-common 2916 manpages-dev 2935 elinks 2948 knode 3032 libsnmp-base 3060 util-linux-locales 3128 libapache2-mod-php4 3156 imagemagick 3156 tcl8.4 3164 openoffice.org-draw 3178 beryl-plugins-data 3232 xkb-data 3248 vim-scripts 3256 kdebase-bin 3268 kwin 3292 kdepim-kio-plugins 3300 libsnmp9 3320 console-data 3320 libkcal2b 3340 ttf-freefont 3420 xbase-clients 3428 libgtkmm-2.4-1c2a 3436 rpm 3440 apache2.2-common 3448 brltty 3460 xpdf-utils 3500 xnest 3504 irssi-scripts 3544 cvs 3588 konq-plugins 3616 kdebase-kio-plugins 3684 kppp 3692 kde-i18n-gl 3700 modconf 3728 libgphoto2-2 3776 blt 3784 openoffice.org-math 3828 libmysqlclient15off 3848 khelpcenter 3852 nxagent 3876 isdnactivecards 4036 openoffice.org-impress 4076 libgtk2.0-0 4096 libmagick9
4104 netpbm 4112 cupsys-common 4156 libarts1c2a 4264 xsane-common 4288 libavcodec0d 4312 apt 4324 libwxgtk2.4-1 4412 openoffice.org-ca 4564 xfonts-75dpi 4568 gaim 4568 lynx 4576 gnupg 4844 squid-common 4896 xfonts-100dpi 4912 foomatic-db-hpijs 4940 mutt 5004 groff 5060 gdb 5068 libssl0.9.7 5088 cpp-4.1 5172 kdebluetooth 5296 konqueror 5396 mc 5412 synaptic 5484 audacity 5492 gconf2-common 5504 samba-common 5548 openoffice.org-core07 5600 g++-4.1 5664 manpages-es 5716 tzdata 5728 kicker 5876 sleuthkit 5992 libncurses5-dev 6004 dpkg 6056 openoffice.org-core02 6212 binutils-dev 6224 gsfonts 6232 libssl0.9.8 6268 xmms 6270 wgalician-minimos 6312 openoffice.org-core05 6428 gettext 6540 openoffice.org-base 6580 kaffeine 6708 kmail 6984 libxine1 7132 binutils 7308 wcatalan 7332 cupsys 7500 openoffice.org-writer 7764 samba 7792 gimp 7936 openoffice.org-core09 7940 clamav-freshclam 8304 xfonts-base 8360 coreutils
Entorno web para la creación de Knoppix personalizadas Septiembre 2008
109
8404 k3b 8420 nxclient 8548 libsane 8600 libqt3-mt 9056 kcontrol 9472 kde-i18n-eu 9548 smbclient 9608 python2.4 9708 locales 9728 mplayer 9800 xfonts-75dpi-transcoded 9804 qemu 9964 xserver-xorg-core 10028 gs-esp 10216 libstdc++6-4.1-dev 10580 libc6-dev 10644 xfonts-100dpi-transcoded 10956 linux-kernel-headers 11088 libc6 11416 sun-java5-jdk 11728 perl-modules 12408 foomatic-db 12416 libgtk2.0-common 13240 openoffice.org-pyuno 13620 perl 14348 nessus-plugins 14892 k3b-i18n 14988 gaim-data 15920 scribus 16164 sun-java5-jre 16380 mysql-client-5.0 16992 kdebase-data 17800 openoffice.org-core01 17964 openoffice.org-calc 18412 openoffice.org-core03u 19628 kde-i18n-ca 20000 sun-java5-demo 20400 gimp-data 21564 vim-runtime 26624 iceweasel 27728 kdelibs4c2a 29436 kdelibs-data 30480 wireshark-common 30996 icedove 32033 frozen-bubble-data 32128 libgl1-mesa-dri 41524 foomatic-db-gutenprint 48158 wine 54316 openoffice.org-core05u 58840 kde-i18n-es 61096 linux-image-2.6.19 65084 sun-java5-bin 72240 openoffice.org-core04u 84272 openoffice.org-core06