Tarea Nº1 | IE0117 Programación bajo plataformas abiertas

Anuncio
100 Excelente :-)
1
Tarea Nº1 | IE0117 Programación bajo plataformas
abiertas
Mario A. Castresana Avendaño (carné A41267)
Resumen—La presente tarea, trata aspectos generales de las
plataformas libres (o de código abierto) para dar paso a la
introducción del curso IE0117 como tal. Se analizan aspectos
generales de Linux, como por ejemplo sus comandos, directorios,
empresas que lo usan, características y otros.
1. ¿Qué es Linux? Mencione 5 corporaciones o empresas internacionales utilizando Linux. Mencione 3 empresas en el mundo que
brinden servicios de mantenimiento instalación y desarrollo sobre
software libre.
Linux es un sistema operativo basado en UNIX, que es
utilizado por millones de usuarios en el mundo hoy día. A
diferencia de otros sistemas operativos, Linux posee una característica que lo diferencia de los otros sistemas disponibles
en el mercado: es software libre, es decir, es completamente
gratuito y se distribuye junto con su código fuente.
El sistema lo forman el núcleo del sistema (kernel) más un
gran número de programas y bibliotecas que hacen posible su
utilización. Cabe mencionar, que Linux es sólo el kernel y a
la combinación del kernel con las aplicaciones del proyecto
GNU, se le conoce como el sistema operativo GNU/Linux
como tal. Una particularidad de Linux es que la cantidad de
apliaciones y características que tenga puede variar para dar a
lugar a diferentes versiones del sistema, conocidas hoy como
distribuciones.
Muchos de estos programas y bibliotecas que usa Linux
han sido posibles gracias al proyecto GNU, por esto mismo,
muchos llaman a Linux, GNU/Linux, para resaltar que el
sistema lo forman tanto el núcleo como gran parte del software
producido por el proyecto GNU1 .
Para entender mejor la filosofía de GNU/Linux, es preciso
entender el concepto de software libre. El «Software Libre» es
un asunto de libertad, no de precio. Para entender el concepto,
debe pensarse en «libre» como en «libertad de expresión», no
como en «cerveza gratis»2 .
El software libre es una cuestión de libertad de los usuarios
para ejecutar, copiar, distribuir, estudiar, cambiar y modificar
el software. Más concretamente se refiere a los cuatro tipos
de libertades para los usuarios de software:
La libertad de usar el programa, con cualquier propósito
(libertad 0).
La libertad de estudiar el funcionamiento del programa,
y adaptarlo a las necesidades (libertad 1). El acceso al
código fuente es una condición previa para esto.
La libertad de distribuir copias, con lo que puede ayudar
a otros (libertad 2).
1 tomado
de El Rincón de Linux. 2012. WWW. Sobre Linux. Extraído el
jueves 8 de marzo de 2012 desde [http://www.linux-es.org/sobre_linux]
2 tomado de GNU Operating System. 2012. WWW. El sistema operativo
GNU, ¿qué es software libre? Extraído el jueves 8 de marzo de 2012 desde
[http://www.gnu.org/].
La libertad de mejorar el programa y hacer públicas las
mejoras, de modo que toda la comunidad se beneficie
(libertad 3). De igual forma que la libertad 1 el acceso
al código fuente es un requisito previo.
Todas estas características conforman la filosofía detrás de este
sistema operativo. El hecho de que Linux sea software libre
le ha permitido a muchas empresas surgir más rápido de lo
normal y lo bueno de esto es que cada herramienta desarrollada
a partir de software es también software libre debido a la
licencia de software GPL (GNU General Public License).
Actualmente, Linux se distribuye bajo la licencia GPL versión
2. En estos días, múltiples empresas utilizan Linux para
trabajar en grandes proyectos y mejorar su productividad,
gozando de las ventajas del software libre. Se pueden citar,
entre muchas otras, empresas como:
1. Intel
2. Google
3. IBM
4. T-Mobile
5. Texas Instruments
Cabe mencionar, que es muy común que las empresas transnacionales se unan para desarrollar software de código abierto.
Para citar un ejemplo interesante, se puede mencionar la
Open Handset Alliance (OHA), quien fuera responsable de
desarrollar el sistema Android para dispositivos móviles, el
cual está basado en Linux y fue liberado al mercado bajo la
licencia de código abierto Apache.
La OHA es liderada por Google y la componen compañías como HTC, Dell, Intel, Motorola, Qualcomm, Texas
Instruments, Samsung, LG, T-Mobile, Nvidia, Wind River
Systems y otras 66 firmas de tecnología que se dedican a la
fabricación de dispositivos móviles, desarrollo de aplicaciones,
telecomunicaciones y otras actividades
Existen empresas que sólo se dedican a dar servicios de
mantenimiento instalación y desarrollo de software libre, tales
como:
1. Canonical (desarrolladora principal de Ubuntu)
2. Andriod Inc. (desarrolladora principal de Android bajo
la guía de Google y la OHA)
3. Red Hat Enterprises (principal desarrolladora de Linux
RedHat y Fedora)
2. ¿Qué es GNU?
De acuerdo al sitio oficial, www.gnu.org/, el Proyecto GNU
fue creado en 1984 con la intención de crear un sistema nuevo
similar a UNIX, pero con la filosofía del software libre. De
hecho, el nombre GNU se deriva del acrónimo recursivo GNU
is Not Unix. Un sistema tipo UNIX se define mediante el
2
estándar POSIX (IEEE 1003) de la IEEE en el que se establece
cómo debe ser un sistema para ser considerado de este tipo; la
necesidad del estándar surgió debido a que empezaron a salir
muchas versiones nuevas de sistemas que se consideraban a
si mismos tipo UNIX y esto se prestaba para confusión en
muchos casos, ya que no todos se podían considerar realmente
sistemas UNIX.
Un sistema tipo UNIX es, en esencia, una colección de software de aplicaciones, bibliotecas y herramientas de desarrollo
más un programa que permita asignar recursos y comunicarse
con el hardware, llamado kernel o núcleo. Existe un kernel
propio de GNU (todavía en desarrollo) llamado The Hurd,
pero en la actualidad al sistema GNU se le utiliza con un
kernel sumamente estable llamado Linux y es por esto que al
sistema Linux se le conoce como GNU/Linux.
3. ¿Qué es una distribución de Linux? Mencione 10 distribuciones
de Linux y comente sus principales características, además de las
principales diferencias entre ellas.
Una distribución de Linux es un conjunto de software acompañado del kernel Linux diseñado para satisfacer necesidades
específicas para el hogar, empresas, instituciones educativas o
destinado a resolver cualquier necesidad para cualquier grupo
de usuarios. Entre las más populares existen:
1. Arch Linux, una distribución basada en el principio
KISS, con un sistema de desarrollo continuo entre cada
versión (no es necesario volver a instalar todo el sistema
para actualizarlo)
2. Debian, una distribución mantenida por una red de
desarrolladores voluntarios con un gran compromiso por
los principios del software libre.
3. openSUSE, originalmente basada en Slackware es patrocinada actualmente por la compañía Novell.
4. Slackware, una de las primeras distribuciones Linux y
la más antigua en funcionamiento. Fue fundada en 1993
y desde entonces ha sido mantenida activamente por
Patrick J. Volkerding.
5. Fedora, una distribución lanzada por Red Hat para la
comunidad.
6. Red Hat Enterprise Linux, derivada de Fedora, es mantenida y soportada comercialmente por Red Hat.
7. Ubuntu, una popular distribución para escritorio basada
en Debian y mantenida por Canonical.
8. Edubuntu, un sistema del proyecto Ubuntu diseñado para
entornos educativos.
9. Slax, es un sistema Linux pequeño, moderno, rápido
y portable orientado a la modularidad. Está basado en
Slackware.
10. Linux Mint, una popular distribución derivada de Ubuntu.
4. ¿Quién es el dueño de Linux?
Linux fue creado por el finlandés Linus Torvalds en 1991,
inicialmente él distribuyó Linux bajo una licencia que prohibía
expresamente el uso del software con fines de lucro, pero
rápidamente fue sustituida por la versión 2 de la licencia GPL.
Actualmente, el propietario de la marca registrada Linux es el
Linux Mark Institute (LMI) quien vela porque no se hagan
usos indebidos de la marca Linux que puedan confundir a los
usuarios o perjudicarlos de alguna manera. Con el apoyo de la
Linux Foundation, el LMI ha creado un programa para otorgar
las licencias correspondientes a personas interesadas en usar
la marca Linux en sus empresas o productos; esto también
incluye a Tux el pingüino.
5. Investigar las siguientes aplicaciones. ¿Cuál es la función de
cada uno de ellos?
firefox: navegador web creado por la organización sin
fines de lucro Mozilla.
k3b: es una aplicación desarrollada para el entorno gráfico KDE cuya función es quemar CDs o DVDs.
kate: es un editor de documentos bastante completo capaz
de editar simultáneamente varios documentos en varios
formatos incluyedo lenguajes de programación.
gimp: es una poderosa herramienta de edición de imágenes comparable con Photoshop y Corel.
xawtv: es una aplicación para ver tv por internet con
varias funciones extra relacionadas a reproducción de
video.
wine: es un tipo de “emulador” de Windows que nos
permite correr aplicaciones de Windows directamente
en Linux sin necesidad de instalar windows. Es una
implementación de del API de Windows (Interfaz de
programación de aplicaciones) sobre Unix y el sistema
de ventanas X.
VirtualBox: es un emulador de hardware x86 en el
cual se pueden instalar por a aparte sistemas operativos
completos sin necesidad de particionar el disco duro.
kino: es un editor de video con múltiples funciones y
compatible con una gran variedad de formatos (y está
perfectamente integrado con los estándares de captura y
reproducción de video IEEE-1394)
vlc: reproductor multimedia capaz de reproducir cualquier formato multimedia. También es una plataforma
muy útil para convertir formatos y soporta varios protocolos de streaming.
kdenlive: editor de video que soporta formatos como DV,
HDV y AVCHD. Soporta una gran gama de codificadores
y cámaras para edición de video.
6. Investigar los siguientes comandos de consola. Explicar en
detalle cada uno de ellos. Mencione y explique un ejemplo de
utilización para cada uno de ellos.
cd: comando para cambiar de directorio. Incluye operadores como -L y -P para seguir o no enlaces simbólicos
respectivamente. Ej: $ cd /usr/local/sybase.
ls: comando del shell que da a conocer los contenidos de
un directorio junto con la información que se le solicite
de forma adicional por medio de operadores. Ej: $ ls -l
apt-get: busca e instala paquetes de software.
apt-cache: busca dentro de un repositorio el nombre de
un paquete. Esto es útil en caso de no conocer el nombre
exacto de un paquete en un repositorio. Ej: $ apt-cache
search ^apache2$
dpkg-reconfigure: comando para reconfigurar un paquete que haya sido instalado previamente. Usualmente,
3
se utiliza este comando para arreglar un paquete que
por alguna razón falló en su configuración durante la
instalación o que requiere configurarse después de la
instalación.
aptitude: misma función que apt-get sólo que este comando pertence a una versión más vieja del gestor de
paquetes aptitude.
bash: iniciales para la consola nueva de GNU, bourneagain shell.
ssh: programa para comunicar dos máquinas de forma
remota y ejecutar comandos en una máquina de forma
remota, a través de una red que puede ser insegura. La
ventaja es que dicha comunicación se hace encriptada,
haciendo que el programa en si sea muy seguro y los
métodos adecuados. Ej:
# ssh -f -w 0:1 192.168.1.15 true
scp: comando utilizado para hacer copias de seguridad
de archivos entre dos anfitriones en una red. Dichas
copias se realizan de forma segura utilizando ssh para
transferencia de datos y se pedirán contraseñas si es
necesario un proceso de autenticación. Se le debe pasar al
comando el nombre del anfitrión y el usuario para saber
de dónde se va a copiar el archivo y quién lo recibirá.
Ej: # scp /home/simon/file1 kate@ss64.com:/home/kate
copia file1 a anfitrión remoto.
lsmod: muestra información de todos los módulos cargados en el kernel de Linux. Mediante un pipe | se puede
observar un sólo módulo y los módulos que dependan de
éste. Ej: # lsmod | grep drm
ps: muestra toda la información de los procesos corriendo
en memoria. Por ejemplo, para mostrar todos los procesos
corriendo con sintaxis estándar use # ps -e
grep: busca patrones dentro archivos, se usa la sintaxis
grep [opciones] [-e PATRÓN | -f ARCHIVO] [ARCHIVO...]. Ej: $ grep -v [aeiou] wordlist.txt
du: reporta la cantidad de espacio utilizada en el disco por
los archivos especificados o devuelve el espacio utilizado
por el directorio actual si no se le pasan argumentos.
7. Investigar los siguientes archivos de sistema. Explicar en detalle
la función de cada uno de ellos.
/etc/apt/sources.list, es el fichero donde se enlistan las
"fuentes" o "repositorios" disponibles de los paquetes de
software candidatos a ser: actualizados, instalados, removidos, buscados, sujetos a comparación de versiones,
etc. La herramienta apt administra el acceso a dichos
paquetes, utilizando el fichero sources.list, para realizar
las acciones previamente mencionadas.
/etc/fstab, este archivo configura el acceso a los diferentes
sistemas de archivos que hay en nuestro sistema.
/boot/grub/menu.lst, en general es un archivo de configuración del GRUB y muestra una lista de todos
los sistemas operativos que pueden ser cargados desde
GRUB al iniciar. Cuando se tienen instalados varios
sistemas operativos, es preciso editar este archivo para
poder seleccionar al arranque, qué sistema se desea usar.
/etc/passwd, contiene una lista con los usuarios locales
del sistema. Cada línea contiene un usuario y está for-
mada por columnas, separadas por : (dos puntos), que
contienen: el nombre de usuario (máximo 32 caracteres),
contraseña, ID de usuario, ID de grupo, directorio principal del usuario, información personal del usuario y shell
que usa el usuario.
/etc/group, contiene los nombres de los grupos y una
lisa de los usuarios que pertenecen a cada grupo. Cada
línea representa un grupo y contiene 4 campos: lista
de miembros del grupo, número de GID, la contraseña
cifrada o bien una x que indica la existencia de un archivo
gshadow y el nombre del grupo.
/etc/network/interfaces, guarda la configuración por default de cada una de las interfaces de red.
/etc/resolv.conf, al igual que el archivo /etc/host.conf, este
también juega un papel en la resolución de nombres de
ordenadores a través de la librería resolver.
En este archivo se indica el dominio al que pertenece
el ordenador (palabra clave search) y la dirección del
servidor de nombres (palabra clave nameserver) al que
se debe dirigir. Se puede introducir más nombres de
dominio. Al resolver nombres que no estén totalmente
cualificados se intentará generar un nombre válido y cualificado añadiendo entradas únicas en search. Se puede
dar a conocer otros servidores de nombres añadiendo
más líneas que comiencen con nameserver. Se puede
introducir comentarios con #.
/var/log/syslog, archivo de registro del sistema normales (Para entornos Red Had y Fedora el archivo es
/var/log/messages). Para su visualización generalmente se
utiliza: tail -f /var/log/syslog que nos muestra las últimas
líneas en tiempo real.
/proc/version, muestra la versión del kernel de Linux.
/proc/cpuinfo, muestra los datos sobre el procesador del
equipo.
Bibliografía:
1. El Rincón de Linux. 2012. WWW. Sobre Linux.
Extraído el jueves 8 de marzo de 2012 desde
[http://www.linux-es.org/sobre_linux]
2. GNU Operating System. 2012. WWW. El sistema operativo GNU, ¿qué es software libre? Extraído el jueves
8 de marzo de 2012 desde [http://www.gnu.org/]
3. El directorio /proc. 2012. WWW. Directorio /proc.
Extraído el domingo 11 de marzo de 2012 desde
[http://www.linuxtotal.com.mx/index.php?cont=info_admon_016]
4. Directorios importantes de Linux. 2012. WWW.
Archivos. Extraído el domingo 11 de marzo de 2012
desde [http://francisconi.org/linux/archivosdirectoriosimportantes?page=5]
5. Guía
de
Ubuntu.
2012.
WWW.
Sistema
de ficheros. Extraído el domingo 11 de
marzo
de
2012
desde
[http://www.guiaubuntu.org/index.php?title=Sistema_de_ficheros]
6. The Linux Documentation Project. 2012. WWW. Sitio
web [http://www.tldp.org/]
7. DebianWiki.
2012.
WWW.
HowToUse.
Extraído el domingo 11 de marzo desde
[http://wiki.debian.org/fr/WiFi/HowToUse?highlight= %28interfaces %
4
8. Debian. 2012. WWW. Documentación. Extraído
el domingo 11 de marzo de 2012 desde
[http://www.debian.org/doc/index.es.html]
9. Documentación escrita desde la consola bash usando el
comando man comando.
Descargar