Programación Bajo Plataformas Abiertas Profesor: Francisco Siles Canales Estudiante: Hugo Zúñiga Calvo Carné: A96988 Tarea 1 95/100 Introducción a Linux 1) ¿Qué es Linux? Mencione 5 corporaciones o empresas internacionales que utilizan Linux. Menciones 3 empresas en el mundo que brinden servicios de mantenimiento, instalación y desarrollo de software libre. 8/10 Linux es un sistema operativo, compatible con UNIX. El cual posee dos características que lo diferencian del resto de sistemas que se pueden encontrar en el mercado, la primera es que es libre, lo cual significa que no se debe pagar licencia y la segunda es que el sistema viene acompañado por el código fuente. El software libre suele ser gratuito, pero no es un requisito ... hay distribuciones de GNU/Linux que son de pago. El sistema se compone del núcleo (kernel) más un gran número de bibliotecas que permiten su utilización. Muchos de estos programas han sido posibles gracias al proyecto GNU. Gracias a esto el sistema ha sido diseñado y programado por multitud de programadores alrededor del mundo. La definición de software libre es más amplia ... libertad de copiar, distribuir, modificar ... Las arquitecturas en las que se puede utilizar Linux son Intel 386, 486, Pentium, Pentium Pro, entre otras. Algunas corporaciones que utilizan Linux para llevar a cabo sus operaciones son Boeing, Mercedes-Benz, AMD, Sony y Nokia. Asimismo algunas empresas que den soporte y mantenimiento al software de Linux son IBM, HP y Red Hat. 2) ¿Qué es GNU? 9/10 GNU es un sistema operativo similar a Unix que es software libre y respeta su libertad. El proyecto GNU se inició en 1984 para desarrollar el sistema GNU. Este sistema debido a que es similar a Unix se construye a partir de un conjunto de aplicaciones, bibliotecas y herramientas de programación, además de un programa para alojar recursos e interactuar con el hardwarek denominado núcleo. Debido a que el núcleo propio de GNU está lejos de poder utilizarse en el día a día, éste se usa habitualmente con un núcleo denominado Linux. Le faltó hablar del papel de Richard Stallman. 3) ¿Qué es una distribución de Linux? Mencione 10 distribuciones y comente sus principales características, además de las principales diferencias entre ellas. 15/15 Una distribución es una recopilación de programas y ficheros organizados y preparados para su instalación. Estas distribuciones se pueden obtener a través de Internet, y estos paquetes contendrán todo lo necesario para instalar un sistema Linux bastante completo y en la mayoría de los casos un programa de instalación que facilita la tarea de instalarlo. Algunas de las distribuciones de Linux que se pueden obtener actualmente son: a) Ubuntu: Seguridad: Ubuntu provee seguridad para sus usuarios, ya que construye firewalls para evitar el acceso de entes externos a la información que se encuentra dentro del computador. Compatible: Es compatible con una gran cantidad de sistemas digitales como MP3, desktops, cameras, entre otros; Además es compatible con Windows. Rapidez: Ubuntu se carga rápidamente en muchas computadoras, ya que no permite el acceso de programas de prueba o innecesarios. Accesible: Es un OS gratuito, además tiene traducción en más de 25 idiomas. Basada en Debian. Por defecto el escritorio es GNOME b) Debian: Mantenido por Usuarios: Si existe algún bug dentro del OS simplemente se arregla. El mejor sistema de empaquetamiento: Debian tiene una gran cantidad de paquetes que se encargan de gestionar los recursos del sistema de forma que se eviten conflictos de software. Instalación sencilla: La instalación del OS es sencilla, ya que se puede llevar a cabo directamente de un CD o incluso de la WEB. Paquetes bien integrados: La integración de los paquetes de Debian lo diferencia de las demás distribuciones. Ya que todo el software es empaquetado en un grupo coherente, todos los paquetes se pueden encontrar en una única locación, además se puede asegurar que todas las dependencias se han tratado de manera correcta. Codigo Fuente: Debian proporciona el código fuente de manera de forma que los desarrolladores de software tengan la libertad de hacerle las correcciones necesarias. Actualizaciones sencillas: Gracias al sistema de empaquetamiento las actualizaciones del sistema se llevan a cabo de manera sencilla. Soporta múltiples arquitecturas y kernels Sistema de rastreo de “bugs”: Debian pone a disposición pública el sistema de rastreo de bugs, de forma que los usuarios tengan la libertad de reportar “bugs” y saber la forma en la que se pueden solucionar. Estabilidad: Los sistemas operativos Debian trabajan de forma muy estable, por lo cual no hacen rebooting al menos de que ocurra una falla de potencia o una actualización de hardware. Rápido y fácil en memoria: El sistema operativo corre de forma rápida, ya que está basado en GNU/Linux. Los controladores para una gran cantidad de hardware son escritos por usuarios de GNU/Linux. c) Fedora: Utiliza GNOME como entorno de escritorio por defecto y utiliza paquetes deb para las aplicaciones Gratuito: Es totalmente gratuito y consiste de programas cien porciento libres de código abierto. Sin problema de antivirus o spyware, ya que está basado en Linux. Comunidad mundial: Construido por una comunidad global de desarrolladores, por lo que existe un sitio web local para cada quien. Poderoso: Fedora es la base de Linux para empresas de Red Hat, el cual es un poderoso sistema operativo para empresas. Ilustraciones agradables: Tiene ilustraciones agradables, ya que cuenta con una gran cantidad de wallpaper. Utiliza GNOME como escritorio por defecto. Se basa en paquetes RPM, para cuya gestión usa Yum. No instala por defecto códecs para formatos propietarios como MP3 o MPEG, ni software propietario como Adobe. d) Red Hat: Seguro: Basado en la fama de Linux sobre la seguridad de sus sistemas, Red Hat ha desarrollado un esquema de defensa para mejorar la seguridad de las computadoras, para esto se han utilizado las siguientes características: aplicaciones más segura, protección contra fallas de seguridad comúnmente utilizada y soporte de autentificación vía smart card. Administración sencilla: Una herramienta simple y veloz permite a los administradores del sistema para manejar complejos sistemas de computadoras distribuidos desde una única consola basada en web. Interoperabilidad: Las aplicaciones incluidas en el Red Hat Enterprise Linux Desktop son compatibles con formatos de Microsoft. Aplicaciones de productividad incluidas: Red Hat incluye los aplicaciones más populares sin cargo adicional. El Sistema operativo no es gratuito, ya que se debe pagar una licencia de soporte. e) OpenSuse: Interoperabilidad: Suse es compatible con Windows, Mac y Unix. No es gratuito. Office Suite completa Sencillo de usar. f) Slackware: Está basado en 2.6 Linux kernel series y la librería GNU C versión 2.7. g) Gentoo: h) Kubuntu: Contiene un programa de instalación sencilla una gran cantidad de documentación online y un paquete de sistema de menú-driven. La instalación completa le provee con ambiente de desarrollo en X Window Systrem, C/C++ y Perl; así como de utilidades de networking, mail server, news server, web server. Puede correr en 486 sistemas incluso las más nuevas máquinas basadas en la arquitectura x86. Es un sistema operativo gratis basado en FreeBSD. Puede ser optimizado y customizado de manera automática. Es un sistema seguro y extremadamente configurable. Se puede compilar u optimizar el sistema completamente desde cero. Posee una interfaz gráfica muy estética. Permite compartir cualquier archivo en una forma simple e intuitiva. Es seguro, ya que contiene pre-instalado Konqueror Kubuntu contiene un reproductor de música y de video, los cuales son sencillos de usar. Contiene un office suite completo y profesional. i) Mandriva: Posee un ambiente más simple y mejor con un tema gráfico que incluye una gran cantidad de íconos. Posee un smart desktop, que administra la información y recibe un motor back end más rápido Posee una suite de libre office que se suministra dentro de loa paquetes de instalación Contiene Firefox como motor de búsqueda incluido en los paquetes de instalación. Utiliza KDE como entorno de escritorio y urpmi como gestor de paquetes j) Mint: Tiene un soporte completo de multimedia y es extremadamente sencillo de utilizar. Es gratis y de código abierto. Se anima a los usuarios a enviar comentarios al proyecto, de forma que sus ideas puedan ser utilizados para mejorarlo Basado en Debian y Ubuntu. Es seguro y confiable. Instala por defecto diversos códecs propietarios como el plugin de Java o el plugin de Flash. El entorno de escritorio que se utiliza por defecto es el GNOME. 4) ¿Quién es el dueño de Linux? 8/10 Linux no lo posee nadie, ya que este es parte de la iniciativa del proyecto GNU de producir un sistema operativo basado totalmente en software libre, de manera que nadie pueda reclamar los derechos sobre éste. Sin embargo existen distribuciones de Linux las cuales tienen un costo debido a que se incluye un rubro de soporte el cual debe ser cubierto por la persona interesada en obtener el OS. Linux no es parte de la iniciativa de GNU, son proyectos separados! 5) Investigar las siguientes aplicaciones. ¿Cuál es la función de cada una de ellas? 10/10 Firefox: Firefox es una aplicación que provee un navegador web y trabaja bajo el paradigma de código abierto, por lo que su descarga es completamente gratuita. k3b: Es una aplicación rica en imágenes y sencilla de utilizar para quemar CD´s. y consta de tres partes el proyecto, las herramientas y el contexto sensitivo a acciones de media. Kate: es un editor multidocumento el cual es parte de KDE, debido a esto envía los archivos con transparencia de red. Gimp: es un programa de manipulación de imágenes, por lo que se pueden llevar a cabo tareas como retoque de fotos, composición de imágenes y autoría de imágenes. XawTv: es un programa que se utiliza para ver la televisión que usa el driver bttv o video4linux, contiene utilidades para la consola que permiten grabar imágenes y películas AVI. Wine: es un programa que permite correr software de Windows en otros sistemas operativos. Con éste se puede instalar y correr todas las aplicaciones tal y como lo hacen en Windows. VirtualBox: es una herramienta de virtualización basada en arquitectura x86. Por lo que lo que hace es crear una máquina virtual que simule la acción de estas arquitecturas. Kino: es un editor de DV no linear. Tiene una excelente integación con IEEE-1394 para captura, control VTR y grabación hacia la cámara. Captura video al disco en formato AVI y Raw DV. VLC: es un reproductor multimedia de plataforma cruzada que es gratis y de código abierto. Kdenlive: es un editor de video multi-track. 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: 20/20 cd: este comando sirve para cambiar entre directodios. Si no tiene parámetros, nos coloca en nuestro directorio personal, otros parámetros son: 1) “/” nos lleva al directorio raíz, 2)”..” nos lleva a un directorio arriba y 3) – nos lleva al directorio en el cual nos encontrábamos antes de hacer el anterior cd. Ejemplo: C:\Users\hzuniga>cd C:\Users\hzuniga\Desktop C:\Users\hzuniga\Desktop> A partir de este ejemplo, se puede observar que inicialmente el sistema se encontraba trabajando dentro del directorio C:\Users\hzuniga y que al utilizar cd el sistema pasó a trabajar dentro del directorio C:\Users\hzuniga\Desktop. ls: es un comando que permite listar los archivos dentro de un directorio, la sintaxis es ls [opciones] [archivo], las opciones son: 1) –a: lista todos los archivos incluyendo aquellos que comienzan con “.”, 2) –d: Lista el nombre del directorio en vez de los archivos contenidos en él, 3) –l: Lista los archivos con muchomás detalle, especificando para cada archivo sus permisos, el número de enlaces rígidos, el nombre del propietario, el grupo al que pertenece, el tamaño en bytes y la fecha de la última modificación, 4) –r: Invierte el orden de listado de los archivos, 5) –s: Muestra el tamaño de cada archivo en bloques de 1024 bytes a la izquierda del nombre, 6) –h: Muestra los tamaños de archivo en términos de kilobytes, 7) –t: Lista los archivos ordenados por el tiempo de modificación en vez de ordenarlos alfabéticamente, 8) –A lista todos los archivos excepto el “.” y el “..”, 9) –R: Lista los contenidos de todos los directorios recursivamente y 10) –S: Ordena el listado por el tamaño de los archivos. Ejemplo: ls –a C:\Users\hzuniga\Desktop Con base en este ejemplo se puede observar que el sistema despliega todos los archivos contenidos dentro del directorio C:\Users\hzuniga\Desktop, por lo que se puede observar que despliega correctamente los archivos. apt-get: Este archivo se utiliza para instalar programas en Ubuntu, entre las órdenes que soporta están: 1) update: Actualiza los repositorios, 2) upgrade: Busca aptualizaciones de software, 3) install: Instala el paquete seleccionado, 4) remove: Elimina el paquete seleccionado, 5) dist-upgrade: Actualiza la distribución y 6) autoclean: Elimina los archivos descargados contiguos. Ejemplo: # apt-get install eclipse Con esta línea de comando se le dice al sistea que instale el paquete de aplicación del editor eclipse. apt-cache: Este es un comando que se utiliza para buscar información de los paquetes que se encuentran disponibles, algunas opciones son: 1) search: busca paquetes relacionados con el término que se desea buscar, 2) show: permite observar información específica de un paquete que deseamos observar Ejemplo: apt-cache search atari Con base en este ejemplo, al poner este comando se despliegan los paquetes de Linux que tienen algo que ver con atari, de forma que el usuario pueda luego decidir cuáles desea instalar. dpkg-reconfigure: este comando se utiliza para gestión de paquetes, de forma más especifica para reconfigurar un paquete que haya sido previamente instalado en Ubuntu. Ejemplo: dpkg-reconfigure locales En este caso al ejecutar el comando, el sistema lo que hace es abrir el paquete locales para habilitar una reconfiguración de idioma (que es lo que trae el paquete locales), de forma tal que se puede volver a definir el idioma deseado. aptitude: es un comando que sirve para instalar paquetes, éste es más potente que el comando apt-get, debido a que soluciona dependencias y recuerdas librerías descargadas desinstalándolas si están en desuso, algunos de los diferentes usos que se le puede dar es: 1) install: instala el paquete que se indique, 2) reinstall: reinstala el paquete que se indique, 3) remove: borra el paquete que se indique, 4) purge: borra el paquete junto con sus archivos de configuración, 5) search: busca un determinado que contenga el nombre o la descripción, 6) show: muestra la información disponible sobre determinado paquete, 7) update: actualiza la lista de paquetes que estén disponibles y 8) upgrade: actualiza el sistema sin eliminar nada. Ejemplo: aptitude install hugo En este ejemplo al ejecutar este comando, la computadora procederá a instalar en el sistema el paquete hugo. ssh: este comando permite conectarse de forma segura y cifrada con otro sistema sobre una red no segura. Ejemplo: ssh usuario1@servidor.dominio.es ls Mediante este comando, lo que hace la máquina es establecer una comunicación con el host servidor.dominio.es y lista los archivos que se encuentran en su directorio actual. scp: El comando scp permite copiar ficheros entre dos máquinas. Utiliza ssh para la transmisión de la información por lo que ofrece la misma seguridad que el ssh. De la misma manera utiliza los métodos de autenticación de ssh. El formato que se utiliza es: scp user@host1:file user@host2:file2. Ejemplo: scp /tmp/file usuario1@servidor.dominio.es:/tmp En este caso la computadora lo que hace es copiar el fichero /tmp del otro servidor al fichero /tmp/file del usuario actual. lsmod: despliega la información referente a los mádulos que están habilitados por el “kernel”. Ejemplo: # lsmod En este caso lsmod lo que hace es mostrar todos los archivos que están habilitados por el kernel. ps: muestra por pantalla un listado de los procesos que se están ejecutando en el sistema, si no se añade ningún parámetro, ps mostrará los procesos del usuario con el que estamos logueados. Por otra parte, los parámetros más básicos a conocer son los siguientes: -aux: Lista los procesos de todos los usuarios con información añadida, -u: lista la información del proceso como por ejemplo el usuario que lo está corriendo, la actualización de CPU y memoria, -x: Lista los procesos de todas las terminales y usuarios, -l: muestra la información que incluye el UID y el valor “nice” y –forest: muestra el listado de procesos en un formato tipo árbol que permite ver como los procesos interactúan entre sí. Ejemplo: ps aux Este comando muestra todos los procesos que se están llevando a cabo en el CPU, por lo que también se muestra cierta información sobre estos que es relevante para el usuario. grep: permite buscar, dentro de los archivos, las líneas que concuerdan con un patrón, en caso de que no se especifique ningún archivo, toma la entrada estándar. Ejemplo: grep „hscripts‟ file1.txt Este ejemplo permite que la computadora muestre todas las líneas que contienen la palabra hscripts dentro de ellas. Bash: es un programa que permite introducir comandos en una consola y que ésta los lleve a cabo. du: se usa para informar cuánto espacio en disco ocupa un archivo o directorio. Las opciones que se tienen son : 1) –a: muestra el espacio de cada archivo, 2) –k Escribe el tamaño de los archivos en unidades de 1024 bytes, 3) –s: informa sólo de la suma total de cada uno de los archivos especificados, 4) –L: Procesa los enlaces simbólicos usando el archivo o directorio al que el enlace simbólico referencia, en vez de el enlace en sí mismo. Ejemplo: #du hugo El ejemplo anterior permite que la consola muestre el tamaño de todos los archivos dentro del directorio hugo que se encuentra en la memoria principal. 7) Investigar los siguientes archivos de sistema. Explicar en detalle la función de cada una de ellos: 15/15 /etc/sources.list: es un archivo hallado en las distribuciones GNU/Linux derivadas de Debian 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. /etc/fstab: es un archivo de configuración que contiene información de todas las particiones y dispositivos de almacenamiento en la computadora. También contiene información de donde las particiones y dispositivos de almacenamiento deberían ser montados y como. /etc/grub/menú.lst: es un gestor de arranque, o sea es lo primero que se carga cuando se inicia la computadora. Permite tener diferentes sistemas operativos, y diferentes versiones de ellos, en el mismo disco duro. /etc/passwd: el contenido de este fichero determina quien puede acceder al sistema de manera legítima y que se puede hacer una vez dentro del sistema. Este fichero es la primera línea de defensa del sistema contra accesos no deseados. Debe mantenerse escrupulosamente y libre de errores y fallos de seguridad. En él se tienen registrados todas las cuentas de usuario así como las claves de accesos y privilegios. /etc/group: este archivo contiene una lista de los usuarios que pertenecen a los diferentes grupos. De hecho, cada vez que un gran número de usuarios puede tener acceso al sistema, frecuentemente se les ubica en grupos diferentes, cada uno de los cuales posee sus propios derechos de acceso a los archivos y directorios. /etc/network/interfaces: este archivo contiene todas las configuraciones de las interfaces de red para Ubuntu y Debian. Dentro de estos archivos se configura la forma en la cual el sistema se conecta a la red. /etc/resolv.conf: este archivo es el archivo de resolución de configuración. Se utiliza para configurar el acceso de cliente al internet domain server. Este archivo define cual nombre de servidor usar. /var/log/syslog: Syslog es un log del sistema y del kernel que nos puede dar importante información de eventos que suceden en el sistema y en sus programas. Syslog provee incluso alguna llamada para que los programas que corren en el sistema logeen en el propio syslog. /proc/versión: Este archivo no muestra el nombre de la versión actual del sistema operativo sino que muestra las especificaciones de la versión del kernel del Linux usada en la distribución y confirma la versión del compilador GCC usado para construirlo. /proc/cpuinfo: Este archivo muestra la información del CPU que se encuentra dentro del computador en el cual está instalado Linux. Bibliografía 10/10 1. Linux-es. (1998). Recuperado el 12 de marzo de 2012, de http://www.linuxes.org/distribuciones 2. PillateUnLinux. (2000). Recuperado el 12 de marzo de 2012, de http://www.pillateunlinux.com/lista-de-companias-y-entidades-que-usan-gnulinux/ 3. 120% Linux. (2007). Recuperado el 12 de marzo de 2012, de http://120linux.com/distribuciones/ 4. Debian org. (s.f.). Debian. Recuperado el 12 de marzo de 2012, de http://www.debian.org/index.es.html 5. fedora. (s.f.). Fedora Project. Recuperado el 12 de marzo de 2012, de http://fedoraproject.org/ 6. Free Software Foundation. (1996). GNU Operating System. Recuperado el 12 de marzo de 2012, de www.gnu.org/home.es.html 7. Fuentes, R. A. (s.f.). Comandos Básicos de Consola . Recuperado el 12 de marzo de 2012, de http://ecsl2010.softwarelibre.ca/sites/ecsl2010.softwarelibre.ca/files/bash.pdf 8. Gimp Org. (s.f.). Gimp. Recuperado el 12 de marzo de 2012, de http://www.gimp.org/ 9. Hscripts.com. (s.f.). Los Comandos en Linux. Recuperado el 12 de marzo de 2012, de http://es.hscripts.com/tutoriales/linux-commands/du.html 10. K3B. (s.f.). K3B. Recuperado el 12 de marzo de 2012, de http://www.k3b.org/ 11. kate org. (s.f.). kate. Recuperado el 12 de marzo de 2012, de http://kate-editor.org/ 12. Kino project. (s.f.). Kino. Recuperado el 12 de marzo de 2012, de http://www.kinodv.org/ 13. Kubuntu. (s.f.). Kubuntu. Recuperado el 12 de marzo de 2012, de http://www.kubuntu.org/feature-tour 14. Linux Mint. (s.f.). Mint. Recuperado el 12 de marzo de 2012, de http://www.linuxmint.com/index.htmlI 15. Mandriva. (s.f.). Mandriva. Recuperado el 12 de marzo de 2012, de http://www.mandriva.com/en/linux/features/ 16. Mundo Geek. (s.f.). Recuperado el 12 de marzo de 2012, de http://mundogeek.net/archivos/2009/09/30/las-10-distros-linux-mas-populares/ 17. Nix Craft. (s.f.). Ubuntu Linux Networking. Recuperado el 12 de marzo de 2012, de http://www.cyberciti.biz/faq/setting-up-an-network-interfaces-file/ 18. Osmosis Latina. (s.f.). Comandos estándares Linux. Recuperado el 12 de marzo de 2012, de http://www.osmosislatina.com/linux/comandos.htm 19. Red Hat. (s.f.). Red Hat. Recuperado el 12 de marzo de 2012, de http://www.redhat.com/products/enterprise-linux/desktop/ 20. Slackware. (s.f.). Slackware. Recuperado el 12 de marzo de 2012, de http://www.slackware.com/ 21. Ubuntu. (s.f.). Guía Ubuntu. Recuperado el 12 de marzo de 2012, de http://www.guiaubuntu.org/index.php?title=Comandos 22. Ubuntu. (s.f.). Ubuntu. Recuperado el 12 de marzo de 2012, de http://www.ubuntu.com/ 23. Virtual Box. (s.f.). Virtual Box. Recuperado el 12 de marzo de 2012, de https://www.virtualbox.org/ 24. VLC org. (s.f.). Videolan. Recuperado el 12 de marzo de 2012, de http://www.videolan.org/vlc/ 25. Wine. (s.f.). Wine. Recuperado el 12 de marzo de 2012, de http://www.winehq.org/