Menú principal

Escuela de GNU/Linux

Publicado por makubex, Febrero 10, 2009, 11:03:30 AM

Tema anterior - Siguiente tema

makubex

Bueno ya que hay una escuela de C++ tambien quisiera colaborar con una escuela de GNU/Linux ya que he visto interes de parte de varios por experimentar y aprender de este bonito sistema.

Y para iniciar hay que aclarar un par de conceptos:

Sistema Operativo: Es el programa principal de la computadora, el administrador de todo lo que esta conectado, sin un sistema operativo nuestro hardware no se puede usar.
El sistema operativo mas popular es Microsoft Windows (¿Apoco alguien no lo sabia?), aunque no es el único ni mucho menos el mejor.
Existen otra series de sistemas operativos, uno de los mejores es el Mac OS X, vanguardista e innovador desde sus comienzos, teniendo una interfas grafica incluso antes que windows, solo precedida porPARC User Interface de Xerox.

Ademas han existido otros sistemas operativos, talves el mas importante en la historia de la informatica sea el UNIX, creado por un par de Hackers (Ken Tompson y Dennis Ritchie) en los laboratorios de AT&T.  UNIX ha sido usado en el area de servidores, y ha sido la base de mas de 100 sistemas operativos desde ese entonces:
4.4 BSD (Berkeley Software Distribution),
NetBSD, OpenBSD, FreeBSD, PC-BSD, HP-UX, Darwin, NeXTStep, MAC OS X, GNU/HURD, Minix y finalmente GNU/Linux entre los mas importantes, y todos diferentes entre si, aunque similares gracias a que todos siguen un estandar llamado POSIX (El cual no sigue windows).
Existen otros sistemas menos importantes como Syllable, Amiga OS, AtheOS, ReactOS, Symbian, FreeDOS, Solaris de SUN y algunos diseñados para dispositivos especificos.

Cuando compramos un disco nuevo, no trae sistema operativo, asi que instalamos windows, que nos deja unicamente con un block de notas y un par de herramientas más.  Todas las otras aplicaciones las tenemos que instalar una por una porque no forman parte de la base del sistema operativo.

ENTENDIENDO UN POCO MAS:
El Sistema Operativo tiene un Nucleo, es decir un programa central a partir del cual se ejecutan los demas. Este nucleo se encarga de administrar los dispositivos, de administrar las particiones y el arbol de directorios de nuestro sistema, de administrar la memoria y otro monton de cosas mas.
Despues estan las aplicaciones del sistema, la parte que nosotros vemos, como es nuestro entorno grafico, nuestro administrador de archivos, los controladores de red, de la tarjeta de video, etc...

El nucleo o Kernel del sistema en cuestion se llama Linux, desarrollado por Linus Torvalds y esta basado en Minix que a su vez esta basado en otro UNIX*. El resto de las aplicaciones que rodean al Kernel son la base de un proyecto llamado GNU (GNU Not´s Unix o GNU no es Unix) encabezado por Richard Stallman (Si... Otro Hacker) y que actualmente es uno de los sistemas mas estables tanto para el escritorio como para  los servidores...

Y es asi como termina la introduccion historica.. Despues veremos para que nos puede servir GNU/Linux, que necesitamos para instalarlo, y que es GNU/HURD
#apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||  
*  /\---/\
    ~~   ~~  
...."Have you mooed today?"...

Software Libre para una Sociedad Libre

makubex

#1
Understanding the GNU/Linux System

Bueno el titulo esta algo exagerado pero es lo que trataremos de hacer aqui: Explicar algunas particularidades del sistema:

Como primer punto Linux no es un clon de Windows, es mas bien un simil de Unix (Unix Like) y por tanto hay muchas diferencias y entre las mas importantes las siguientes:

1. No podremos ejecutar nuestros programas de Windows en Linux, asi sean .exe o .com, en linux los ejecutables son llamados binarios y son especiales para este sistema.
2. Linux posee un sistema de archivos muy diferente al de Windows... No encontraremos las clasicas unidades C: o D: sino que todos los dispositivos son representados como directorios, y todos los directorios parten de un directorio principal llamado simplemente "/". Debido a esto, para accesar a nuestro cd-rom generalmente se tiene que "montar" el dispositivo en algun directorio, dependiendo de la distribucion se hace en /media/cdrom o en /mnt/cdrom. Mas adelante hablaremos sobre montar dispositivos, ya que se puede hacer en cualquier parte del sistema, y debemos aprender a montar cdroms, particiones, discos duros, disquettes si todavia los usamos, usbs, etc...
3. En linux se puede trabajar de dos formas: Modo texto o modo grafico.
   - El modo texto es representado por una linea de comandos llamada terminal y es similar a la pantalla del ms-dos. No se debe menospreciar este modo de trabajo, pues a diferencia del MS-DOS, muchas potentes herramientas estan desarrolladas eclusivamente para modo texto, hablemos de EMACs y Vi dos herramientas para programar en C, Pearl, Python, etc.. o el Midnight Commander que es un administrador de archivos, y la lista es larga
   - El modo grafico es MUY diferente al de Windows, esta determinado por un servidor de graficos llamado Xorg y un administrador de ventanas o en el mejor de los casos por un Ambiente de Escritorio.  Como dijo Jack el Destripador: Vamos por partes:

El Xorg es simplemente la plataforma base donde instalaremos nuestro manejador de ventanas, si no tenemos uno, nuestro Xorg mostrara una pantalla finamente cuadriculada y una espantosa X que es el puntero de nuestro raton. Despues de eso hay que instalar cualquier administrador de ventanas o de escritorio y las diferencias son:
Administrador de Ventanas: Nos permiten manejar nuestros programas en modo grafico, generalmente son livianos y poseen pocas herramientas de configuración, son ideales para equipos con pocos recursos, algunos imitan la apariencia de otros sistemas como
WindowMaker imita a NexTStep
AfterStep      "    NexTStep
IceWM          "    Windows98
FVWM95         "    Windows95/98
Ejemplo IceWM (1) AmiWM (2)

Tambien hay otros muy originales como fluxbox y enlighment que son muy elegantes pero de dificil aprendizaje para alguien que solo ha trabajado con windows... Sin duda sera una gran experiencia aprender alguno de estos entornos para los que desean aprender algo realmente original...

Por otro lado estan los Ambientes de escritorio, la diferencia es que ademas del manejador de ventanas incluyen un set de herramientas adicionales que nos hacen mas facil la vida, como editores de texto, navegadores web, clientes de correo, pero todo tiene un costo, este conjunto de programas consume mucho mas recursos que un simple administrador de ventanas...
Hay varios ambientes de Escritorios (Desktop Environment) pero los principales y ampliamente documentados son 3:

GNOME: El escritorio por defecto en la mayoria de las distribucines linux, es intuitivo, facil de usar y muy personalizable.



KDE: El escritorio mas lujoso y configurable, pero tambien el mas pesado



XFCE: El escritorio mas liviano y sencillo, tambien es muy configurable, las herramientas son sencillas pero eficientes, es capas de correr con tan solo 128 MB e incluso en 64 MB con algunas configuraciones extras..


Despues continuaremos con mas diferencias entre Windows y Linux y veremos algunas diferencias entre el propio linux de distro en distro...
#apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||  
*  /\---/\
    ~~   ~~  
...."Have you mooed today?"...

Software Libre para una Sociedad Libre

makubex

#2
TODOS PARA UNO.

Otra diferencia fundamental entre Windows y GNU/Linux es que Windows esta diseñado por una sola empresa: Microsoft. Su licencia es cara y permite instalarse en una sola maquina. De hacerlo en mas de una sin pagar una nueva licencia es un delito.

GNU y su Kernel Linux estan diseñados por una comunidad de miles de programadores al rededor del mundo, su licencia es Libre y promueve 4 garantias básicas:

1. El software puede ser distribuido libremente, cuantas copias quieras en cuantas maquinas quieras.
2. El sofware puede ser modificado, porque el codigo fuente esta disponible.
3. El codigo modificado puede ser distribuido siempre bajo las mismas condiciones
4. Se puede comercializar con el software.

Y esta ultima condicion es fundamental, es lo que determina la diferencia entre un Freeware y un Free Software, la palabra Free determina Libertad, como libertad de expreción, y no quiere decir Gratuito, como una ronda de cervezas. Quiere decir que si alguien quiere recibir remuneracion por su trabajo lo puede pedir... aunque generalmente los desarrollos incluyen el software sin costo...

Debido a todas esas libertades, muchos grupos han hecho adaptaciones de GNU/Linux a lo que ellos piensan que es lo ideal, y a las adaptaciones se les llama distribuciones, y hay muchas y para diversas utilidades:

Uso en el Hogar y la Oficina: Ubuntu, Suse, Mandriva, etc.
Para servidores: Debian, Slackware, CentOS, Gentoo, etc.
Utilidades de Rescate, Particionado y Seguridad: Rip, Slax, WifiSlax, Knoppix,nUbuntu, Gparted, etc.
Distros minimalistas para hardware viejo: DSL, Vector Linux, Deli Linux.
De uso para medicina: DNA Linux, AdrenaLinux
Para Cristianos: Christian Ubuntu, Ixoye

Y la lista sigue... pero para fines practicos utilizaremos las mas sencillas y faciles de usar... cuando le agarren sabor usen una mas avanzada, Analizaremos los escritorios Gnome y KDE, Aprendiendo Gnome es mas facil entender XFCE.

MAS DIFERENCIAS ENTRE LAS DISTROS:
El metodo para instalar paquetes en linux es lo que lo hace tan diferente uno de otro, pero antes debemos entender un par de cosas:

A Diferencia de Windows, en Linux los programas instalados no se guardan en una misma carpeta (Archivos de Programa) sino que los archivos se distribuyen en varios directorios:
/usr/bin Aqui se guadan los ejecutables
/usr/lib Aqui se guardan archivos necesarios para los programas
/usr/share/man  Aqui se guaradan algunos archivos de ayuda
/usr/src  Aqui se guardan los codigos fuentes de los programas cuando  es necesario compilarlos
/etc Aqui estan todos los archivos de configuracion, cuando un programa los requiere.
/bin Aqui hay programas que solo puede ejecutar el administrador del sistema (root) o un usuario con suficientes privilegios (permisos)
Confuso? No tanto... Tiene sus pros y sus contras:

La ventaja de esto es que los programas ocupan menos espacio, un programa puede compartir las bibliotecas de otro y ahorrar espacio en disco. El mejor ejemplo es que muchos programas para linux utilizan las herramientas del proyecto GTK, y solo tenemos que instalarlo una vez, y voalá, muchos programas lo utilizaran.

Una de las grandes desventajas y que en tiempos antiguos daban muchos dolores de cabeza son las dependencias, para instalar un programa hay que asegurarse de tener instalado previamente una serie de programas extras, sin los cuales nuestra instalacion no continua. Otro problema son las versiones: un programa requiere una version 10.1 de una libreria y el otro requiere la version 10.2 y cuando se instala, el primero deja de funcionar. Esto sucede con distribuciones que estan tachadas de inestables.

Afortunadamente estos problemas son cosa del pasado: Actualmente la mayoria de distribuciones traen administradores de paquetes que resuelven todo: Los mas famosos por su eficacia:

APT: Es el mejor sistema de paquetes, utilizado por DEBIAN y sus derivados (Esto incluye a Ubuntu, Kubuntu, Xubuntu, Edubuntu, bueno ya saben no?)
YAST: No le pide nada a APT, es el sistema de paquetes de Suse y OpenSuse, pero ademas es todo un panel de control muy avanzado que administra desde el arranque del sistema hasta la ultima actualizacion para nuestro linux, pasando por controladores.
YUM: Es el administrador de paquetes de RedHat, Fedora y derivados...
Portage: El administrador de paquetes de Gentoo (No apto para principiantes), Descarga las fuentes y compila... No hay nada mejor que un programa compilado en nuestra propia maquina..

Ademas de esto debemos tomar en cuenta el tipo de paquetes que se instalan en nuestra distro, los hay de tres tipos principalmente:
Deb: Adivinen: Lo usa debian y compañia.
RPM: Para Suse, RedHat, Mandriva y el resto.
Klik: Es muy novedoso pues instala paquetes al mas puro estilo MacOSX, pero aun genera algunos problemas entre versiones.

De forma que :
Debian y Ubuntu usan paquetes Deb y se instalan con APT.
Suse usa paquetes RPM y se instalan con YAST
Fedora usa paquetes RPM y se instalan con YUM


Tambien estan disponibles los tar.gz, que son los codigos fuentes para compilar, no importa que distro uses... pero ese es un tema aparte....

Para continuar vamos a elegir Ubuntu para mostrar como funciona todo esto :D nos vemos...
Los que esten siguiendo esto pueden descargar ubuntu desde
http://www.ubuntu.com/getubuntu/download

#apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||  
*  /\---/\
    ~~   ~~  
...."Have you mooed today?"...

Software Libre para una Sociedad Libre

Seifreed

Hay informacion muy buena es muy simple

makubex

INSTALANDO UBUNTU 8.10 Intrepid Ibex
Les dejo este video:
Instalar Ubuntu

Si no desean instalar aun pueden probrar el live cd sin tocar nada...
Al iniciar el cd solo tienen que elegir la primera opcion... Recuerden siempre cambiar el idioma a Español y el teclado a su distribucion que puede ser español si presenta un caracter como este Ç
Si no presenta ese caracter lo mas seguro es que tengan un teclado latinoamericano...

GNOME
Es el escritorio por default de ubuntu y es un poco distinto a windows pero no dificil... Se compone de dos paneles, superior e inferior.

En el panel superior encontraran tres menus principales: Aplicaciones Lugares Sistema.
En Aplicaciones encontraran todos sus programas instalados clasificados por su uso, accesorios, graficos, internet, etc
En Lugares encontraran su Carpeta Personal que es el equivalente a Mis Documentos, Tambien esta Equipo que es equivalente a Mi Pc y otras funciones de Red y una utilidad para buscar un archivo... nada dificil...
En Sistema encontraran las opciones para configurar todo, se divide en dos partes: Administración y Preferencias, la diferencia es que el primero siempre les pedira su contraseña de administrador porque son cosas que afectan al sistema en general, como el arranque, la pantalla de acceso, la red y los dispositivos, es como un panel de control. En Preferencias podemos cambiar la resolucion de la pantalla, nuestro papel tapiz y la apariencia de todo el escritorio...

Espero que instalen o que por lo menos naveguen por liveCD sin instalar nada... Saludos.. nos vermox la proxima
#apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||  
*  /\---/\
    ~~   ~~  
...."Have you mooed today?"...

Software Libre para una Sociedad Libre

linkinshadow

hola! makubex quiero saver como puedo programar en ubuntu 8.04 programas de c/c++ te lo agradeceria ;D ;D

makubex

Hola Linkinshadow, gracias por tu pregunta

GNU/Linux esta hecho en lenguaje C así que es excelente para programar, y no solo en C sino en perl, java, php, python, ruby y una serie de lenguajes más...

para empezar necesitas instalar el compilador de C/C++, posteriormente iremos agregando mas cosas, como IDEs, Bibliotecas, programación grafica con GTK y QT, administracion de procesos y un monton de cosas mas...


Para empezar:
Sintamonos un poco mas geeks y aprendamos a programar desde la terminal (Aplicaciones/Accesorios/Terminal)

$ gcc
bash: gcc: command not found

Esto significa que no tenemos instalado nuestro compilador, y por tanto tecleamos
$ sudo apt-get install gcc g++
y eso nos instalará el compilador de C y C++... Ahora bien, para crear nuestro código lo haremos en un editor de texto sencillo como el editor de midnight commander... si no lo tienes instalado tecleas
$ sudo apt-get install mc
y cuando termine ingresamos:
$ mcedit holamundo.c
donde nos aparecera una pantalla azul donde podremos expresarnos libremente:
#include <stdio.h>

int main() {
  printf("Hola Mundo GNU/Linux\n");
  return 0;
}

Para guardar precionamos F2 y para salir F10... Nota: hay que desactivar los accesos rapidos de la terminal en donde dice Editar/Combinaciones de Teclas: Desactivar todas las teclas de acceso al menu  y Desactivar la tecla de acceso rapido al menu (F10 por omision)


Bueno ahora que estamos de regreso en la linea de comandos debemos compilar nuestro programa:
$gcc holamundo.c
y aparentemente no pasa nada pero si vemos los archivos creados encontraremos uno que se llama a.out que es nuestro ejecutable y lo ejecutamos con un punto, una diagonal y el nombre del archivo:
$ls
a.out  holamundo.c
$./a.out
Hola Mundo GNU/Linux
$


ok... veamos algo mas del compilador de C, si les parece raro que el archivo se llame a.out es porque la version del unix original funcionaba de esta manera, se compilaba como cc archivo.c y generaba un a.out, pero si a nuestro ejecutable queremos ponerle otro nombre que nos resulte mas atractivo agregamos a nuestra compilacion la opcion -o nombre_del_ejecutable, por ejemplo:
$gcc holamundo.c -o holamundo
$ls
a.out  holamundo  holamundo.c
$./holamundo
Hola Mundo GNU/Linux
$


En linux las extenciones no sirven para definir a los ejecutables, a linux no se le puede engañar con una extención, si se dan cuenta nuestro ejecutable no tiene ninguna extencion, pero si queremos marcar una diferencia a modo de que todo sea mas comodo podemos nombrarlo -o holamundo.exe o bien  -o holamundo.bin que es mas adecuado.

Nota: Las funciones que no son ANSI no funcionan en linux, de manera que todo lo que encontramos en el compilador de borland como es gotoxy o clrscr no funcionan... Para mas programas puedes ir a checar escuela de C++ de cazador asesino...
#apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||  
*  /\---/\
    ~~   ~~  
...."Have you mooed today?"...

Software Libre para una Sociedad Libre

linkinshadow

makubex gracias ahora voy a enpesar a programar en linux aver como me va jejeje espero y bien muchas gracias ;D