NDG Linux Essentials
Short Description
Linux Basico...
Description
NDG Linux Essentials - Capítulo 1 - Introducción a Linux
Linux Evolución y Sistemas Operativos Populares La definición de la palabra Linux depende depende del contexto en el que se utiliza. Linux significa el núcleo del sistema, que es el controlador central de todo lo que sucede en la computadora (más sobre esto más adelante). Las personas que dicen que su computadora "ejecuta Linux" usualmente se refieren al kernel y al conjunto de herramientas que vienen con él (llamado distribución). Si tienes "experiencia con Linux", es muy probable que hables de los programas en sí, aunque dependiendo del contexto, podrías estar hablando de saber cómo ajustar el kernel. Cada uno de estos componentes será investigado para que usted entienda exactamente qué funciones desempeña cada uno. Para complicar aún más las cosas es el término UNIX . UNIX fue originalmente un sistema operativo desarrollado en AT & T Bell Labs en l a década de 1970. Fue modificado y bifurcado (es decir, la gente lo modificó y esas modificaciones sirvieron como base para otros sistemas) de tal manera que en la actualidad existen muchas variantes diferentes de UNIX. Sin embargo, UNIX es ahora una marca y una especificación, propiedad de un consorcio de la industria llamado Open Group. Sólo el software que ha sido certificado por el Open Group puede llamarse UNIX. ¡A pesar de adoptar todos los r equisitos de la especificación de UNIX, Linux no ha sido certificado, por lo que Linux realmente no es UNIX! Es sólo ... UNIX-like. Función del núcleo El núcleo del sistema operativo es como un controlador de tráfico aéreo en un aeropuerto. El kernel dicta qué programa obtiene qué pedazos de memoria, se inicia y mata programas, y se encarga de mostrar texto en un monitor. Cuando una aplicación necesita escribir en el disco, debe pedirle al sistema operativo que lo haga. Si dos aplicaciones solicitan el mismo recurso, el núcleo decide quién lo recibe y, en algunos casos, elimina una de las aplicaciones para guardar el resto del sistema. El kernel también maneja el cambio de aplicaciones. Una computadora tendrá un pequeño número de CPUs y una cantidad finita de memoria. El kernel se encarga de descargar una tarea y cargar una nueva tarea si hay más tareas que las CPUs. Cuando la tarea actual ha ejecutado una cantidad de tiempo suficiente, la CPU pausa la tarea para que otra pueda ejecutarse. Esto se llama multitarea preventiva. Multitarea significa que el equipo está haciendo varias tareas a la vez, y preemptive significa que el núcleo está decidiendo cuándo cambiar el enfoque entre tareas. Con las tareas de conmutación rápida, parece que el equipo está haciendo muchas cosas a la vez.
Cada aplicación puede pensar que tiene un gran bloque de memoria en el sistema, pero es el kernel el que mantiene esta ilusión, remapeando bloques de memoria más pequeños, compartiendo bloques de memoria con otras aplicaciones o incluso intercambiando bloques que no han sido tocados Al disco. Cuando el equipo se inicia se carga un pequeño pedazo de código llamado cargador de arranque. El trabajo del cargador de arranque es cargar el kernel y empezarlo. Si está familiarizado con sistemas operativos como Microsoft Windows o OS X de Apple, es probable que nunca vea el cargador de arranque, pero en el mundo UNIX suele ser visible para que pueda ajustar la forma en que arranca su computadora. El gestor de arranque carga el kernel de Linux y, a continuación, transfiere el control. Linux continúa con la ejecución de los programas necesarios para hacer que el ordenador sea útil, como conectarse a la red o iniciar Aplicaciones Al igual que un controlador de tránsito aéreo, el kernel no es útil sin algo para controlar. Si el núcleo es la torre, las aplicaciones son los aviones. Las aplicaciones hacen peticiones al kernel y reciben recursos, como memoria, CPU y disco, a cambio. El kernel también abstrae los complicados detalles de la aplicación. La aplicación no sabe si un bloque de disco está en una unidad de estado sólido del fabricante A, un disco duro de metal giratorio del fabricante B o incluso un recurso compartido de archivos de red. Las aplicaciones sólo siguen la interfaz de programación de aplicaciones (API) del kernel y, a cambio, no tienen que preocuparse por los detalles de la implementación.
Cuando nosotros, como usuarios, pensamos en aplicaciones, tendemos a pensar en procesadores de texto, navegadores web y clientes de correo electrónico. El kernel no le importa si está ejecutando algo que está frente a los usuarios, un servicio de red que habla con un equipo remoto o una tarea interna. Así pues, de esto obtenemos una abstracción llamada proceso. Un proceso es sólo una tarea que es cargada y rastreada por el kernel. Una aplicación puede incluso necesitar múltiples procesos para funcionar, por lo que el kernel se encarga de ejecutar los procesos, iniciarlos y detenerlos según lo solicitado, y distribuir los recursos del sistema. Papel del código abierto Linux comenzó en 1991 como un proyecto de afición de Linus Torvalds. Hizo que la fuente estuviera libre y otros se unieran para dar forma a este incipiente sistema operativo. No era el primer sistema desarrollado por un grupo, pero como era un proyecto construido desde cero, los primeros adoptadores tenían la capacidad de influir en la dirección del proyecto y de asegurarse de que los errores de otros UNIX no se repitieran. Los proyectos de software toman la forma de código fuente, que es un conjunto legible por humanos de instrucciones de la computadora. El código fuente puede escribirse en cualquiera de los cientos de lenguajes diferentes, Linux sólo pasa a estar escrito en C, que es un idioma que comparte la historia con el UNIX original. El código fuente no se entiende directamente por el ordenador, por lo que debe ser compilado en instrucciones de la máquina por un compilador . El compilador reúne todos los archivos de origen y genera algo que se puede ejecutar en el equipo, como el kernel de Linux. Históricamente, la mayoría del software se ha emitido bajo una licencia de código cerrado, lo que significa que usted obtiene el derecho de utilizar el código de la máquina, pero no puede ver el código fuente. ¡A menudo la licencia dice específicamente que usted no intentará invertir la ingeniería del código de la máquina de nuevo al código fuente para averiguar lo que hace! El código abierto tiene una visión del software centrada en la fuente. La filosofía de código
abierto es que usted tiene derecho a obtener el software, ya modificarlo para su propio uso. Linux adoptó esta filosofía con gran éxito. La gente tomó la fuente, hiz o cambios, y los compartió con el resto del grupo. Junto a esto, estaba el proyecto GNU (GNU, no UNIX). Mientras GNU estaba construyendo su propio sistema operativo, eran mucho más eficaces en la construcción de las herramientas que van junto con un sistema operativo UNIX, como los compiladores y las interfaces de usuario. La fuente estaba disponible libremente, por lo que Linux era capaz de orientar sus herramientas y proporcionar un sistema completo. Como tal, la mayoría de las herramientas que forman parte del sistema Linux provienen de estas herramientas GNU. JCA- CIST: Lic. Arthur Ponce de León Pino
Hay muchas variantes diferentes en código abierto, y éstas serán examinadas en un capítulo posterior. Todos están de acuerdo en que debe tener acceso al código fuente, pero difieren en cómo puede, o en algunos casos, debe, redistribuir los cambios. Distribuciones de Linux Tome Linux y las herramientas GNU, añada más aplicaciones orientadas al usuario como un cliente de correo electrónico, y tiene un sistema Linux completo. La gente comenzó a integrar todo este software en una distribución casi tan pronto como Linux se convirtió en utilizable. La distribución se encarga de configurar el almacenamiento, instalar el kernel e instalar el resto del software. Las distribuciones completas también incluyen herramientas para administrar el sistema y un administrador de paquetes para ayudarle a agregar y quitar software después de que la instalación esté completa. Al igual que UNIX, hay muchos sabores diferentes de distribuciones. En estos días, hay distribuciones que se centran en la ejecución de servidores, escritorios, o incluso herramientas específicas de la industria como el diseño de la electrónica o la computación estadística. Los principales actores del mercado pueden ser rastreados a Red Hat o Debian. La diferencia más visible es el gestor de paquetes, aunque encontrará otras diferencias en todo, desde ubicaciones de archivos hasta filosofías políticas. Red Hat comenzó como una distribución simple que introdujo el Administrador de paquetes de Red Hat (RPM). El desarrollador eventualmente formó una compañía a su alrededor, que intentó comercializar un escritorio Linux para los negocios. Con el tiempo, Red Hat comenzó a concentrarse más en las aplicaciones de servidor, como servidores de archivos y páginas web, y lanzó Red Hat Enterprise Linux, un servicio pagado en un ciclo de lanzamiento largo. El ciclo de lanzamiento dicta la frecuencia con la que se actualiza el software. Un negocio puede valorar la estabilidad y desea largos ciclos de lanzamiento, un aficionado o un arranque puede querer el último software y optar por un ciclo de lanzamiento más corto. Para satisfacer a este último grupo, Red Hat patrocina el Proyecto Fedora,que hace un escritorio personal que incluye el último software, Debido a que todo en Red Hat Enterprise Linux es de código abierto, un proyecto llamado CentOS llegó a ser, que recompiló todos los paquetes de RHEL y los entregó de forma gratuita. CentOS y otros similares (como Scientific Linux) son en gran parte compatibles con RHEL e integran algún software más reciente, pero no ofrecen el soporte pagado que hace Red Hat. Scientific Linux es un ejemplo de distribución de uso específico basada en Red Hat. El proyecto es una distribución patrocinada por Fermilab diseñada para permitir la informática científica. Entre sus muchas aplicaciones, Scientific Linux se utiliza con aceleradores de partículas incluyendo el Large Hadron Collider en CERN. Open SUSE originalmente derivado de Slackware , pero incorpora muchos aspectos de Red Hat. La empresa original fue comprada por Novell en 2003, que luego fue adquirida por el Grupo Attachmate en 2011. El grupo Attachmate luego se fusionó con Micro Focus
International. A través de todas las fusiones y adquisiciones, SUSE ha logrado continuar y crecer. Aunque Open SUSE está basado en el escritorio y está disponible para el público en general, SUSE Linux Enterprise contiene código propietario y se vende como un producto de servidor. Debian es más un esfuerzo de la comunidad, y como tal, también promueve el uso de software de código abierto y la adherencia a los estándares. Debian creó su propio sistema de gestión de paquetes basado en el formato de archivo .deb. Mientras que Red Hat deja el soporte de plataformas Intel y AMD a proyectos derivados, Debian soporta muchas de estas plataformas directamente. Ubuntu es la distribución derivada más popular de Debian. Es la creación deCanonical, una empresa que se hizo para fomentar el crecimiento de Ubuntu y ganar dinero al proporcionar apoyo. Linux Mint se inició como una bifurcación de Ubuntu Linux, al tiempo que se basa en los repositorios de Ubuntu. Hay varias versiones, todas gratis, pero algunas incluyen codecs propietarios, que no pueden ser distribuidos sin restricciones de licencia en ciertos países. Linux Mint está suplantando rápidamente a Ubuntu como la solución Linux de escritorio más popular del mundo. Hemos discutido las distribuciones específicamente mencionadas en los objetivos de Linux Essentials. Usted debe ser consciente de que hay cientos, si no miles más que están disponibles. Es importante entender que mientras hay muchas distribuciones diferentes de Linux, muchos de los programas y comandos permanecen iguales o son muy similares.
1.2.4.1 ¿Qué es un comando? La respuesta más simple a la pregunta, "¿Qué es un comando?", Es que un comando es un programa de software que cuando se ejecuta en la línea de comandos, realiza una acción en el equipo.
está ejecutándose y sabe cómo interpretar ese comando, no requiriendo que se inicien programas adicionales. Comandos que se almacenan en los archivos que son buscados por el Shell: Si escribe un lscomando, el shell b usca a través d e los directorios que se enumeran en la PATHvariable para tratar de encontrar un archivo llamado lsque puede ejecutar. Estos comandos también se pueden ejecutar escribiendo la ruta completa al comando. Alias: alias pueden anular un comando integrado, una función o un comando que se encuentra en un archivo. Los alias pueden ser útiles para crear nuevos comandos creados a partir de funciones y comandos existentes. Funciones: Las funciones también se pueden construir u tilizando comandos existentes para crear nuevos comandos, sobreescribir comandos incorporados al shell o comandos almacenados en archivos. Normalmente, los alias y las funciones se cargan desde los archivos de inicialización cuando se inicia el shell, que se discutirá más adelante en esta sección.
Considera esto Si bien los alias se tratarán en detalle en una sección posterior, este breve ejemplo puede ser útil para entender el concepto de comandos. Un alias es esencialmente un apodo para otro comando o serie de comandos. Por ejemplo, el cal 2014comando mostrará el calendario para el año 2014. Suponga que termina ejecutando este comando con frecuencia. En lugar de ejecutar el comando completo cada vez, puede crear un alias llamado mycal y ejecutar el alias, como se muestra en el siguiente gráfico: Sysadmin @ localhost : ~ $ alias mycal = "cal 2014" sysadmin @ localhost : ~ $ mycal 2014 enero Febrero Marzo
Cuando se considera un comando usando esta definición, realmente está considerando lo que sucede cuando ejecuta un comando. Cuando escribe un comando, el sistema operativo ejecuta un proceso que puede leer entrada, manipular datos y producir salida. Desde esta perspectiva, un comando ejecuta un proceso en el sistema operativo, lo que hace que el equipo realice un trabajo. Sin embargo, hay otra manera de ver lo que es un comando: mirar su fuente. La fuente es de donde viene el comando "comes from" y hay varias fuentes diferentes de comandos dentro del shell de su CLI:
Lu Ma Mi Ju Vi Sa Do Lu Ma Mi Ju Vi Sa Do Lu Ma Mi Ju Vi Sa 123411 5 6 7 8 9 10 11 2 3 4 5 6 7 8 2 3 4 5 6 7 8 12 13 14 15 16 17 18 9 10 11 12 13 14 15 9 10 11 12 13 14 15 19 20 21 22 23 24 25 16 17 18 19 20 21 22 16 17 18 19 20 21 22 26 27 28 29 30 31 23 24 25 26 27 28 23 24 25 26 27 28 29
Comandos incorporados a la propia Shell: Un buen ejemplo es el cdcomando, ya que es parte de la shell bash . Cuando un usuario escribe el cdcomando, el shell de bash ya
30 31 abril mayo junio
Lu Ma Mi Ju Vi Sa Do Lu Ma Mi Ju Vi Sa Do Lu Ma Mi Ju Vi Sa 123451231234567 6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14 13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21 20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28 27 28 29 30 25 26 27 28 29 30 31 29 30 Julio agosto septiembre
1.3 Elegir un sistema operativo Usted ha aprendido que Linux es un sistema operativo similar a UNIX, lo que significa que no ha sufrido una certificación formal y por lo tanto no puede usar la marca UNIX oficial. Hay muchas otras alternativas; Algunos son UNIX-like y algunos están certificados como UNIX. También hay sistemas operativos no-Unix como Microsoft Windows. La pregunta más importante que se debe hacer al determinar la configuración de una máquina es "¿qué hará esta máquina?" Si necesita ejecutar software especializado que sólo se ejecuta en Oracle Solaris, eso es lo que necesitará. Si necesita ser capaz de leer y escribir documentos de Microsoft Office, entonces necesitará Windows o algo capaz de ejecutar LibreOffice o OpenOffice.
Lu Ma Mi Ju Vi Sa Do Lu Ma Mi Ju Vi Sa Do Lu Ma Mi Ju Vi Sa 1234512123456
Plataformas de hardware Linux comenzó como algo que sólo se ejecuta en una computadora como Linus ': un 386 con un controlador de disco duro específico. El rango de soporte creció, ya que la gente construyó soporte para otro hardware. ¡Eventualmente, Linux comenzó a soportar otros chips, incluyendo hardware que fue hecho para ejecutar sistemas operativos competitivos! Los tipos de hardware crecieron de la viruta humilde de Intel hasta los superordenadores. Posteriormente, los chips de menor tamaño, compatibles con Linux, se desarrollaron para adaptarse a dispositivos de consumo, llamados dispositivos integrados. El soporte para Linux se hizo omnipresente de tal manera que a menudo es más fácil construir hardware para soportar Linux y usar Linux como un trampolín para su software personalizado, que construir el hardware y el software personalizados desde cero. Finalmente, los teléfonos celulares y las tabletas comenzaron a correr con Linux. Una empresa, comprada más tarde por Google, creó la plataforma Android que es un paquete de Linux y el software necesario para ejecutar un teléfono o una tableta. Esto significa que el esfuerzo para conseguir un teléfono en el mercado es significativamente menor, y las empresas pueden gastar su tiempo innovando en el usuario frente a software en lugar de reinventar la rueda cada vez. Android es ahora uno de los líderes del mercado en el espacio. Aparte de los teléfonos y tabletas, Linux se puede encontrar en muchos dispositivos de consumo. Los enrutadores inalámbricos a menudo ejecutan Linux porque tiene un rico conjunto de características de red. El TiVo es un grabador de vídeo digital de consumo construido en Linux. A pesar de que estos dispositivos tienen Linux en el núcleo, los usuarios finales no tienen que saber. El software personalizado interactúa con el usuario y Linux proporciona la plataforma estable.
Puntos de decisión Lo primero que debe decidir es el papel de la máquina. ¿Estarás sentado en la consola ejecutando aplicaciones de productividad o navegación web? Si es así, usted tiene un escritorio. ¿Se utilizará la máquina como un servidor Web o de otra forma sentado en un rack de servidor en alguna parte? Estás viendo un servidor. Los servidores normalmente se sientan en un rack y comparten un teclado y un monitor con muchas otras computadoras, ya que el acceso a la consola sólo se utiliza para configurar y solucionar problemas del servidor. El servidor se ejecutará en modo no gráfico, que libera recursos p ara el propósito real d e la computadora. Un escritorio ejecutará principalmente una GUI. A continuación, determine las funciones de la máquina. ¿Hay software específico que necesita funcionar, o funciones específicas que necesita hacer? ¿Necesita ser capaz de administrar cientos o miles de estas máquinas al mismo tiempo? ¿Cuál es el conjunto de habilidades del equipo que administra el equipo y el software? También debe determinar la tolerancia de vida y de riesgo del servidor. Los sistemas operativos y actualizaciones de software vienen periódicamente, llamado ciclo de lanzamiento. Los proveedores de software solo soportarán versiones anteriores del software durante un cierto período de tiempo antes de no ofrecer ninguna actualización, lo que se denomina ciclo de mantenimiento (o ciclo de vida). Por ejemplo, las principales versiones de Fedora Linu x salen aproximadamente cada 6 meses. Las versiones se consideran Fin de Vida (EOL) después de 2 versiones principales más un mes, por lo que tiene entre 7 y 13 meses después de instalar Fedora antes de que necesite actualizar. Contraste esto con la variante de servidor comercial, Red Hat Enterprise Linux, y puedes ir hasta 13 años antes de tener que actualizar. Los ciclos de mantenimiento y lanzamiento son importantes porque en un entorno de servidor de empresa es mucho tiempo, y por lo tanto, raro, realizar una actualización importante en un servidor. En su lug ar, el servidor se sustituye cuando hay grandes
actualizaciones o reemplazos a la aplicación que requieren una actualización del sistema operativo. Del mismo modo, un ciclo de lanzamiento lento es i mportante porque las aplicaciones a menudo se dirigen a la versión actual del sistema operativo y se desea evitar la sobrecarga de actualización de servidores y sistemas operativos constantemente para mantenerse al día. Hay una buena cantidad de trabajo involucrado en la actualización de un servidor, y el rol de servidor a menudo tiene muchas personalizaciones que son d ifíciles de puerto a un nuevo servidor. Esto requiere muchas más pruebas qu e si sólo se actualizara la aplicación. Si usted está haciendo el desarrollo de software o trabajo de escritorio tradicional, a menudo quiere el último software. Un software más nuevo tiene mejoras tanto en la funcionalidad como en la apariencia, lo que contribuye a un mayor disfrute del uso de la computadora. Un escritorio a menudo almacena su trabajo en un servidor remoto, por lo que el escritorio puede limpiarse y el nuevo sistema operativo se pone con poca interrupción. Las versiones individuales de s oftware pueden caracterizarse como beta o estable. Una de las grandes ventajas de ser un desarrollador de código abierto es que puede lanzar su nuevo software y obtener rápidamente comentarios de los usuarios. Si una versión de software está en un estado en el qu e tiene muchas características nuevas que no han sido rigurosamente probadas, normalmente se conoce como beta. Después de que estas características se han probado en el campo, el software se mueve a un punto estable. Si necesita las funciones más recientes, entonces está buscando una distribución que tenga un ciclo de lanzamiento rápido y facilite el uso del software beta. En el lado del servidor, usted quiere un software estable a menos que esas nuevas características sean necesarias y no le importa ejecutar código que no ha sido completamente probado. Otro concepto vagamente relacionado es la compatibilidad con versiones anteriores . Esto se refiere a la capacidad de un sistema operativo posterior para ser compatible con el software creado para versiones anteriores. Esto suele ser una preocupación si necesita actualizar su sistema operativo, pero no está en condiciones de actualizar su software de aplicación. Por supuesto, el costo es siempre un factor. El propio Linux podría ser gratuito, pero es posible que tenga que pagar por el soporte, dependiendo de las opciones que elija. Microsoft tiene costos de licencia de servidor y puede tener costos de soporte adicionales durante la vida útil del servidor. El sistema operativo elegido sólo se puede ejecutar en una selección particular de hardware, lo que afecta aún más el costo.
para ser apoyadas por muchos años. La compatibilidad con versiones anteriores también es una prioridad para Microsoft, llegando incluso a agrupar la tecnología de la máquina virtual para que los usuarios puedan ejecutar software antiguo. En el dominio de servidor, hay Windows Server, actualmente (en este escrito) en la versión 2012 para denotar la fecha de lanzamiento. El servidor ejecuta una interfaz gráfica de usuario, pero en gran medida como una respuesta competitiva a Linux, ha hecho increíbles avances en las habilidades de secuencias de comandos de línea de comandos a través de PowerShell. También puede hacer que el servidor se vea como un escritorio con el paquete de experiencia de escritorio opcional. 1.3.3 Apple OS X Apple hace que el sistema operativo OS X, que ha sido sometido a la certificación UNIX. OS X se basa parcialmente en el software del proyecto FreeBSD. Por el momento, OS X es principalmente un sistema operativo de escritorio, pero hay paquetes opcionales que ayudan con la administración de servicios de red que permiten que muchos desktops OS X colaboren, como compartir archivos o tener u n inicio de se sión de red. OS X en el escritorio suele ser una decisión personal ya que muchos encuentran el sistema más fácil de usar. La creciente popularidad de OS X ha asegurado el apoyo saludable de los proveedores de software. OS X también es muy popular en las industrias creativas como la producción de vídeo. Esta es un área en la que las aplicaciones controlan la decisión del sistema operativo y, por lo tanto, la elección de hardware, ya que OS X se ejecuta en el hardware de Apple. 1.3.4 BSD Existen varios proyectos BSD (Berkely Software Distribution) de código abierto, como OpenBSD, FreeBSD y NetBSD. Estas son alternativas a Linux en muchos aspectos, ya que utilizan una gran cantidad de software común. Los BSD se implementan típicamente en la función de servidor, aunque también hay variantes como GNOME y KDE que se desarrollaron para funciones de escritorio. 1.3.5 Otros UNIX comerciales Algunos de los UNIXes comerciales más populares son:
1.3.2 Microsoft Windows El mundo de Microsoft divide los sistemas operativos según el propósito de la máquina: ¿escritorio o servidor? La edición de escritorio de Windows ha sufrido varios esquemas de nomenclatura con la versión actual (a partir de esta escritura) que es simplemente Windows 8. Las nuevas versiones del escritorio salen cada 3-5 años y tienden
Oracle Solaris IBM AIX HP-UX
Cada uno de estos se ejecuta en el hardware de sus respectivos creadores. El hardware es generalmente grande y potente, ofreciendo características tales como CPU y memoria de
intercambio en caliente, o integración con sistemas de mainframe antiguos también ofrecidos por el proveedor. A menos que el software requiere el hardware específico o las necesidades de la aplicación requieren parte de la redundancia incorporada en el hardware, la mayoría de las personas tienden a elegir estas opciones porque ya son usuarios de los productos de la empresa. Por ejemplo, IBM AIX se ejecuta en una amplia variedad de hardware de IBM y puede compartir hardware con mainframes. Por lo tanto, encontrará AIX en empresas que ya tienen una gran presencia de IBM, o que hacen uso de software de IBM como WebSphere.
1.3.6 Linux Un aspecto en el que Linux es muy diferente de las alternativas es que después de qu e un administrador haya elegido Linux todavía tienen que elegir una distribución. Recuerde del Tema 1 que la distribución empaqueta el kernel, las utilidades y las herramientas de administración de Linux en un paquete instalable y proporciona una manera de instalar y actualizar paquetes después de la instalación inicial. Algunos sistemas operativos están disponibles a través de un solo proveedor, como OS X y Windows, con soporte del sistema proporcionado a través del proveedor. Con Linux, hay múltiples opciones, desde ofertas comerciales para el servidor o el escritorio, hasta distribuciones personalizadas hechas para convertir una computadora vieja en un firewall de red.
1.3.7 Android Android, patrocinado por Google, es la distribución Linux más popular del mundo. Es fundamentalmente diferente de sus contrapartes. Linux es un kernel, y muchos de los comandos que serán cubiertos en este curso son en realidad parte del paqueteGNU (GNU no Unix). Es por eso que algunas personas insisten en usar el término GNU / Linux en lugar de Linux solo. Android utiliza la máquina virtual Dalvik con Linux, proporcionando una plataforma robusta para dispositivos móviles como teléfonos y tabletas. Sin embargo, a falta de los paquetes tradicionales que a menudo se distribuyen con Linux (como GNU y Xorg), Android es generalmente incompatible con las distribuciones Linux de escritorio. Esta incompatibilidad significa que un usuario de RedHat o Ubuntu no puede descargar software de Google Play Store. Del mismo modo, un emulador de terminal en Android carece de muchos de los comandos de sus homólogos de Linux. Sin embargo, es posible utilizar BusyBox con Android para que la mayoría de los comandos funcionen.
A menudo, los proveedores de aplicaciones elegirán un subconjunto d e distribuciones para dar soporte. Diferentes distribuciones tienen diferentes versiones de bibliotecas de claves y es difícil para una empresa apoyar todas estas versiones diferentes. Los gobiernos y las grandes empresas también pueden limitar sus opciones a las distribuciones que ofrecen apoyo comercial. Esto es común en las grandes empresas donde pagar por otro nivel de soporte es mejor que arriesgarse a interrupciones extensas. Varias distribuciones también tienen ciclos de lanzamiento, a veces tan a menudo como cada seis meses. Aunque no se requieren actualizaciones, cada versión sólo se puede admitir durante un período de tiempo razonable. Por lo tanto, algunas versiones de Linu x se consideran tener soporte a largo plazo (LTS) de 5 años o más, mientras que otras sólo serán compatibles por dos años o menos. Algunas distribuciones diferencian entre versiones estables, de prueba e inestables. La diferencia es que los inestables liberan la confiabilidad comercial de las funciones. Cuando las características se han integrado en el sistema durante mucho tiempo, y muchos de los errores y problemas abordados, el software se mueve a través de pruebas en la versión estable. La distribución de Debian advierte a los usuarios sobre los peligros de usar la versión "sid" con la siguiente advertencia:
'"Sid" está sujeta a cambios masivos ya actualizaciones de la biblioteca en el lugar. Esto puede resultar en un sistema muy "inestable" que contiene paquetes que no se pueden instalar debido a bibliotecas que faltan, dependencias que no pueden ser cumplidas, etc. ¡Utilícelo bajo su propio riesgo!
Androide Android, patrocinado por Google, es la distribución Linux más popular del mundo. Android utiliza la máquina virtual Dalvik con Linux, proporcionando una plataforma robusta para dispositivos móviles como teléfonos y tabletas. Android es generalmente incompatible con las distribuciones de Linux de escritorio. Sección 1.3.7 Beta y Estable Algunas distribuciones diferencian entre versiones estables, probables e inestables (beta). La diferencia es que los inestables liberan la confiabilidad comercial de las funciones. Cuando las características se han integrado en el sistema durante mucho tiempo, y muchos de los errores y problemas abordados, el software se mueve a través de pruebas en la versión estable. Sección 1.3.6 CentOS CentOS y otros similares (como Scientific Linux) son en gran parte compatibles con RHEL e integran algún software más reciente, pero no ofrecen el soporte pagado que hace Red Hat. Sección 1.2.4 Debian Debian es más un esfuerzo de la comunidad, y como tal, también promueve el uso de software de código abierto y la adhesión a los estándares. Debian creó su propio
sistema de gestión de paquetes basado en el formato de archivo .deb. Sección 1.2.4 Linux Mint Linux Mint se inició como una bifurcación de Ubuntu Linu x. Hay varias versiones, todas gratis, pero algunas incluyen codecs propietarios. Sección 1.2.4
NDG Linux Essentials - Chapter 2 - Open Source Applications and Licenses
Ciclos de mantenimiento Varias distribuciones también tienen ciclos de lanzamiento, a veces tan a menudo como cada seis meses. Aunque no se requieren actualizaciones, cada versión sólo se puede admitir durante un período de tiempo razonable. Sección 1.3.6 Abrir SUSE Open SUSE originalmente derivado de Slackware, pero incorpora muchos aspectos de Red Hat. Sección 1.2.4 sombrero rojo Red Hat comenzó como una distribución simple que introdujo el Administrador de paquetes de Red Hat (RPM). Con el tiempo, Red Hat comenzó a concentrarse más en las aplicaciones de servidor, como servidores de archivos y páginas web, y lanzó Red Hat Enterprise Linux, un servicio pagado en un ciclo de lanzamiento largo. Sección 1.2.4 Linux científico Scientific Linux es un ejemplo de distribución de u so específico basada en Red Hat. El proyecto es una distribución patrocinada por Fermilab diseñada para permitir la computación científica Sección 1.2.4 Ubuntu (LTS) Ubuntu es la distribución derivada más popular de Debian. Sección 1.2.4
En este capítulo nos familiarizaremos con varias aplicaciones y herramientas de código abierto. También hablaremos de software de código abierto y licencias. 2.2 Principales aplicaciones de código abierto El kernel de Linux puede ejecutar una amplia variedad de software a través de muchas plataformas de hardware. Una computadora puede actuar como un servidor , lo que significa que maneja principalmente datos en nombre de otros, o puede actuar como un escritorio, lo que significa que un usuario va a interactuar con él directamente. La máquina puede ejecutar software o puede ser utilizada como una máquina de desarrollo en el proceso de creación de software. Incluso puede ejecutar varios roles, ya que no hay distinción con Linux sobre el papel de la máquina; Simplemente se trata de configurar qué aplicaciones se ejecutan. Una ventaja de esto es que se pueden simular casi todos los aspectos de un entorno de producción, desde el desarrollo, hasta las pruebas, hasta la verificación en hardware escalado, lo que ahorra costes y tiempo. Como alguien que aprende Linux, puede ejecutar las mismas aplicaciones de servidor en su escritorio o un servidor virtual de bajo costo que se ejecutan en un gran proveedor de servicios de Internet. Por supuesto, usted no será capaz de manejar el volumen de un proveedor de gran tamaño, ya que tendrá un hardware mucho más caro. Pero puede simular casi cualquier configuración sin necesidad de hardware potente o licencia de servidor. El software de Linux generalmente cae en una de tres categorías:
JCA- CIST: Lic. Arthur Ponce de León Pino
Software de servidor - software que no tiene interacción directa con el monitor y el teclado de la máquina en la que se ejecuta. Su propósito es servir información a otros ordenadores, llamados clientes. A veces, el software del servidor puede no hablar con otras computadoras, pero sólo se quedará allí y "crujir" los datos. Software de escritorio: un navegador web, un editor de texto, un reproductor de música u otro software con el que interactúas. En muchos casos, como un navegador web, el software está hablando con un servidor en el otro extremo y la interpretación de los datos para usted. Aquí, el software de escritorio es el cliente. Herramientas - una categoría suelta de software que existe para que sea más fácil administrar su sistema. Puede que tengas una herramienta que te ayude a configurar tu pantalla, o algo que ofrezca un shell de Linux, o incluso herramientas más sofisticadas que convierten el código fuente en algo que el ordenador pueda ejecutar
Además, consideraremos aplicaciones móviles, principalmente para el beneficio del examen LPI. Una aplicación móvil se parece mucho a una aplicación de escritorio, pero se ejecuta en un teléfono o una tableta en lugar de una computadora de escritorio.
Cualquier tarea que desee realizar en Linux puede ser acomodada por cualquier número de aplicaciones. Hay muchos navegadores web, muchos servidores web y muchos editores de texto (los beneficios de cada uno son el tema de muchas gu erras santas UNIX). Esto no es diferente del mundo de código cerrado. Sin embargo, una ventaja de código abierto es que si alguien que no le g usta la forma en que funciona su servidor web, pueden empezar a construir sus propios. Una cosa que aprenderá a medida que avanza con Linux es cómo evaluar el software. A veces vas con el líder de la manada, a veces querrás mirar por encima del borde sangrante.
pueden desarrollar contenido a través de su navegador en la aplicación WordPress y el software lo convierte en un sitio web totalmente funcional. Cada vez que haces compras en línea, estás viendo un sitio dinámico. Apache es el servidor web dominante en uso hoy en día. Apache fue originalmente un proyecto independiente, pero el grupo ha formado desde entonces la Apache Software Foundation y mantiene más de un centenar de proyectos de software de código abierto. Otro servidor web es nginx , que se basa fuera de Rusia. Se centra en el rendimiento mediante el uso de kernels UNIX más modernos y sólo hace un subconjunto de lo que Apache puede hacer. Más del 65% de los sitios web son alimentados por ngi nx o Apache. El correo electrónico siempre ha sido un uso p opular para los servidores Linux. Cuando se habla de servidores de correo electrónico siempre es útil mirar los 3 roles diferentes necesarios para obtener correo electrónico entre personas:
2.2.1 Aplicaciones del servidor Linux se destaca en las aplicaciones de servidor en ejecución debido a su fiabilidad y eficiencia. Al considerar el software de servidor, la pregunta más importante es "¿qué servicio estoy corriendo?" ¡Si desea servir páginas web, necesitará software de servidor web, no un servidor de correo! Uno de los primeros usos de Linux fue para servidores web. Un servidor web aloja contenido para páginas web, que son vistas por un navegador web utilizando elprotocolo de transferencia de hipertexto (HTTP) o su sabor cifrado, HTTPS. La propia página web puede ser estática, lo que significa que cuando el navegador web solicita la página, el servidor web sólo envía el archivo tal como aparece en el disco. El servidor también pu ede servir contenido dinámico , lo que significa que la solicitud es enviada por el servidor web a una aplicación, que genera el contenido. WordPress es un ejemplo popular. Los usuarios
Agente de transferencia de correo (MTA): comprueba qué servidor necesita para recibir el correo electrónico y utiliza el Protocolo simple de transferencia de correo (SMTP) para mover el correo electrónico a ese servidor. No es raro que un correo electrónico tome varios "saltos" para llegar a su destino final, ya que una organización puede tener varios MTA. Mail Delivery Agent (MDA, también llamado Local Delivery Agent) - se encarga de almacenar el correo electrónico en el buzón del usuario. Generalmente se invoca desde el MTA final en la cadena. Servidor POP / IMAP - El protocolo de oficina de correos y el protocolo de acceso a mensajes de Internetson dos protocolos de comunicación que permiten a un cliente de correo electrónico que se ejecuta en su computadora hablar con un servidor remoto para recoger el correo electrónico.
Algunas veces un software implementará múltiples componentes. En el mundo de código cerrado, Microsoft Exchange implementa todos los componentes, por lo que no hay opción para realizar selecciones individuales. En el mundo de código abierto hay muchas opciones. Algunos servidores POP / IMAP implementan su propio formato de base de datos de correo para el rendimiento, por lo que también incluirá el MDA si se desea la base de datos personalizada. Las personas que usan formatos de archivo estándar (como todos los correos electrónicos en un archivo de texto) pueden elegir cualquier MDA. El MTA más conocido es sendmail . Postfix es otro popular y tiene como objetivo ser más simple y más seguro que sendmail. Si utiliza formatos de archivo estándar para almacenar mensajes de correo electrónico, el MTA también puede enviar correo. Alternativamente, puede usar algo comoprocmail , que le permite definir filtros personalizados para procesar el correo y filtrarlo.
Dovecot es un popular servidor POP / IMAP debido a su facilidad de uso y bajo mantenimiento. Cyrus IMAP es otra opción. Para compartir archivos, Samba es el claro ganador. Samba permite que una máquina Linux se parezca a una máquina Windows para poder compartir archivos y participar en un dominio de Windows. Samba implementa los componentes del servidor, como hacer que los archivos estén disponibles para compartir y ciertas funciones de servidor de Windows, y también el cliente final para que una máquina Linux pueda consumir un recurso compartido de archivos de Windows. Si tiene máquinas Apple en su red, el proyecto Netatalk permite que su máquina Linux se comporte como un servidor de archivos Apple. El protocolo de uso compartido de archivos nativo para UNIX se denomina Sistema de archivos de red (NFS) . NFS es generalmente parte del kernel, lo que significa que un sistema de archivos remoto puede ser montado como un disco normal, haciendo el acceso a archivos transparente para otras aplicaciones. A medida que su red de computadoras se hace más grande, tendrá que implementar algún tipo de directorio. El directorio más antiguo se llama Sistema de nombres de dominio y se utiliza para convertir un nombre como http://www.linux.com a una dirección IP como 192.168.100.100, que es un identificador único de ese equipo en Internet. DNS también contiene información global como la dirección del MTA para un nombre de dominio dado. Una organización puede querer ejecutar su propio servidor DNS para alojar sus nombres de cara pública, y también para servir como un directorio interno de servicios. El Consorcio de Software de Internet mantiene el servidor DNS más popular, simplemente llamado bind después del nombre del proceso que ejecuta el servicio. El DNS se centra principalmente en los nombres de los equipos y las d irecciones IP y no es fácil de buscar. Otros directorios han surgido para almacenar otra información, como cuentas de usuario y funciones de seguridad. El protocolo ligero de acceso a directorios (LDAP) es el directorio más común que también activa el Active Directory de Microsoft. En LDAP, un objeto se almacena en un árbol, y la posición de ese objeto en el árbol se puede utilizar para obtener información sobre el objeto, además de lo que se almacena con el propio objeto. Por ejemplo, un administrador de Linux puede ser almacenado en una rama del árbol llamada "departamento de TI", que está en una sucursal llamada "Operaciones". Así se puede encontrar todo el personal técnico mediante la búsqueda en la rama del departamento de TI. OpenLDAP es el jugador dominante aquí. Una última pieza de la infraestructura de red se denomina DHCP (Dynamic Host Configuration Protocolo). Cuando un equipo arranca, necesita una dirección IP para la red local para que pueda identificarse de forma única. El trabajo de DHCP es escuchar las solicitudes y asignar una dirección li bre desde el grupo DHCP. El Consorcio de Software de Internet también mantiene el servidor DHCP ISC , que es el jugador más común aquí.
Una base de datos almacena información y también permite una fácil recuperación y consulta. Las bases de datos más populares aquí son MySQL y PostgreSQL . Puede introducir cifras de ventas sin procesar en la base de datos y, a continuación, utilizar un lenguaje denominado Lenguaje de consulta estructurado (SQL) para agregar ventas por producto y fecha con el fin de producir un informe. 2.2.2 Aplicaciones de escritorio El ecosistema de Linux tiene una amplia variedad de aplicaciones de escritorio. Puede encontrar juegos, aplicaciones de productividad, herramientas creativas y mucho más. Esta sección es una mera encuesta de lo que está ahí fuera, centrándose en lo que el LPI considera más importante. Antes de examinar las aplicaciones individuales, es útil examinar el entorno de escritorio. Un escritorio Linux ejecuta un sistema llamado X Window , también conocido como X11. El servidor Linux X11 es X.org , que proporciona una forma para que el software funcione en un modo gráfico y acepte la entrada de un teclado y un ratón. Windows e iconos son manejados por otra pieza de software llamada el gestor de ventanas o el entorno de escritorio. Un administrador de ventanas es una versión más simple del entorno de escritorio, ya que sólo proporciona el código para dibujar menús y administrar las ventanas de la aplicación en la pantalla. Un entorno de escritorio capas en características como ventanas de inicio de sesión, sesiones, un administrador de archivos y otras utilidades. En resumen, Los encargados de la ventana incluyen Compiz , FVWM , y la aclaración , aunque hay muchos más. Los entornos de escritorio son principalmente KDE y GNOME , los cuales tienen sus propios gestores de ventanas. Tanto KDE como GNOME son proyectos maduros con una increíble cantidad de utilidades construidas contra ellos, y la elección es a menudo una cuestión de preferencia personal. Las aplicaciones básicas de productividad, como un procesador de textos, una hoja de cálculo y un paquete de presentación, son muy importantes. Colectivamente se les conoce como una suite de oficina , en gran parte debido a Microsoft Office, que es el jugador dominante en el mercado. OpenOffice (a veces llamado OpenOffice.org) y LibreOffice ofrecen una suite completa de oficina, incluyendo una herramienta de dibujo que se esfuerza por la compatibilidad con Microsoft Office tanto en términos de características y formatos de archivo. Estos dos proyectos son también un gran ejemplo de cómo la política influye en el código abierto. En 1999 Sun Microsystems adquirió una compañía alemana relativamente oscura que estaba haciendo una suite de oficina para Linux llamadaStarOffice . Poco después, Sun lo marcó de nuevo como OpenOffice y lo lanzó bajo una licencia de código abierto. Para complicar aún más las cosas, StarOffice siguió siendo un producto propietario que se basaba en OpenOffice. En 2010, Sun fue adquirida por Oracle, que más tarde convirtió el proyecto a la Fundación Apache.
Oracle ha tenido un pobre h istorial de soporte a proyectos de código abierto que adquiere, por lo que poco después de la adquisición de Oracle el proyecto se convirtió en LibreOffice. En ese momento se convirtió en dos grupos de personas que desarrollan la misma pieza de software. La mayor parte del impulso fue para el proyecto LibreOffice, por lo que se incluye de forma predeterminada en muchas distribuciones de Linux. Para navegar por la web, los dos principales contendientes son Firefoxy Google Chrome . Ambos son navegadores web de código abierto que son rápidos, ricos en funciones y tienen un excelente soporte para desarrolladores web. Estos dos paquetes son un buen ejemplo de cómo la diversidad es buena para el código abierto: las mejoras para estimular al otro equipo a probar y mejor al otro. Como resultado, Internet tiene dos excelentes navegadores que empujan los límites de lo que se puede hacer en la web y funcionan a través de una variedad de plataformas. El proyecto Mozilla también ha salido con Thunderbird , un completo cliente de correo electrónico de escritorio. Thunderbird se conecta a un servidor POP o IMAP, muestra correo electrónico localmente y envía correo electrónico a través de un servidor SMTP externo. Otros clientes de correo electrónico notables son Evolution y KMail, que son los clientes de correo electrónico del proyecto GNOME y KDE. La estandarización a través de POP e IMAP y formatos de correo electrónico locales significa que es fácil cambiar entre los clientes de correo electrónico sin perder datos. Correo electrónico basado en Web es también otra opción. Para los tipos de creatividades, hay Blender , GIMP y Audacity que manejan la creación de películas en 3D, la manipulación de imágenes en 2D y la edición de audio, respectivamente. Han tenido varios grados de éxito en los mercados profesionales. Blender se utiliza para todo, desde películas independientes a películas de Hollywood, por ejemplo. 2.2.3 Herramientas de consola La historia del desarrollo de UNIX muestra una considerable superposición entre las habilidades de desarrollo de software y administración de sistemas. Las herramientas que le permiten administrar el sistema tienen características de los lenguajes de la computadora, tales como bucles, y algunos lenguajes de la computadora se utilizan ampliamente en la automatización de las tareas de administración de sistemas. Por lo tanto, uno debe considerar estas habilidades complementarias. En el nivel básico, interactúa con un sistema Linux a través de un shell, no importa si se está conectando al sistema de forma remota o desde un teclado adjunto. El trabajo del shell es aceptar órdenes, como manipulaciones de archivos e iniciar aplicaciones, y pasarlas al kernel de Linux para su ejecución. Aquí mostramos una interacción típica con el shell de Linux:
Sysadmin @ localhost : ~ $ ls -l /tmp/*.gz -rw-r - r-- 1 sean root 246841 Mar 5 2013 /tmp/fdboot.img.gz Sysadmin @ localhost : ~ $ rm /tmp/fdboot.img.gz El usuario recibe un aviso, que normalmente termina en un signo de dólar $para indicar una cuenta no privilegiada. Cualquier cosa antes de la solicitud, en este caso sysadmin@localhost:~, es un indicador configurable que proporciona información adicional al usuario. En la figura anterior, sysadmines el nombre d el usuario actual, localhostes el nombre del servidor y ~es el directorio actual (en UNIX, el símbolo tilde es un breve formulario para el directorio personal del usuario). Veremos los comandos de Linux con más detalle en otros capítulos, pero para terminar la explicación, el primer comando lista los archivos con el lscomando, recibe alguna información sobre el archivo y, a continuación, elimina ese archivo con el rmcomando. El shell de Linux proporciona un rico lenguaje para iterar sobre archivos y personalizar el entorno, todo sin salir del shell. Por ejemplo, es posible escribir una sola línea de comandos que encuentre archivos con contenido que coincida con un patrón determinado, extraiga información útil del archivo y luego copie la nueva información en un nuevo archivo. Linux ofrece una variedad de conchas para elegir, la mayoría difiriendo en cómo y qué se puede personalizar, y la sintaxis del lenguaje de scripting incorporado. Las dos familias principales son el shell Bourne y el shell C . El shell Bourne fue nombrado después de que el creador y el shell C fue nombrado porque la sintaxis toma prestado fuertemente desde el lenguaje C. Como ambas cáscaras fueron inventadas en la década de 1970 hay versiones más modernas, la Bourne Again Shell (Bash) y la tcsh(tee-cee-shell). Bash es el shell por defecto en la mayoría de los sistemas, aunque casi puede estar seguro de que tcsh está disponible si esa es su preferencia. Otras personas tomaron sus características favoritas de Bash y tcsh y han hecho otras conchas, como el Korn shell (ksh) y zsh La elección de los depósitos es principalmente personal. Si puede sentirse cómodo con Bash entonces puede operar eficazmente en la mayoría de los sistemas Linux. Después de que usted puede ramificarse y probar conchas nuevas para ver si ayudan a su productividad. Incluso más división que la selección de los depósitos es la elección de los editores de texto. Un editor de texto se utiliza en la consola para editar archivos de configuración. Los dos campos principales son vi (o los vim más modernos) y emacs . Ambos son herramientas muy potentes para editar archivos de texto, que difieren en el formato de los comandos y la forma de escribir plugins para ellos. Los complementos podrían ser cualquier cosa, desde el resaltado de sintaxis de los proyectos de software hasta los calendarios integrados.
Ambos vim y emacs son complejos y tienen una curva de aprendizaje empinada. Esto no es útil si todo lo que necesita es la edición sencilla de un pequeño archivo de texto. Por lo tanto, pico y nano están disponibles en la mayoría de los sistemas (este último es un derivado del primero) y proporcionan una edición de texto muy básica. Incluso si usted elige no utilizar viusted debe esforzarse para ganar una cierta familiaridad básica porque el vibásico está en cada sistema de Linux. Si está restaurando un sistema Linux roto ejecutándose en el modo de recuperación de la distribución, está seguro de tener vi disponible. Si tiene un sistema Linux, deberá agregar, quitar y actualizar el software. En un momento, esto significó descargar el código fuente, configurarlo, construirlo y copiar archivos en cada sistema. Afortunadamente, las distribuciones crearon paquetes que son copias comprimidas de la aplicación. Un gestor de paquetes se encarga de hacer un seguimiento de los archivos que pertenecen a qué paquete e incluso descargar actualizaciones de un servidor remoto llamado un repositorio. En los sistemas Debian las herramientas incluyen dpkg , apt-get y apt-cache . En los sistemas derivados de Red Hat, se utilizan rpmy yum . Más adelante veremos los paquetes. 2.2.4 Herramientas de desarrollo No debería sorprendernos que, como software construido sobre las contribuciones d e los programadores, Linux tiene un excelente soporte para el desarrollo de software. Las cáscaras se construyen para ser programables y hay redactores de gran alcance incluidos en cada sistema. También hay muchas herramientas de desarrollo disponibles, y muchos lenguajes modernos tratan a Linux como un ciudadano de primera clase. Los lenguajes de computadora proporcionan una manera para que un programador incorpore instrucciones en un formato más legible por el humano, y para que esas instrucciones finalmente se conviertan en algo que la computadora entiende. Los idiomas caen en uno de los dos campos: interpretado o compilado. Un lenguaje interpretado traduce el código escrito en código de computadora a medida que el p rograma se ejecuta, y un lenguaje compilado se traduce a la vez. El propio Linux se escribió en un lenguaje compilado llamado C. El principal beneficio de C es que el propio lenguaje se correlaciona con el código de la máquina generada para que un programador experto pueda escribir código que sea pequeño y eficiente. Cuando la memoria del ordenador se midió en los Kilobytes, esto era muy importante. Incluso con grandes tamaños de memoria hoy en día, C sigue siendo útil para escribir código que debe ejecutarse rápidamente, como un sistema operativo. C se ha extendido con los años. Hay C + +, que agrega soporte de objetos a C (un estilo diferente de programación), y el Objetivo C que tomó otra dirección y está en uso intenso en los productos de Apple.
El lenguaje Java toma un giro diferente en el enfoque compilado. En lugar de compilar código de máquina, Java primero imagina una CPU hipotética llamada Java Virtual Machine (JVM) y compila todo el código para eso. Cada computadora host entonces ejecuta el software JVM para traducir las instrucciones de JVM (ll amadas bytecode) en instrucciones nativas. La traducción extra con Java podría hacer pensar que sería lento. Sin embargo, la JVM es bastante simple por lo que se puede implementar rápida y confiablemente en cualquier cosa, desde una computadora potente a un dispositivo de bajo consumo que se conecta a una televisión. ¡Un archivo Java compilado también se puede ejecutar en cualquier computadora que implemente la JVM! Otro beneficio de la compilación a un objetivo intermedio es que la JVM puede proporcionar servicios a la aplicación que normalmente no estaría disponible en una CPU. Asignar memoria a un programa es un problema complejo, pero eso está integrado en la JVM. Esto también significa que los fabricantes de JVM pueden enfocar sus mejoras en la JVM como un todo, por lo que cualquier progreso que realicen esté disponible instantáneamente para las aplicaciones. Los lenguajes interpretados, por otra parte, se traducen a código de máquina mientras que ejecutan. El poder de la computadora extra gastado haciendo esto a menudo puede ser recuperado por el aumento de la productividad del programador gana por no tener que dejar de trabajar para compilar. Los i diomas interpretados también tienden a ofrecer más características que los lenguajes compilados, lo que significa que a menudo se necesita menos código. ¡El propio intérprete de lenguaje está escrito en otro idioma como C, ya veces incluso Java! Esto significa que se está ejecutando un lenguaje interpretado en la JVM, que se traduce en tiempo de ejecución en código de máquina real. Perl es un lenguaje interpretado. Perl fue desarrollado originalmente para realizar la manipulación de texto. Con el paso de los años, ganó el favor de los administradores de sistemas y sigue siendo mejorado y utilizado en todo, desde la automatización hasta la construcción de aplicaciones web. PHP es un lenguaje que fue creado originalmente para crear páginas web dinámicas. Un archivo PHP es leído por un servidor web como Apache. Las etiquetas especiales en el archivo indican que partes del código deben interpretarse como instrucciones. El servidor web reúne todas las diferentes partes del archivo y lo envía al navegador web. Las principales ventajas de PHP son que es fácil de aprender y está disponible en casi cualquier sistema. Debido a esto, muchos proyectos populares se basan en PHP. Ejemplos notables incluyen WordPress (blogging), cactus (para el monitoreo), e incluso partes de Facebook. Ruby es otro idioma que fue influenciado por Perl y Shell, junto con muchos otros idiomas. Hace las tareas de programación complejas relativamente fáciles, y con la inclusión del marco de Ruby on Rails, es una opción popular para la construcción de aplicaciones web complejas. Ruby es también el lenguaje que potencia muchas de las
principales herramientas de automatización como Chef y Puppet, que hacen que la gestión de un gran número de sistemas Linux sea mucho más fácil. Python es otro lenguaje de scripting que es de uso común. Al i gual que Ruby facilita tareas complejas y tiene un marco llamado Django que hace que la construcción de aplicaciones web sea muy fácil. Python tiene excelentes habilidades de procesamiento estadístico y es un favorito en la academia. Un idioma es sólo una herramienta que hace más fácil decirle a la computadora lo que usted quiere que haga. Una biblioteca agrupa tareas comunes en un paquete distinto que puede ser utilizado por el desarrollador. ImageMagick es una de esas bibliotecas que permite a l os programadores manipular i mágenes en código. ImageMagick también incluye algunas herramientas de línea de comandos que le permiten procesar imágenes desde un shell y aprovechar las capacidades de scripting allí. OpenSSL es una biblioteca criptográfica que se utiliza en todo, desde servidores web a la línea de comandos. Proporciona una interfaz estándar para que pueda agregar criptografía a su script Perl, por ejemplo. En un nivel mucho más bajo está la biblioteca C. Esto proporciona un conjunto básico de funciones para leer y escribir en archivos y pantallas, que es utilizado por aplicaciones y otros lenguajes por igual. 2.3 Descripción del software de código abierto y licencias Cuando hablamos de comprar software hay tres componentes distintos:
Propiedad - ¿A quién pertenece la propiedad intelectual detrás del software? Transferencia de dinero - ¿Cómo cambia el dinero, si es que lo hace? Licencias - ¿Qué obtienes? ¿Qué se puede hacer con el software? ¿Se puede usar en un solo ordenador? ¿Se puede dar a alguien más?
En la mayoría de los casos, la propiedad del software permanece con la persona o compañía que lo creó. A los usuarios sólo se les otorga una licencia para usar el software. Esta es una cuestión de derecho de autor. La transferencia de dinero depende del modelo de negocio del creador. Es la licencia que realmente diferencia software de código abierto de softwarede código cerrado. Dos ejemplos contrastantes harán que las cosas comiencen. Con Microsoft Windows, Microsoft Corporation posee la propiedad intelectual. La licencia en sí, el Contrato de Licencia de Usuario Final (EULA), es un documento legal personalizado al que debe hacer clic, indicando su aceptación, para instalar el software. Microsoft mantiene el código fuente y distribuye sólo copias binarias a través de canales autorizados. Para la mayoría de los productos de consumo se le permite instalar el software en una computadora y no se les permite hacer copias del disco que no sea para
una copia de seguridad. No se le permite hacer ingeniería inversa del software. Usted paga por una copia del software, que le da pequeñas actualizaciones, pero no grandes actualizaciones. Linux es propiedad de Linus Torvalds. Ha colocado el código bajo una licencia llamadaGNU Public License versión 2 (GPLv2) . Esta licencia, entre otras cosas, dice que el código fuente debe estar disponible para cualquier persona que pida y que se le permita hacer los cambios que desee. Una advertencia a esto es que si usted hace cambios y los distribuye, usted debe poner sus cambios bajo la misma licencia de modo que otros puedan beneficiar. GPLv2 también dice que no se le permite cobrar por distribuir el código fuente que no sea el costo real de hacerlo (por ejemplo, copiarlo a medios extraíbles). En general, cuando crea algo, también obtiene el derecho de decidir cómo se utiliza y distribuye. Software Libre y Software Abierto (FOSS) se refiere al software donde se ha dado este derecho y se le permite ver el código fuente y redistribuirlo. Linus Torvalds ha hecho eso con Linux, aunque creó Linux, no puede decirle que no puede usarlo en su computadora porque ha renunciado a ese derecho a través de la licencia GPLv2. La concesión de licencias de software es un asunto político y no debería sorprender que haya muchas opiniones diferentes. Las organizaciones han llegado con su propia licencia que encarna sus puntos de vista particulares por lo que es más fácil elegir una licencia existente que llegar a su cuenta. Por ejemplo, universidades como el Instituto de Tecnología de Massachusetts (MIT) y la Universidad de California han obtenido licencias, al igual que proyectos como la Fundación Apache. Además, grupos como la Free Software Foundation han creado sus propias licencias para promover su agenda. 2.3.1 La Fundación de Software Libre y el Open Source I Dos grupos pueden ser considerados como las fuerzas más influyentes en el mundo del código abierto: la Free Software Foundation (FSF) y la Open Source Initiative (OSI) . La Fundación para el Software Libre fue fundada en 1985 por Richard Stallman (RMS) . El objetivo de la FSF es promover el Software Libre. El Software Libre no se refiere al precio, sino a la libertad de compartir, estudiar y modificar el código fuente subyacente. Es la opinión de la FSF que el software propietario (software distribuido bajo una licencia de código cerrado) es malo. FSF también defiende que las licencias de software deben hacer cumplir la apertura de las modificaciones. Es su pun to de vista que si modifica el software libre que debe ser obligado a compartir sus cambios. Esta filosofía específica se llama copyleft . La FSF también aboga por patentes de software y actúa como un perro guardián para las organizaciones de estándares, hablando cuando un estándar propuesto puede violar los principios del Software Libre al incluir artículos como Digital Rights Management (DRM) que podrían restringir lo que usted podría hacer con el servicio.
La FSF ha desarrollado su propio conjunto de licencias, como GPLv2 y GPLv3, y las licencias Lesser GPL versiones 2 y 3 (LGPLv2 y LGPLv3). Las licencias menores son muy similares a las licencias regulares, excepto que tienen disposiciones para la vinculación contra el software no libre. Por ejemplo, bajo GPLv2 no puede redistribuir el software que utiliza una biblioteca de código cerrado (como un controlador de hardware), pero la variante menor lo permite.
2.3.2 Más términos para la misma cosa En lugar de detenerse sobre los puntos más finos de Open Source vs Software Libre, la comunidad ha comenzado a referirse a todo como software libre y de código abierto (FOSS). La palabra inglesa "libre" puede significar "libre como en el almuerzo" (como sin costo) o "libre como en el discurso" (como sin restricciones). Esta ambigüedad ha llevado a la inclusión de la palabra libre para referirse a esta última definición. Por lo tanto, terminamos con Free / Libre / Open Source Software (FLOSS).
Los cambios entre la versión 2 y 3 se centran en gran medida en el uso de software libre en un dispositivo de hardware cerrado que se ha acuñado Tivoization . TiVo es una empresa que construye una grabadora de televisión digital en su propio hardware y utiliza Linux como base para su software. Mientras TiVo lanzó el código fuente a su versión de Linux como se requiere bajo GPLv2, el hardware no ejecutaría ningún binario modificado. A los ojos de la FSF esto fue en contra del espíritu de la GPLv2 por lo que añadió u na cláusula específica a la versión 3 de la licencia. Linus Torvalds está de acuerdo con TiVo en este asunto y ha decidido quedarse con GPLv2.
Si bien estos términos son convenientes, ocultan las diferencias entre las dos escuelas de pensamiento. Como mínimo, cuando usas software FOSS, sabes que no tienes que pagar por ello y puedes redistribuirlo como desees. 2.3.3 Otros esquemas de licencias Las licencias FOSS están relacionadas principalmente con software. La gente ha colocado obras como dibujos y planes bajo licencias de software libre, pero esto no era la intención.
La Iniciativa de Código Abierto fue fundada en 1998 por Bruce Perens y Eric Raymond (ESR) . Ellos creen que el Software Libre era demasiado cargado políticamente y que las licencias menos extremas eran necesarias, particularmente alrededor de los aspectos copyleft de las licencias FSF. OSI cree que no sólo la fuente debe estar libremente disponible, sino también que no debe haber restricciones sobre el uso del software, no importa cuál sea el uso previsto. A diferencia del FSF, el OSI no tiene su propio conjunto de licencias. En su lugar, el OSI tiene un conjunto de principios y agrega otras licencias a esa lista si cumplen esos principios, llamados licencias de código abierto. Por lo tanto, el software que se conforma a una licencia de código abierto es el Software de Código Abierto. Algunas de las licencias de código abierto son la familia de licencias BSD, que son mucho más simples que la GPL. Se limitan a indicar que puede redistribuir el origen y binarios siempre y cuando mantenga avisos de derechos de autor y no implique que el creador original respalda su versión. En otras palabras, "haga lo que quiera con este software, simplemente no diga que lo escribió". La licencia del MIT tiene mucho el mismo espíritu, sólo con palabras diferentes. Las licencias FSF, como GPLv2, también son licencias de código abierto. Sin embargo, muchas licencias de código abierto como BSD y MIT no contienen las disposiciones de copyleft y por lo tanto no son aceptables para la FSF. Estas licencias se denominan licencias de software libre permisivas porque son permisivas en cómo se puede redistribuir el software. Usted puede tomar el software licenciado de BSD e incluirlo en un producto cerrado del software mientras usted dé la atribución apropiada.
Cuando el software ha sido colocado en el dominio público, el autor ha renunciado a todos los derechos, incluyendo los derechos de autor sobre la obra. En algunos países, este es el predeterminado cuando el trabajo es realizado por una agencia gubernamental. En algunos países, el trabajo con derechos de autor pasa a ser de dominio público después de que el autor haya muerto y haya transcurrido un largo período de espera. La organización Creative Commons (CC) ha creado las Licencias Creative Commons que tratan de abordar las intenciones detrás de las licencias FOSS para entidades que no son software. Las licencias de CC también pueden usarse para restringir el uso comercial si eso es el deseo del titular de los derechos de autor. Las licencias de CC son:
JCA- CIST: Lic. Arthur Ponce de León Pino
Atribución (CC BY) - al igual que la licencia BSD, puede utilizar el contenido CC BY para cualquier uso, pero debe acreditar al titular de los derechos de autor Atribución ShareAlike (CC BY-SA) - una versión copyleft de la licencia de Atribución. Las obras derivadas deben ser compartidas bajo la misma licencia, como en los ideales del Software Libre Atribución No Derivada (CC BY-ND) - puede redistribuir el contenido bajo las mismas condiciones que CC-BY pero no puede cambiarlo Atribución-No comercial (CC BY-NC) - al igual que CC BY, pero no se puede utilizar con fines comerciales Attribution-NonCommercial-ShareAlike (CC-BY-NC-SA) - Se basa en la licencia CC BY-NC pero requiere que sus cambios sean compartidos bajo la misma licencia. Atribución-No Comercial-Sin Derivados (CC-BY-NC-ND) - Usted está compartiendo el contenido para ser utilizado con fines no comerciales, pero la gente no puede cambiar el contenido. No hay derechos reservados (CC0) - Esta es la versión Creative Commons del dominio público.
Las licencias anteriores pueden resumirse como ShareAlike o sin restricciones, y si se permite o no uso comercial o derivaciones. 2.3.4 Modelos de negocio de código abierto Si usted está dando su software de forma gratuita, ¿cómo puede ganar dinero de él? La forma más sencilla de ganar dinero es vender soporte o garantía en el software. Usted puede ganar dinero instalando el software para las personas, ayudando a las personas cuando tienen problemas o corrigiendo errores por dinero. Usted es efectivamente un consultor. Puede empaquetar hardware o agregar software de código cerrado adicional para vender junto con el software libre. Los aparatos y sistemas embebidos que utilizan Linux pueden ser desarrollados y vendi dos. Muchos firewalls de consumo y dispositivos de entretenimiento siguen este modelo. También puede desarrollar software de código abierto como parte de su trabajo. Si usted crea una herramienta para hacer su vida más fácil en su trabajo regular que puede ser capaz de convencer a su empleador para que l e abra la fuente. Puede ser una situación en la que estaba trabajando en el software mientras se paga, pero la concesión de licencias como código abierto permitiría que otras personas con el mismo problema se les ayude e incluso contribuir. En la década de 1990, Gerald Combs trabajaba en u n proveedor de servicios de Internet y comenzó a escribir su propia herramienta de análisis de red porque herramientas similares en ese momento eran muy caras. Más de 600 personas han contribuido al proyecto, llamado Wireshark. Ahora se considera a menudo mejor que las ofertas comerciales y ha llevado a una compañía que se está formando alrededor de Gerald para apoyar Wireshark y para vender los productos y la ayuda que lo hacen más útil. Esta compañía fue comprada más tarde por un proveedor de red grande que apoya su desarrollo. Otras empresas obtener un valor tan inmenso de software de código abierto que encuentran vale la pena su tiempo para contratar a la gente a trabajar en el software a tiempo completo. El buscador Google ha contratado al creador del lenguaje de la computadora Python, e incluso Linus Torvalds es contratado por la Fundación Linux para trabajar en Linux. La compañía telefónica estadounidense AT & T obtiene tal valor de los proyectos de Ruby y Rails por su propiedad Yellow Pages que tienen un empleado que no hace nada más que trabajar para esos proyectos. Una manera final de que la gente gane dinero indirectamente a través de código abierto es que es una manera abierta de juzgar sus habilidades. Una cosa es decir que realizó ciertas tareas en su trabajo, pero mostrar su creación y compartirlo con el mundo permite a los posibles empleadores ver la calidad de su trabajo. Del mismo modo, las empresas han encontrado que el código abierto de partes no críticas de su software interno atrae el interés de las personas de mayor calibre.
NDG Linux Essentials - Capítulo 3 - Uso de Linux Antes de que pueda convertirse en un administrador de sistemas Linux eficaz, debe ser capaz de utilizar Linux como un escritorio y tener dominio de las habilidades básicas de Tecnologías de la Información y la Comunicación (TIC). No sólo le ayudará cuando se trata de usuarios, sumergirse en Linux ayudará a mejorar sus habilidades más rápidamente. ¡Además, la vida de un administrador de sistemas es algo más que trabajo de servidor - hay correo electrónico y documentación para h acer! 3.2 Modo Gráfico vs No Gráfico Linux se puede utilizar de dos maneras: gráfica y no gráfica. En el modo gráfico, sus aplicaciones viven en ventanas que pueden cambiar de tamaño y moverse. Tienes menús y herramientas para ayudarte a encontrar lo que buscas. Aquí es d onde usará un navegador web, sus herramientas de edición de gráficos y su correo electrónico. Aquí vemos un ejemplo del escritorio gráfico, con una barra de menú de aplicaciones populares a la izquierda y un documento LibreOffice que se está editand o con un navegador web en segundo plano. En el modo gráfico, puede tener varios shells abiertos, lo cual es muy útil cuando está realizando tareas en varios equipos remotos. Incluso inicia sesión con su nombre de usuario y contraseña a través de una interfaz gráfica. En la figura siguiente se muestra un ejemplo de un inicio de sesión gráfico. netacad.com Art09762345 JCA- CIST: Lic. Arthur Ponce de León Pino
Después de iniciar sesión, se le llevará al escritorio donde puede cargar aplicaciones. El modo no gráfico comienza con un inicio de sesión basado en texto, que se muestra a continuación. Se le pedirá simplemente su nombre de usuario y después de eso, su contraseña. Si el inicio de sesión es correcto, se le llevará directamente a un shell. En modo no gráfico, no hay ventanas para moverse. Aunque tenga editores de texto, navegadores web y clientes de correo electrónico, solo son texto. Así es como UNIX tuvo su inicio antes de que los entornos gráficos fueran la norma. La mayoría de los servidores se ejecutará en este modo también, ya que la gente no inicia sesión en ellos directamente, lo que hace una interfaz gráfica un desperdicio de recursos. A continuación, se muestra un ejemplo de la pantalla que puede ver después de iniciar sesión. Puede ver el aviso original para iniciar sesión en la parte superior con el texto más reciente agregado a continuación. Durante el inicio de sesión, es posible que vea algunos mensajes, llamados el mensaje del día (MOTD), que es una oportunidad para que el adm inistrador de sistemas pase información a los usuarios. Después de MOTD es el símbolo del sistema. En el ejemplo anterior, el usuario ha introducido el comando w, que muestra quién está
conectado. A medida que se introducen y procesan nuevos comandos, la ventana se desplaza hacia arriba y el texto antiguo se pierde en la parte superior. El propio terminal es responsable de mantener cualquier historial, tal como permitir al usuario desplazarse hacia arriba y ver comandos previamente introducidos. En lo que respecta a Linux, lo que está en la pantalla es todo lo que hay. No hay nada para moverse. 3.3 Línea de comandos La línea de comandos es una entrada de texto simple que le permite introducir cualquier cosa, desde comandos de una palabra hasta secuencias complicadas. Si inicia sesión a través del modo de texto, se encuentra inmediatamente en la consola. Si inicia sesión gráficamente, deberá iniciar un shell gráfico que sea una consola de texto con una ventana a su alrededor para que pueda cambiar el tamaño y moverla. Cada escritorio Linux es diferente, por lo que tendrá que mirar alrededor de sus menús para una opción llamada terminal o término x . Ambos son conchas gráficas, que se diferencian principalmente en apariencias en lugar de funcionalidad. Si tiene una herramienta de búsqueda como Ubuntu One, puede buscar terminal , como se muestra aquí. Estas herramientas le permiten buscar rápidamente en su sistema exactamente lo que desea ejecutar en lugar de buscar a través de menús.
View more...
Comments