La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

La manera mas sencilla de tener un UNIX actualizado.

Presentaciones similares


Presentación del tema: "La manera mas sencilla de tener un UNIX actualizado."— Transcripción de la presentación:

1 La manera mas sencilla de tener un UNIX actualizado.
Los Ports de FreeBSD: La manera mas sencilla de tener un UNIX actualizado.

2 Conceptos de los Ports de FreeBSD - 1 Introducción
+ 1.1 Kernel y sistema base + 1.2 Aplicaciones de terceros + 1.3 Distribución binaria versus fuentes Paquetes usados por otros sistemas MSI y .EXE RPM, .DEB, .TBZ Fuentes - TAR.GZ Matías Colli

3 Sistemas operativos de tipo UNIX:
Introducción Kernel y sistema base Sistemas operativos de tipo UNIX: Linux: No es UNIX, sino un clon de UNIX. Depende del sistema de paquetes de GNU (del acrónimo GNU is Not Unix) creado por Richard Stallman. Linux es solo núcleo desarrollado en 1991 por Linus Torvalds. Por eso, el sistema en realidad se denomina GNU/Linux. BSD: Es un UNIX propiamente dicho, deriva del UNIX original de AT&T. Tiene su propio sistema de paquetes. A diferencia de GNU/Linux, las herramientas del sistema y el núcleo están integrados en un mismo sistema. Creado originalmente en 1977, anterior a Linux, por un problema legal con AT&T no pudo salir sino a la luz sino hasta 1993. Matías Colli

4 El propio Linus Torvald admitió:
“Si hubiera sabido de la existencia de los sistemas BSD, que ya cumplían lo que hacía Linux, no me habría molestado en modificar Minix...no hubiese escrito Linux.” Ventajas de BSD: + estable + robusto + integrado + seguro + portable + paquetes Documentación centralizada (Handbook). Matías Colli

5 Que es BSD? BSD es un acrónimo de Berkeley Software Distribution, lo cual representa a una familia de sistemas operativos tipo UNIX derivado del UNIX original AT&T. Funciona en plataformas x86 (i386), aunque también es compatible con AMD y procesadores de 64 bits y con otras arquitecturas como SPARC, ARM, etcétera. Quienes usan BSD? En la NASA, y grandes empresas internacionales como Yahoo! Sony, Nokia, etc. Es usado por hackers y sysadmins para configurar sus servidores. Por qué BSD? Posee tanto el núcleo como las herramientas del sistema en conjunto, no por separado, a diferencia de GNU/Linux, en el cual por un lado el Kernel es desarrollado por Linus Torvalds y su equipo de desarrollo, y por otro las herramientas operativas GNU. Además, si fuese necesario, permite la compatibilidad con aplicaciones GNU/Linux. Desde BSD pueden verse los sistemas de archivos de Microsoft como FAT, FAT32 y NTFS, y de Linux: Ext2, Ext3, ReiserFS, etcétera. Matías Colli

6 FreeBSD proporciona estabilidad, son los servidores que más tiempo de uptime tienen y es realmente sencillo de mantener mediante el árbol de ports, una sencilla herramienta para mantenerse al día con todos los programas requeridos tanto por los usuarios (juegos, paquetes de oficina, internet, etcétera), desarrolladores (herramientas de programación, lenguajes, etcétera) y administradores de sistemas o hackers (herramientas de red, internet, servicios de correo, web, dns, etcétera). Es superior en todo sentido a Windows y, en muchos aspectos, a GNU/Linux. Y la razón principal es que a diferencia de GNU/Linux que es un clon, BSD es UNIX de verdad y libre, mantenido por una prestigiosa comunidad de desarrolladores, administradores y hackers. Matías Colli

7 Sabores de BSD? Existen tres ramas o sabores principales de desarrollo de BSD: FreeBSD, OpenBSD y NetBSD. Ahora conoceremos en detalle sus características y diferencias. FreeBSD: es el más popular por ser el primer BSD oficial. FreeBSD es el sistema operativo elegido por los hackers, desarrolladores y universitarios. Es ideal para aquellos a quienes les gusta la estabilidad, la sencillez y la seguridad. Su sitio web oficial es Matías Colli

8 NetBSD: proyecto cuyo objetivo principal es lograr instalarse en todas las arquitecturas posibles. Actualmente soporta hasta 52 arquitecturas distintas. Una frase común para hablar de este sistema fue “NetBSD puede funcionar en cualquier aparato y máquina excepto, quizás, en la tostadora de la cocina”. Esta frase fue desmentida en 2005 gracias a la empresa Technology Systems, que instaló NetBSD en una tostadora que tenía incorporada un sistema embebido con una EVB (Evaluation Board) modelo TS-7200 y con un procesador ARM9, arquitectura que permite tener casi las mismas funcionalidades que una PC pero en un espacio reducido, y que es utilizada principalmente en routers y firewalls. NetBSD es el sistema operativo elegido por empresas de gran envergadura, como la NASA, que disponen de arquitecturas poco comunes. Su sitio web oficial es Matías Colli

9 OpenBSD: es el sistema operativo más seguro por excelencia
OpenBSD: es el sistema operativo más seguro por excelencia. Desde la página oficial del proyecto se puede ver su hazaña: solo dos agujeros de seguridad en la instalación por defecto en más 10 años. Y realmente es así, por lo que es el sistema operativo elegido por las compañías cuyo principal objetivo es la seguridad y estabilidad. OpenBSD es el BSD elegido por hackers, puristas y por empresas que consideran la seguridad como un punto crítico. Es el arte de la seguridad, todo corre enjaulado, cada proceso está asegurado y casi no requiere mantenimiento. Su sitio web oficial es Matías Colli

10 Aplicaciones de terceros
Actualmente, FreeBSD cuenta con más de paquetes opcionales en los ports. Es imposible dar una lista exhaustiva de todas estas aplicaciones pero suelen cubrir muchas de las necesidades de los usuarios: productividad, editores, computación científica, ingeniería, manejo de redes, servidores, audio y multimedia, desarrollo, juegos, etc. Para una información completa, le recomiendo consultar la página web de Freshports, que se dedica a la publicación integral de los ports. En su mayoría, estas aplicaciones vienen en forma de código fuente adaptado para FreeBSD, a menudo bajo licencia GNU. Otras aplicaciones propietarias se distribuyen como ejecutables compilados para Linux y se ejecutan vía una capa de emulación, como el Acrobat Reader, por ejemplo. Matías Colli

11 Paquete binario vs fuente
Ventajas: Es más compacto y se instala rápidamente. Sabemos de antemano las dependencias. Desventajas: Fue compilado con un conjunto de opciones predefinidas, que no corresponden siempre a las necesidades del usuario. En el ambiente FreeBSD, la instalación de binarios se llama packages. Fuente Ventajas: Flexibilidad, se puede escoger las opciones. Más actual, el paquete fuente siempre es más actual que el binario. La compilación del código fuente requiere más espacio en disco. Las dependencias pueden cambiar según los parámetros de compilación. Algunas aplicaciones tarda demasiado (ej: OpenOffice )‏ Matías Colli

12 Paquetes usados por otros sistemas operativos
Los .MSI y .EXE Los archivos con extensión .msi y .exe son los paquetes binarios de Windows. Ejecutables. Muy cómodos para el usuario, ya que no necesita configurar nada manualmente. Es similar a los .bin de aplicaciones propietarias de los sistemas de tipo UNIX. Los .RPM, .DEB, .TGZ Un modelo más elemental es el .tgz (tar-gzip), que es un respaldo de la distribución que se restaura en la máquina de destino. Tiene la desventaja que la configuración se debe hacer a mano. Tampoco dejan constancia de la instalación, lo que complica la mantención. Los .rpm y .deb del mundo GNU/Linux empiezan por copiar los archivos en su destino y actualizan una base de datos de aplicaciones instaladas. Suelen contener también un script de configuración de parámetros si necesario. Matías Colli

13 Ports y dependencias Una dependencia es un requerimiento del sistema. Un paquete que requiere de otro para su instalación y/o funcionamiento. Los ports son un conjuntos de paquetes (programas) contenidos en un directorio. Como funciona El sistema de ports efectúa una análisis exhaustivo de los requerimientos, que se llaman dependencias. En muchos casos, la compilación de una aplicación provoca la compilación de varias dependencias, si no están presentes. Un ejemplo práctico: OpenOffice instala primero el programa Java, luego una versión particular del compilador GCC, Phyton y algunos otros paquetes de menor tamaño. Matías Colli

14 Los Packages Binarios: FreeBSD cuenta con un repositorio de archivos de instalación binarios. Descargar el paquete, desde CD o Intenet (por ej: Freshports.org). Por defecto, pkg_add instala solamente el paquete indicado, lo que no asegura la funcionalidad. Por lo tanto, se recomienda usar la opción -r que instala también las dependencias (si tenemos Internet las descarga desde allí). Fuentes: Las herramientas de manejo de packages son extensiones del sistema de base y se deben compilar. Lo básico se instala con: cd /usr/ports/sysutils/portupgrade make install clean Matías Colli

15 Construyendo un repositorio local
El comando pkg_fetch -R, descarga los paquetes pedidos con las dependencias aún no instaladas. Si el repositorio se debe usar en red para varias máquinas sin tener la certeza que todas tienen siempre la misma lista de paquetes, se debe invocar también con la opción -f para asegurar que el repositorio este completo. Por ejemplo: pkg_fetch -R -f apache En resumen... Binario utiliza siempre el comando: pkg_add <package> Sin parametros busca el archivo localmente. -r : Descarga desde lared. -f : Fuerza. -O: Omite verificación de seguridad -y: Seleciona yes para cada pregunta Matías Colli

16 El sistema de escritorio Gnome instalado en 3 minutos.
Ejemplos prácticos # pkg_add -r gnome El sistema de escritorio Gnome instalado en 3 minutos. # pkg_add -r apache Rapida instalación de apache. Tambien se puede cambiar el destino utilizando otro mirror, propio o de terceros: export PKG_PATH=ftp://your.ftp.mirror/pub/OpenBSD/4.3/packages/`machine -a`/ pkg_add -v <pkg> Matías Colli

17 Desde el directorio /usr/ports como root, por primera vez:
[/usr/ports ]# make fetchindex Genera por primera vez la base de ports, si ya existe la actualiza desde Internet. Busquedas: Siempre desde /usr/ports make search name=<programa> o make search key=<palabra_clave> Matías Colli

18 Path: /usr/ports/games/brutalchess
Ejemplos: /usr/ports]$ make search name=chess | grep -v B-deps: | grep -v R-deps: |more Port: brutalchess-0.5.2_3 Path: /usr/ports/games/brutalchess Info: Nice looking OpenGL chess game Maint: WWW: Port: cchess-1.4 Path: /usr/ports/games/cchess Info: Very simple Chinese chess program Maint: WWW: Port: emacs-chess-2.0b5_2 Path: /usr/ports/games/emacs-chess Info: Play chess with emacs Maint: WWW: --More--(byte 619)‏ Matías Colli

19 Puedo instalar el programa de 2 maneras: Con un simple make
/usr/ports]$ su - Password: freebsd# cd /usr/ports freebsd# cd games/brutalchess freebsd# make install clean O si hemos descargado portinstall: #portinstall /games/brutalchess Matías Colli

20 Primer caso (make install): freebsd# cd games/brutalchess
freebsd# make install clean > brutalchess-alpha src.tar.gz doesn't seem to exist in /usr/ports/distfiles/. => Attempting to fetch from brutalchess-alpha src.tar.gz % of 4400 kB 85 kBps 00m18s Primer caso (make install): freebsd# cd games/brutalchess freebsd# make install clean > brutalchess-alpha src.tar.gz doesn't seem to exist in /usr/ports/distfiles/. => Attempting to fetch from brutalchess-alpha src.tar.gz % of 4400 kB 85 kBps 00m18s Comienza a descargar el paquetes desde Internet Segundo caso (portinstall): freebsd# portinstall games/brutalchess [Updating the pkgdb <format:bdb_btree> in /var/db/pkg packages found (-0 +0) done] Matías Colli

21 Matías Colli

22 freebsd# portinstall vim ---> Found 2 ports matching 'vim':
editors/vim5 editors/vim Install 'editors/vim5'? [yes] [Gathering depends for editors/vim5 done] Install 'editors/vim'? [yes] [Gathering depends for editors/vim .. done] ---> Installing 'vim-5.8.8_2' from a port (editors/vim5)‏ ---> Building '/usr/ports/editors/vim5' ===> Cleaning for vim-5.8.8_2 => vim-5.8-src.tar.gz doesn't seem to exist in /usr/ports/distfiles/vim. => Attempting to fetch from vim-5.8-src.tar.gz % of 1086 kB 67 kBps 00m00s => vim-5.8-rt.tar.gz doesn't seem to exist in /usr/ports/distfiles/vim. vim-5.8-rt.tar.gz % of 1237 kB 55 kBps 00m07s Matías Colli

23 Path: /usr/ports/multimedia/goggles
/usr/ports]$ make search key="DVD Player" | grep -v B-deps: | grep -v R-deps: Port: goggles-0.8.0_4 Path: /usr/ports/multimedia/goggles Info: A FOX frontend to the Ogle DVD player Maint: WWW: Port: libdvdread-0.9.7_3 Path: /usr/ports/multimedia/libdvdread Info: This is needed by ogle, which is a DVD player that supports DVD menus Maint: WWW: Port: ogle-0.9.2_9 Path: /usr/ports/multimedia/ogle Info: Open DVD player that supports DVD menus WWW: Port: okle-0.4_6 Path: /usr/ports/multimedia/okle Info: A KDE frontend to the Ogle DVD player WWW: Matías Colli

24 Actualización Ventajas de Portsinstall
El sistema de ports ofrece también una herramienta de instalación de paquetes llamada portinstall. Empieza por revisar en forma recursiva todos los requerimientos de la instalación pedida. La demora en partir depende altamente de los paquetes ya instalados pero compila solamente lo que se necesita. Actualización La actualización de aplicaciones se hace con portupgrade. Se requiere después de actualizar los ports y actúa solamente sobre las aplicaciones que cambiaron. Matías Colli

25 Ejemplo práctico: Actualizar Gnome y aplicaciones.
# portupgrade -fvyO '*gnome*' Actualiza todo lo relacionado con gnome. -f: Force. Para forzar -v: Verbose. Para visualizar todo. -y: Yes to all, decir si a todo. -O: Omite check. Omitir verificacion de seguridad Matías Colli

26 La herramienta pkg_which que indica las dependencias.
Para conocer las dependencias y determinar la jerarquía de los cambios necesarios en una actualización, o los conflictos en caso de dependencias compartidas, el sistema ofrece también la visualización del árbol instalado: # pkg_tree aalib aalib-1.4.r5_2 |\__ expat-2.0.0_1 |\__ pkgconfig-0.20 |\__ libdrm-2.0_1 |\__ freetype _3 |\__ fontconfig-2.3.2_3,1 \__ xorg-libraries-6.9.0 La herramienta pkg_which que indica las dependencias. /usr/ports]$ sudo pkg_which pkg_fetch [Updating the pkgdb <format:bdb_btree> in /var/db/pkg packages found (-0 +1) . done] portupgrade-2.4.6,2 Matías Colli

27 Protegiendo el árbol de ports
El proceso se encarga de bajar el código fuente, compilarlo, instalar los ejecutables y limpiar el árbol - remover el subdirectorio work que se creó para la compilación y que suelen ocupar mucho espacio - por ejempo, OpenOffice ocupa hasta 6,5GB antes de instalación. Por defecto, los ports se compilan en la partición /usr. Según su tamaño, su tasa de utilización y el tamaño del paquete a compilar, uno puede llegar a llenar esta partición y causar efectos colaterales. Para evitar problemas de este tipo, se puede mover el árbol a otra partición y crear un enlace simbólico con: # ln -s /<OtroDisco>/usr/ports /usr/ports o definir la variable de ambiente PORTSDIR para definir su nuevo lugar. Matías Colli

28 La configuración por defecto se guarda en /etc/make.conf
Los Makefile suelen soportar la opción make config que define las opciones del paquete. Así, se puede activar la optimización del compilador, seleccionar el tipo de SSH a integrar, etc. Esta opción ajusta automáticamente las dependencias, en el caso de que se requiera. La configuración por defecto se guarda en /etc/make.conf /usr/ports]$ cat /etc/make.conf USE_QT=yes BATCH=yes WITH_HAL=yes WITH_MTP=yes WITHOUT_GNOME=no WITHOUT_X11=yes DISABLE_VULNERABILITIES=yes FORCE_PKG_REGISTER=yes X11BASE=/usr/local PORTSDIR?=/usr/ports .if ${.CURDIR} == ${PORTSDIR}/sysutils/hal WITH_FIXED_MOUNTPOINTS=YES .endif # added by use.perl :53:26 PERL_VER=5.8.8 PERL_VERSION=5.8.8 Matías Colli

29 Análisis de los ports ya instalados
Después de su compilación, los ports se instalan como package y se pueden listar de la misma manera con: ls /var/db/pkg Una alternativa, que usa las heramientas específicas, es portsversion, que además determina qué paquetes necesitan actualización. Eso aplica sobre todo a los sistemas que acaban de actualizar /usr/ports con el último snapshot o con un cambio de release. Para ver los cambios disponibles, se pueden combinar comandos como: portsversion | grep -v = que extrae las líneas que reportan versiones no idénticas. Matías Colli

30 portsversion | grep -v = | wc -l
Los comandos se pueden combinar libremente para obtener los efectos deseados. Por ejemplo, el número de ports a actualizar se consigue con: portsversion | grep -v = | wc -l Otro ejemplo que muestra las diferencias de versión: portsversion -v | grep -v = o que se restringe a los ports relacionados con Gnome: portsversion -v \*gnome\* | grep -v = El límite de este concepto es la imaginación del usuario: portversion -r gnome\* | grep \< | awk '{ print "Actualizar " $1; }' | mail Matías Colli

31 Consejos clave: Siempre es recomendable mantener una copia del árbol original de la release para asegurarse que uno siempre puede volver al estándar probado. No actualizar a menos que sea necesario (y, en muchos casos, no lo es). Matías Colli

32 Cómo y cuando actualizar
Básicamente, hay 2 métodos generales: 1) Descargar el árbol completo ports.tgz y reemplazar el directorio actual. 2) Crear un repositorio CVS local. La primera opción es rápida y predecible: se puede estimar el tiempo de descarga del archivo y de instalación. La opción CVS suele ocupar más espacio en el disco y es relativamente más lenta ya que los archivos se editan en tiempo real. La pregunta "cuándo" es más subjetiva. Si se descubrió y corrigió un bug de seguridad en un servidor conectado a Internet, es seguramente útil instalar la actualización. Si hay una mejora sensible o nuevas funcionalidades (por ejemplo, un compilador soporta ahora un nuevo procesador que ocupo en mi trabajo actual), también tiene sentido. Si KDE migró de a 3.5.3, vale mejor evaluar si hubo cualquier cambio que justifique la actualización (la respuesta es probablemente no en la mayoría de los casos y es más razonable esperar que la sea integrada a -RELEASE). Matías Colli

33 Versiones (RELEASE Y CURRENT)‏
Versión estable con las entregas oficiales En un sistema con la etiqueta CVS "-RELEASE" significa que estas versiones pasaron por un ciclo intensivo de QA y todas las aplicaciones del árbol de ports fueron probadas. Versión -CURRENT Esta versión es para los que aman vivir en peligro. Suele ser relativamente estable e incluye las correcciones para las vulnerabilidades detectadas pero, para ser consecuente, requiere una mantención permanente. Matías Colli

34 Reparando inconsistencias
A veces puede ser que la base de datos de los ports se corrompa. Por ejemplo: si ejecutamos varias instancias de portinstall o instalamos varios package al mismo tiempo. O puede ser que haya nuevos paquetes instalados y que estos hayan generado errores de dependecias. Existen 2 versiones de un mismo paquete que fue instalado para satisfacer dependencias de paquetos distintos. # pkgdb -Fu -u: Creará la base de datos del arbol de ports, en caso de existir, la misma se actualizará. -F: Corrección interactiva. Nos preguntará antes de efectuar una corrección. Matías Colli

35 Como solucionamos el problema?
Un ejemplo práctico: # portupgrade ruby-1.8.5_4,1 [Updating the pkgdb (format:bdb_btree) in /var/db/pkg ... /var/db/pkg/pkgdb.db: unexpected file type or format -- Invalid argument; rebuild needed] [Rebuilding the pkgdb (format:bdb_btree) in /var/db/pkg ... [Updating the pkgdb (format:bdb_btree) in /var/db/pkg ... /var/db/pkg/pkgdb.db: unexpected file type or format -- Invalid argument; rebuild needed] [Rebuilding the pkgdb (format:bdb_btree) in /var/db/pkg ... /var/db/pkg/pkgdb.db: unexpected file type or format -- Invalid argument: Cannot update the pkgdb!]: Cannot update the pkgdb!] Command failed [exit code 1]: /usr/local/sbin/pkgdb -aFOQ Como solucionamos el problema? # mv /var/db/pkg/pkgdb.db /var/db/pkg/pkgdb.db.org # pkgdb -Fu Movemos la base actual y recrearemos la base y solucionaremos el problema. Matías Colli

36 Como se instala freebsd-update?
Podemos actualizar el sistema base tambien? Si, felizmente la últimas versiones de FreeBSD tiene un programa llamado freebsd-update que actualiza los binarios del sistema. Esta herramienta está disponible desde el árbol de Ports: /usr/ports]$ make search name=freebsd-update Port: freebsd-update-1.6_2 Path: /usr/ports/security/freebsd-update Info: Fetches and installs binary updates to FreeBSD Maint: B-deps: R-deps: WWW: Como se instala freebsd-update? # portinstall security/freebsd-update Matías Colli

37 Como se detectan las actualizaciones?
# freebsd-update fetch Looking up update.FreeBSD.org mirrors... 1 mirrors found. Fetching public key from update1.FreeBSD.org... done. Fetching metadata signature from update1.FreeBSD.org... done. Fetching metadata index... done. Fetching 2 metadata files... done. Inspecting system... done. Preparing to download files... done. Fetching 38 patches done. Applying patches... done. Como se instalan las actualizaciones? # freebsd-update install Installing updates... done. Matías Colli

38 Como ver los ports que necesitan actualización?
# pkg_version -vIL= ORBit < needs updating (index has )‏ apache _1 < needs updating (index has )‏ aspell _4 < needs updating (index has _2)‏ atk < needs updating (index has _1)‏ autoconf-2.59_2 < needs updating (index has 2.59_3)‏ avahi < needs updating (index has )‏ bitstream-vera-1.10_2 < needs updating (index has 1.10_4)‏ cairo < needs updating (index has )‏ cdrtools-2.01_5 < needs updating (index has 2.01_6)‏ cups-base < needs updating (index has )‏ dbus-0.93_3 < needs updating (index has 1.0.2_2)‏ dbus-glib-0.71 < needs updating (index has 0.74)‏ desktop-file-utils-0.11 < needs updating (index has 0.12_1)‏ docbook-sk-4.1.2_3 < needs updating (index has 4.1.2_4)‏ docbook-xsl < needs updating (index has _2)‏ dvd+rw-tools-6.1 < needs updating (index has 7.0)‏ esound _1 < needs updating (index has ) Matías Colli

39 Actualización de la colección de ports mediante portsnap
Instalación de portsnap # cd /usr/ports/ports-mgmt/portsnap # make install clean Actualizacion mediante portsnap # portsnap fetch extract Looking up portsnap.FreeBSD.org mirrors... 4 mirrors found. Fetching snapshot tag from portsnap3.FreeBSD.org... done. Latest snapshot on server matches what we already have. No updates needed. Matías Colli

40 Portupgrade como herramienta gestora de ports en FreeBSD.
Se compone de varios comandos que facilitan la tarea al administrador del sistema: * portinstall: Para la instalación de ports * portcvsweb: Navegador por el histórico de cambios CVS * portversion: Reemplazo de pkg_version con mejoras * portsclean: Borra el directorio de trabajo (workdir) y viejas librerías huérfanas... * portsdb: Crea una base de datos indexada del árbol de ports * pkg_deinstall: Análogo a pkg_delete * pkg_fetch: Descarga el código fuente de un port. Matías Colli

41 Como desinstalar programas?
# pkg_delete portupgrade-2.3.1,2 # pkg_delete ruby18-bdb-0.6.2 # pkg_delete ruby18-bdb o tambien con el comando pkg_deinstall si hemos instalador Portupgrade (recomendado). Matías Colli

42 Preguntas ???????? Matías Colli

43 Bibliografia Matias Colli matiasbsd@gmail.com
Guía de FreeBSD para usuarios de Linux - John Ferrell (Traducción de Gábor Kövesdán). Seguridad de la Información y Auditoría de Sistemas - Sergio Hernando. UNIX System Administration Handbook (3rd Edition) - Evi Nemeth, Garth Snyder, Scott Seebass, y Trent R. Hein. Editorial: Prentice Hall. Conceptos de los Ports de FreeBSD – BSD Chile Matias Colli Matías Colli


Descargar ppt "La manera mas sencilla de tener un UNIX actualizado."

Presentaciones similares


Anuncios Google