Sei sulla pagina 1di 46

Montaje y Desmontaje de Discos y de Sistemas de Archivos

Un sistema de archivos (o filesystem) es informacin almacenada en un dispositivo de almacenamiento,


organizada siguiendo una convencin, la cual permite al sistema operativo manejar la informacin cuando el
usuario lo requiere, es decir, leer, escribir, consultar directorios, etc. Hay diversos tipos (o convenciones) de
sistemas de archivos, Linux cuenta con controladores para varios tipos creados especficamente para Linux , por
ejemplo ext2, ext3, ReiserFS, as como controladores para tipos de sistemas de archivos creados para otros
sistemas operativos, como affs, hpfs, ntfs, msdos y vfat . Los tipos que pueden emplearse con Linux estn
incluidos en el kernel o son mdulos en el subdirectorio fs del directorio con mdulos de su sistema (es decir,
el directorio de mdulos es de la forma /lib/modules/2.6.x/kernel/fs/ reemplazando x por la versin de
su kernel).
Los que puede usar dependen de la forma como se haya compilado el kernel y de los mdulos que estn
cargados. Puede examinar los tipos que soporta su sistema viendo el contenido de /proc/filesystems y puede
emplear otros tipos de sistemas de archivos cargando los mdulos apropiados -mientras sean soportados-.
Aunque toda la estructura de directorios presentada en la seccin anterior podra estar en un slo sistema de
archivos, es posible distribuirla en varios. Para poder emplear un sistema de archivos primero debe montarse en
algn directorio con el comando mount o debe configurarse el sistema para que lo monte automticamente
durante el arranque (el primer directorio que debe montarse es la raz /). Para desmontar un sistema de archivos
de un directorio se emplea el comando umount.
El programa mount sin argumentos presenta los sistemas de archivos que estn montados, de cada uno presenta
el dispositivo en el que reside, el directorio en el que est montado, el tipo de sistema de archivos y algunos
parmetros del montaje, por ejemplo, la siguiente es una salida del comando mount:
/dev/hda1 on / type ext2 (rw,errors=remount-ro,errors=remountro) proc on /proc type proc (rw)
devpts on /dev/pts type devpts
(rw,gid=5,mode=620) /dev/hda2 on /var type ext2 (rw)

/dev/hda3 on /home type ext2 (rw)

En el ejemplo se muestran 5 sistemas de archivos montados en los directorios /, /proc, /dev/pts, /var y
/home. Tres de ellos son de tipo ext2 y residen en tres particiones del disco rgido (/dev/hda1, /dev/hda2 y
/dev/hda3), los otros dos son virtuales, es decir, no residen en dispositivo de almacenamiento alguno (son creados
por el kernel). Las opciones de montaje de todos indican que pueden leerse y escribirse ( rw), el sistema montado en la
raz en caso de fallas ser montado con permiso de slo lectura ( errors=remount-ro) y el sistema montado en
/dev/pts tendr todos sus archivos como pertenecientes al grupo 5 ( tty) y permisos de escritura y lectura para el

usuario y slo de escritura para el grupo (modo 620).

Para montar un sistema de archivos se emplea:


mount -t tipo -o opciones

dispositivoFisico dispositivoVirtual

Donde dispositivoFisico es el nombre del dispositivo que contiene el sistema de archivos (ej: /dev/hda1
o /dev/fd0), tipo es el tipo del sistema de archivos y dispositivoVirtual es la ruta donde se quiere
acceder la raz del sistema montado, es un directorio (si el directorio donde se monta contiene datos, estos
sern escondidos mientras el nuevo sistema de archivos permanezca montado).
Por esta razn se debe cumplir la condicin de que el directorio donde se efectuar el montaje, est
vaco. Las opciones de mount pueden ser:
-a
Monta todos los sistemas de archivos listados en /etc/fstab.
-t tipo-de-sistema-archivo
Especifica el tipo de sistema de archivos que se montar por
ejemplo: FAT, VFAT, FAT32, ISO9660, ext2.
-o opciones
Especifica opciones al proceso mount.
ro
Monta la particin como solo lectura.
rw
Monta la particin como lectura y escritura.
exec
Permite la ejecucin de binarios (por defecto).
noatime
Deshabilita la actualizacin de la fecha de acceso a los i-nodos.
Para particiones donde la fecha de acceso no es importante

(como en los spools de noticias), esta opcin mejora su


rendimiento.
Deshabilita el montaje automtico de esta particin cuando se
especifica la opcin a (se aplica solo en el archivo

noauto

/etc/fstab).

Anula la aplicacin de los bits de programa setuid en la


particin montada.
Le dice a mount que use el bloque n como superbloque en el

nosuid
sb=n

sistema de archivo ext2.


La informacin sobre un sistema de archivos, su directorio de montaje y opciones pueden especificarse en el
archivo /etc/fstab. De hacerlo puede emplear
mount dispositivoVirtual

para montar el sistema de archivos en el directorio especificado por dispositivoVirtual (el resto de
informacin debe estar en /etc/fstab) . Adems, por defecto, los sistemas de archivos especificados en ese
archivo sern montados automticamente durante el arranque del sistema. Ms adelante nos dedicaremos a este
archivo.
Ejemplo:
# mount /dev/hda1 /win -t vfat

Esta lnea lo que hace es montar mi dispositivo fsico, que es una parte de disco rgido, la particin1, en un
dispositivo virtual, que es el directorio /win y le digo que lo monte como filesystem vfat para que me tome los
nombres largo de windows.

Nota: El sistema de archivos por default es ext2. Para los tipos de filesystem
con que se crearon las particiones Linux-native (82) no es necesario
especificarlo.
Si tengo configurado el archivo /etc/fstab con las opciones para este filesystem, puedo escribir el comando
simplificado
# mount /win

En el caso de disquetes, puede montarse as :


# mount /dev/fd0 /mnt/floppy -t msdos

Aqu estamos diciendo que el formato del disco que insertamos en la lectora, que se llama /dev/fd0 es
MSDOS.
Nota: Tenga cuidado porque el formato de MSDOS no permite nombres de
archivo muy largos como es el caso de Linux y Windows95. Por lo tanto si
desea copiar un sistema de archivos a un floppy es mejor crear un disco del
tipo ext2 (Linux) y luego montarlo. Para esto introduzca un disco formateado
MSDOS en la lectora y haga:
# mke2fs /dev/fd0 1440

con lo cual estamos dando un formato especial (Linux native 82) al disco de
1.44 Mb, luego lo montamos con:
#

mount /dev/fd0 /mnt/floppy

con:
# mount /mnt/floppy

Tenga en cuenta que los directorios usados para montar dispositivos (particiones) deben de existir y estar vacos
antes de pretender usarlos. Cuando el sistema arranca inicialmente lee un archivo llamado /etc/inittab que a

su vez lee el archivo /etc/rc.d/rc.S, el cual contiene una lnea para montar automticamente todos los
dispositivos que se encuentren en el archivo /etc/fstab, as que despreocpese, el sistema lo har por usted,
pero es bueno saber quin lo hace.
Para desmontar un filesystem haga:
# umount dispositivo

donde dispositivo puede ser /dev/hda1 para desmontar la particin de 400 Megas del directorio /win,
Veamos otro ejemplo:
# mount t iso9660 /dev/cdrom /mnt/cdrom

# mount /mnt/cdrom

# mount /media/cdrom

Para poder desmontar


# umount /dev/cdrom

# umount /mnt/cdrom

# umount /media/cdrom

El archivo /etc/fstab
El archivo fstab contiene informacin que describe los diferentes filesystems. Los programas slo pueden leer
el fstab ; por ejemplo, es el archivo que utiliza mount cuando queramos montar usando alias (vamos a hablar
de esto mas adelante). El administrador del sistema es responsable de la creacin y mantenimiento de este
archivo. Cada lnea describe un sistema de archivos; los campos en cada lnea estn separados por tabs o
espacios. Este archivo contiene una lista de todas las particiones conocidas del sistema. Durante el proceso de
arranque se lee esta lista y sus elementos se montan de forma automtica si corresponde y el sistema de
archivos es estable, es decir que no contenga errores irreparables.
Ejemplo:
alexa:/etc# cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point>
<type> <options>
<dump> <pass>
/dev/hda1
/
ext3
defaults,errors=remount-ro
0
1
/dev/vg00/swap none
swap
sw
0
0
proc
/proc
proc
defaults
0
0
/dev/fd0
/floppy
auto
defaults,user,noauto
0
0
/dev/cdroms/cdrom0
/mnt/cdrom0
auto
defaults,ro,user,noauto 0
0
/dev/cdroms/cdrom1
/mnt/cdrom1
auto
defaults,ro,user,noauto 0
0
/dev/vg00/usr
/usr
ext3
defaults
0
2
/dev/vg00/var
/var
ext3
defaults
0
2
/dev/vg00/home
/home
ext3
defaults
0
2
/dev/vg00/usr_local
/usr/local
ext3
defaults
0
2
tmpfs
/tmp
tmpfs
defaults
0
0
\\alexa-vm\kazaa
/mnt/smbfs/alexa-vm
smbfs
defaults
0
2
/dev/sg0

/mnt/mp3player

vfat

defaults,noauto,sync

alexa:/etc#

La primera columna describe el dispositivo fsico, puede ser de bloque o un sistema de archivos remoto.
La segunda columna describe el punto de montaje para el sistema de archivos, lo que antes llam
dispositivo virtual. Para particiones de intercambio (swap), este campo debe decir none.

La tercera columna describe el tipo de filesystem. Linux soporta muchos filesystems, solo para
mencionar algunos, ext3, reiserfs, jfs, ntfs, smbfs, etc.
La cuarta columna describe las opciones de montaje asociadas con el sistema de ficheros. Algunas
opciones (comunes a todo sistema de archivos) son:
o ro para montar en modo de slo lectura
o rw para montar en modo lectura y escritura
o user que indica que un usuario puede montar el sistema de archivos (por defecto slo el
administrador puede hacerlo)

noauto para indicar que el sistema no debe montarse durante el arranque ---note que los

directorios /floppy y /cdrom no son montados automticamente durante el arranque.


o

defaults incluye: rw, suid, dev, exec, auto, nouser y sync

La quinta columna lo utiliza el comando dump para determinar qu sistemas de archivos necesitan ser volcados
(dumped), es decir con cuanta frecuencia se necesita hacer copia de seguridad del sistema de archivos. Si el
quinto campo estuviera vaco, dump asume que el sistema de ficheros no necesita ser volcado.
La sexta columna lo usa el programa fsck para determinar el orden en el cual se van a chequear los sistemas de
archivos cuando el sistema arranca. Observe que todos los archivos se comprueban antes de montarse. El
nmero que controla el chequeo con fsck indica el orden en el cual hacer chequeos, 0 (cero) indica que no se
debe chequear el sistema, otros nmeros positivos especifican una prioridad (los menores son ms prioritarios y
los nmeros con el mismo nmero de ser posible son chequeados en paralelo). Es conveniente emplear 1 con el
sistema de archivos montado en la raz y 2 para los dems que requieran chequeo.
Entonces con este archivo correctamente configurado por el administrador, un usuario solo tendr que hacer un
mount /mnt/cdrom para acceder al mismo. De esta forma, el mount lee el fstab y busca la lnea que hace
referencia el /mnt/cdrom y toma los parametros y dispositivos asociados correspondientes sin tener que completar

totalmente el comando con los switchs que haran falta para montarlo sin haber creado el alias en el
/etc/fstab

Instalacin de Software
Luego de tener nuestro sistema instalado y funcionando correctamente, vamos a querer actualizarlo con nuevos
programas. O puede ser que tengamos que instalar un driver para algn dispositivo problemtico, o nos guste
bajar software de Internet que queramos probar. Cmo actualizo, instalo o desinstalo software?
Existen varios mtodos que dependern del formato utilizado para empaquetar los programas. En este captulo
veremos la descripcin de los posibles mtodos y algunos ejemplos.
La manera ms fcil de instalar software en Linux es mediante paquetes. En el mundo de Linux existen varios
tipos de paquetes: .deb (distribuciones basadas en Debian), .rpm (basadas en Red Hat) y .tgz
.tar.gz (usados por Slackware y Gentoo). Aos atrs era ms difcil instalar software en Linux. Al principio
tenamos el cdigo fuente y tenamos que compilarlo. Cmo lo compilamos? En este captulo veremos como
hacerlo. Compilar el cdigo fuente tiene sus ventajas, el software es optimizado para nuestro hardware pero la
instalacin no siempre es fcil.

Descompresin y compresin de archivos


Comando tar
El nombre viene de Tape Archiver y era la herramienta por excelencia a la hora de hacer backups en unidades de
cintas. El comando sirve para concatenar archivos en uno solo. Con este comando podemos crear un archivo que
contenga una lista de archivos concatenados, sin realizar ningn tipo de compresin. Lo que hace, realmente es
una agrupacin de archivos, los agrupa todos en uno. Luego veremos que podemos pasarle una serie de
parmetros para que realice una compresin tanto de tipo gzip como bzip2.
El formato del comando tar es:
# tar cjf
files.tar.bz2
file1 file2

Crear
el
archivo
concatenando
los
archivos
file1, file2
que le hemos
pasado y aplica
una
compresin de
tipo
bzip2
creando as un
archivo
de
salida
files.tar.bz
2.

# tar xvzf
files.tar.gz

Realiza
una
descompresin
de tipo gunzip
para despus
extraer
los
archivos que se
encontraban
concatenados
dentro
de
files.tar.gz.
Tambin puedo
utilizar tar con
la
extensin

.tgz.

# tar xvjf
files.tar.bz2

Realiza una
descompresi
n de tipo
bz2 para
despus
extraer los
archivos que
se
encontraban
concatenado
s dentro de
files.tar.
bz2.

Comando gzip
Utilidad de compresin de
archivos. El archivo comprimido
tendr la extensin .gz. A
diferencia de lo que estamos
acostumbrados a ver en windows
con este comando slo no
podemos realizar la compresin
de varios ficheros en un solo,
para eso necesitaremos la ayuda
de un segundo comando de
concatenacin de ficheros que es
el tar que vimos anteriormente.
N
ot
a:
g
z
i
p

n
o
si
rv
e
p
ar
a
c
o
m
pr
i
m
ir
di
re
ct
or
io
s.

Por ejemplo:
$ gzip
terminator.sgml

Esto devuelve:

terminator.s
gml.gz

Si por el contrario queremos


descomprimir
un
archivo
comprimido anteriormente con
este comando lo haremos de la
siguiente manera:
$ gzip -d
terminator.sgml.gz

Comando gunzip
Utilidad para descompresin de
archivos. Realiza la accin
contraria
que
gzip.
Descomprime archivos .gz
devolvindolos a su tamao
original.
N
o
t
a
:
E
s
e
q
u
i
v
a
l
e
n
t
e
a
e
j
e
c
u
t
a
r
g
z

i
p
d
a
r
c
h
i
v
o

.
$
g
u
n
z
i
p
t
e
r
m
i
n
a
t
o
r
.
s
g
m
l
.
g
z

y
$
g
z
i
p
d
t
e
r
m
i
n
a
t
o
r
.
s
g
m

l
.
g
z

s
o
n
e
q
u
i
v
a
l
e
n
t
e
s
$ gunzip -cd
blackbox.tar.gz

L
u
e
g
o
d
e
a
pl
ic
ar
el
c
o
m
a
n
d
o
n
o
s
q
u
e
d
a
c
o
n
el
si
g
ui
e
nt
e

n
o
m
br
e:
b
l
a
c
k
b
o
x
.
t
a
r

A
h
or
a
d
e
b
o
ut
ili
z
ar
el
c
o
m
a
n
d
o
t
a
r

p
ar
a
a
br
ir
o
d
es
a
gr
u
p
ar
di
c
h
o
ar
c
hi
v
o.

$ tar xvf
blackbox.tar

Como vimos antes la opcin x


descomprime el archivo, v me
muestra
los
archivos
y
directorios en la pantalla y f por
el archivo.

El comando unzip
Otro comando de descompresin
que resulta muy til, ya que nos
permite descomprimir todos
aquellos .zip que los amigos de
windows nos envan a travs de
su winzip.
$ unzip
pantallazul.zip

Existe
un
comando
de
compresin zip, pero no resulta
til ya que con los formatos de
compresin .gz y .bz2 nos
basta incluso si queremos
mandrselo a algn amigo de
windows ya que se podrn abrir
sin problemas con cualquier tipo
de utilidad de compresin como
puede ser el winzip o winrar.

Comando bzip2
Utilidad de compresin de
archivos ms potente que gzip.
El modo de funcionamiento es el
mismo. bzip2 archivo para
comprimir.
bzip2 -d archivo
para descomprimir.

Los archivos comprimidos con


este comando tendrn la
extensin .bz2.
$ bzip2
terminator.sgml
$ bzip2 -d
terminator.sgml.bz
2

Paquetes DEB

Debian introduce el paquete


DEB como formato para la
administracion de sus paquetes.
Un paquete .deb tiene varias
virtudes sobre el rpm, el cual
tiene
varias
limitaciones.
Muchas de las ventajas que tiene
mas que nada tienen que ver con
la politica de Debian. En Debian
es algo de todos los dias
actualizar un paquete y que siga
funcionando como la versino
previa, en RedHat es dificultoso.
Desde la version 2.1 hasta la
actual, es posible mudarse y
actualizar la version que
tengamos a la ultima sin reiniciar
el equipo ni tener problemas de
dependencias. Las dependencias
son un problema que solo existe
en RedHat. En Debian para
instalar
una
aplicacin
simplemente hay que pedirselo
al administrador de paquetes y el
solo resuelve las dependencias y
las instala luego de que le damos
el visto bueno.
El front-end principal en Debian
es el apt-get. El apt-get introduce
la novedad de poder decirle
cuales son las fuentes de las
cuales uno puede conseguir
aplicaciones, paquetes deb. El
archivo
de
configuracion
principal
esta
en
/etc/apt/sources.list y tiene un
formato similar al siguiente:
a
z
r
a
e
l
:
/
e
t
c
/
a
p
t
#
c
a
t
s
o
u
r

c
e
s
.
l
i
s
t
#
D
e
b
i
a
n
o
f
f
i
c
i
a
l
r
e
p
o
s
i
t
o
r
y

d
e
b
h
t
t
p
:
/
/
f
t
p
.
d
e
b
i
a
n
.
o
r
g
/
d
e
b
i
a
n

/
s
i
d
m
a
i
n
n
o
n
f
r
e
e
c
o
n
t
r
i
b
#
D
e
b
i
a
n
n
o
n
u
s
o
f
f
i
c
i
a
l
r
e
p
o
s
i
t
o
r
y
de
b
ht

tp
:/
/n
on
us
.d
eb
ia
n.
or
g/
si
d/
no
nUS
ma
in
no
nfr
ee
co
nt
ri
b
#D
eb
ia
n
se
cu
ri
ty
up
da
te
s
deb
http://s
ecurity.
debian.o
rg/
stable/u
pdates
main
non-free
contrib
#Mplayer
official
reposito
ry
deb
ftp://ftp.nerim.net/debi
an-marillat/ unstable
main

Este archivo, contiene las


direcciones de donde puede
conseguir paquetes el apt-get.
Estas direcciones pueden ser
servidores ftp, servidores http,
recursos compartidos de red,
cdroms, dvds, o simplemente un
directorio de nuestro equipo.

Debian tiene una herramienta


para configurar este archivo, se
llama apt-setup y si la
ejecutamos el menu en consola
que nos muestra simplemente
nos deja elegir de donde
queremos instalar paquetes y
luego prueba la fuente que le
definimos.
Por otro lado, podemos bajar
tambien fuentes. En el ejemplo
solo
tenemos
paquetes
compilados, pero si quisieramos
bajar las fuentes de los paquetes
compilados solo hay que agregar
una linea como esta:
deb-src http://ftp.debian.org/debian/
sid main non-free contrib

De esta forma, con una linea


igual a la que ya habia,
reemplazamos el deb por el debsrc y a partir de ahora tenemos
disponibles fuentes.
El tercer campo describe la
version que estamos usando.
Debian maneja tres versiones al
mismo tiempo, stable, testing y
unstable.
La
ideal
para
servidores en produccion es
stable, es la que contiene todos
los
paquetes
probados
y
testeados sin problemas de
seguridad. La desventaja es que
puede que encontremos paquetes
desactualizados en cuanto a
versiones, dado que para
considerarse estables tienen que
haber pasado una serie de
pruebas y depuraciones que
toman tiempo.
Por otro lado, tenemos testing.
En testing vamos a encontrar
paquetes que si bien son
estables, dependen de paquetes
que todavia son inestables. Para
que no haya problemas de
dependencias, se los mantiene en
testing hasta que sean aprobados
todos los paquetes con sus
dependencias.
En unstable vamos a encontrar lo
mas nuevo y reciente. Los
paquetes son funcionales, son
usables, pero mas que nada para

una workstation. El motivo


principal
es
que
hay
actualizaciones muy seguido y hay
paquetes nuevos todo el tiempo y
algunas cosas no salen 100%
probadas. Las versiones de los
paquetes en unstable son las
mismas versiones que tiene la
ultima version de RedHat o la
ultima version de Mandrake. La
diferencia principal es que aca
Debian prueba las cosas y no las
da a probar a los usuarios como
hacen otras distribuciones.

Si queremos buscar un paquete


en la web, podemos ir a
packages.debian.org
donde
tenemos un buscador para
encontrar paquetes por version.
Aca vamos a encontrar cerca de
13000 paquetes disponibles,
empaquetados para Debian.
Por otro lado, existe una pagina,
www.apt-get.org
en
donde
vamos a poder conseguir fuentes
para agregar a este archivo. El
caso puntual de la ultima fuente
que tiene el ejemplo fue sacada
de esta pagina. Estas fuentes
aportan los paquetes para
reproducir archivos de video que
no son de libre distribucion y no
terminan de tener una licencia
del todo clara, como el caso de
los divx. Para cualquier otro tipo
de aplicaciones que esten en una
situacion similar y no esten en
los repositorios de Debian, es
posible que la encontremos aca.
Hay que aclarar que estos
paquetes no estan probados por
el proyecto Debian, con lo cual
pueden traer problemas a futuro.
Bueno, hasta ahora vimos solo el
archivo de configuracion y como
manejarlo. Ahora vamos a ver
que luego de hacer un cambio en
ese archivo hace falta actualizar
la base de datos de paquetes. La
base de datos hace falta
actualizarla para poder ver que
tenemos instalado y que tenemos
disponible para instalar. Para
realizar esta tarea se usa el
comando apt-get de la siguiente
forma:
azrael:~# apt-get update

H
i
t
h
t
t
p
:
/
/
m
e
n
t
o
r
s
.
d
e
b
i
a
n
.
n
e
t
u
n
s
t
a
b
l
e
/
m
a
i
n
P
a
c
k
a
g
e
s
I
g
n
h
t
t
p
:
/
/
m
e
n
t
o
r

s
.
d
e
b
i
a
n
.
n
e
t
u
n
s
t
a
b
l
e
/
m
a
i
n
R
e
l
e
a
s
e
H
i
t
h
t
t
p
:
/
/
m
e
n
t
o
r
s
.
d
e
b
i
a
n
.
n
e
t
u
n
s
t
a
b

l
e
/
c
o
n
t
r
i
b
P
a
c
k
a
g
e
s
I
g
n
h
t
t
p
:
/
/
m
e
n
t
o
r
s
.
d
e
b
i
a
n
.
n
e
t
u
n
s
t
a
b
l
e
/
c
o
n
t
r
i
b
R
e
l
e

a
s
e
H
i
t
h
t
t
p
:
/
/
s
e
c
u
r
i
t
y
.
d
e
b
i
a
n
.
o
r
g
s
t
a
b
l
e
/
u
p
d
a
t
e
s
/
m
a
i
n
P
a
c
k
a
g
e
s
H
i
t
h
t
t

p
:
/
/
s
e
c
u
r
i
t
y
.
d
e
b
i
a
n
.
o
r
g
s
t
a
b
l
e
/
u
p
d
a
t
e
s
/
m
a
i
n
R
e
l
e
a
s
e
Hit
http
://s
ecur
ity.
debi
an.o
rg
stab
le/u
pdat
es/n
onfree
Pack
ages
Hit
http
://s
ecur
ity.
debi

an.o
rg
stab
le/u
pdat
es/n
onfree
Rele
ase
Hit
http
://s
ecur
ity.
debi
an.o
rg
stab
le/u
pdat
es/c
ontr
ib
Pack
ages
Hit
http
://s
ecur
ity.
debi
an.o
rg
stab
le/u
pdat
es/c
ontr
ib
Rele
ase
Hit
http
://f
tp.d
ebia
n.or
g
sid/
main
Pack
ages

Hit
http://ftp.debian.org
sid/main Release
H
i
t
h
t
t
p
:
/
/
f
t
p
.

d
e
b
i
a
n
.
o
r
g
s
i
d
/
n
o
n
f
r
e
e
P
a
c
k
a
g
e
s
H
i
t
h
t
t
p
:
/
/
f
t
p
.
d
e
b
i
a
n
.
o
r
g
s
i
d
/
n
o
n
f
r
e
e

R
e
l
e
a
s
e
H
i
t
h
t
t
p
:
/
/
f
t
p
.
d
e
b
i
a
n
.
o
r
g
s
i
d
/
c
o
n
t
r
i
b
P
a
c
k
a
g
e
s
H
i
t
h
t
t
p
:
/
/
f
t
p
.

d
e
b
i
a
n
.
o
r
g
s
i
d
/
c
o
n
t
r
i
b
R
e
l
e
a
s
e
H
i
t
h
t
t
p
:
/
/
n
o
n
u
s
.
d
e
b
i
a
n
.
o
r
g
s
i
d
/
n
o
n
U
S
/

m
a
i
n
P
a
c
k
a
g
e
s
H
i
t
h
t
t
p
:
/
/
n
o
n
u
s
.
d
e
b
i
a
n
.
o
r
g
s
i
d
/
n
o
n
U
S
/
m
a
i
n
R
e
l
e
a
s
e

H
i
t
h

t
t
p
:
/
/
n
o
n
u
s
.
d
e
b
i
a
n
.
o
r
g
s
i
d
/
n
o
n
U
S
/
n
o
n
f
r
e
e
P
a
c
k
a
g
e
s
H
i
t
h
t
t
p
:
/
/
n
o
n
-

u
s
.
d
e
b
i
a
n
.
o
r
g
s
i
d
/
n
o
n
U
S
/
n
o
n
f
r
e
e
R
e
l
e
a
s
e
H
i
t
h
t
t
p
:
/
/
n
o
n
u
s
.
d
e
b
i
a
n
.
o

r
g
s
i
d
/
n
o
n
U
S
/
c
o
n
t
r
i
b
P
a
c
k
a
g
e
s
H
i
t
h
t
t
p
:
/
/
n
o
n
u
s
.
d
e
b
i
a
n
.
o
r
g
s
i
d
/
n
o
n
-

U
S
/
c
o
n
t
r
i
b
R
e
l
e
a
s
e
R
e
a
d
i
n
g
P
a
c
k
a
g
e
L
i
s
t
s
.
.
.
D
o
n
e
azrael:~#

Ahora podemos comprar que


tenemos instalado y ver si hay
algo pendiente para actualizar.
Para esto podemos usar
nuevamente el apt-get de la
siguiente forma:
a
z
r
a
e
l
:
~

#
a
p
t
g
e
t
u
p
g
r
a
d
e
u
R
e
a
d
i
n
g
P
a
c
k
a
g
e
L
i
s
t
s
.
.
.
D
o
n
e
B
u
i
l
d
i
n
g
D
e
p
e
n
d
e
n
c
y

T
r
e
e
.
.
.
D
o
n
e

Th

e
f
o
l
l
o
w
i
n
g
p
a
c
k
a
g
e
s
h
a
v
e
b
e
e
n
k
e
p
t
b
a
c
k
:
k
v
i
m
v
i
m
The following packages

will be upgraded:
abiword-common
abiword-gnome
abiword-plugins
abiword-pluginsgnome consolecommon consoledata consoletools dash
debconf debconfi18n debconfutils e2fslibs
e2fsprogs gnomecontrol-center
gnome-pilot
ksensors
libaudiofile0
libblkid1
libcomerr2
libconsole
libgal2.2-0
libgal2.2-common
libgnome-pilot2
libkdegst0.6
libnet-perl
libpcre3 libpq3
libss2 libstdc+
+2.10-glibc2.2
libtag1 libuuid1
libxfce4util-1
libxfcegui4-1
libxml2
libxrender1
portmap ssh sshaskpass-gnome
xfprint4
39
upg
rad
ed,
0
new
ly
ins
tal
led
, 0
to
rem
ove
and
4
not
upg
rad
ed.
Nee
d
to
get
995
4kB
of
arc
hiv
es.
A
f

t
e
r
u
n
p
a
c
k
i
n
g
6
3
0
2
k
B
d
i
s
k
s
p
a
c
e
w
i
l
l
b
e
f
r
e
e
d
.
D
o
y
o
u
w
a
n
t
t
o
c
o
n

t
i
n
u
e
?
[
Y
/
n
]

Aca agregamos el switch -u


que lo que hace es una pausa
antes de comenzar a bajar las
aplicaciones e instalarlas. Por
otro lado, podemos ver que hay 4
aplicaciones que nos avisa que
no va a actualizar, pero no nos

da motivos. Seguramente no puede actualizar esas aplicaciones porque necesita a su vez paquetes que no estan
disponibles todavia porque estamos usando unstable y las dependencias no se satisfacen de inmediato.
La otra posiblidad es que para instalar esas aplicaciones, haya que instalar mas cosas que no tenemos. Con lo
cual el switch de upgrade no nos permite instalar nuevas aplicaciones, sino solo actualizarlas. Para solucionar
esto, tendriamos que paquete por paquete pedirle que los instale, de la siguiente forma:
azrael:~# apt-get install kvim
vim Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be
installed: vim-common
Suggested packages:
cscope vim-doc ctags

The following NEW packages will be


installed: vim-common
The following packages will be
upgraded: kvim vim
2 upgraded, 1 newly installed, 0 to remove and 41 not
upgraded. Need to get 4677kB of archives.
After unpacking 77.8kB of additional disk space will be
used. Do you want to continue? [Y/n]

De esta forma, solucionamos el problema de paquetes que no podia actualizar porque en la misma operacin
tenia que tambien instalar paquetes que no tenia antes.
Como instalar una aplicacin? Bueno, ya vimos algo antes, para instalar una aplicacin es relativamente
sencillo, el apt-get tiene varios switchs y uno de ellos es install. Luego tiene que figurar el nombre del paquete a
instalar.
azrael:~# apt-get install nmap
Reading Package Lists... Done
Building Dependency Tree... Done

The following NEW packages will be


installed: nmap
0 upgraded, 1 newly installed, 0 to remove and 43 not
upgraded. Need to get 438kB of archives.
After unpacking 1466kB of additional disk space will be
used. Get:1 http://ftp.debian.org sid/main nmap 3.50-1
[438kB] Fetched 438kB in 17s (24.7kB/s)
Selecting previously deselected package nmap.
(Reading database ... 104953 files and directories currently
installed.) Unpacking nmap (from .../archives/nmap_3.50-1_i386.deb) ...
Setting up nmap (3.50-1) ...

De esta forma, tenemos instalado el nmap. Que pasa si queremos desinstalarlo?


azrael:~# apt-get remove --purge
nmap Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be
REMOVED: nmap*
0 upgraded, 0 newly installed, 1 to remove and 43 not
upgraded. Need to get 0B of archives.
After unpacking 1466kB disk space will be
freed. Do you want to continue? [Y/n] y

(Reading database ... 104969 files and directories currently


installed.) Removing nmap ...
azrael:~#

Listo, no mas nmap. El switch adicional --purge le avisa al apt -get que queremos que desintale tambien los
archivos de configuracion de la aplicacin, sino, por defecto no los borra.
Como sabemos que paquetes tenemos disponibles? Como buscamos un paquete?
azrael:~# apt-cache search apt-get
apt - Advanced front-end for dpkg

apt-build - Frontend to apt to build, optimize and install


packages apt-move - Maintain Debian packages in a package pool
auto-apt - package search by file and on-demand package installation
tool cron-apt - Automatic update of packages using apt
debarchiver - Tool to handle debian package
archives debwrap - Wrapper for dpkg/apt-get
gnome-apt - graphical package manager
jablicator - Share a set of package choices
newbiedoc - Documentation by and for newbies

r-base - GNU R statistical computing language and


environment synaptic - Gtk GUI-frontend for APT
synaptic-debtags - Gtk GUI-frontend for APT with debtags support
qmail-src - Source only package for building qmail binary
package azrael:~#

De esta forma, buscamos entre las bases de datos que bajamos con el apt -get update y nos muestra todas las
posibles respuestas. Entre ellas, podemos ver que encontro front-ends para el apt como el gnome-apt y el
synaptic. Ambas aplicaciones, son para administrar los paquetes de forma grafica, ideales para actualizar,
instalar y desinstalar todo desde el modo grafico. No tiene mucho valor entrar a ver estos programas en detalle
porque son bastante intuitivos por estar hechos para el modo grafico, pero si conviene que hablemos un poco
del aptitude. El aptitude es un front-end para consola muy bueno. Para instalarlo, ya saben, apt- get install
aptitude y con aptitude alcanza para arrancarlo. La interfaz es en consola, basada en ncurses y tiene menues,
metodos de busqueda, actualizacion de paquetes, sugerencia de paquetes, etc. Una herramienta que se vuelve
fundamental a corto plazo para la administracion de paquetes.
Por otro lado, se nos puede presentar la necesidad de saber mas informacion del paquete que buscamos. Por hay
necesitamos saber que version es o algo mas basico como averiguar para que sirve. Bueno, esto se hace de la
siguiente forma.
azrael:~# apt-cache show
aptitude Package: aptitude
Priority: optional
Section: admin
Installed-Size: 2646

Maintainer: Daniel Burrows


<dburrows@debian.org> Architecture: i386
Version: 0.2.14-3
Depends: libapt -pkg-libc6.3-5-3.3, libc6 (>= 2.3.2.ds1-4), libgcc1 (>= 1:3.3.2-1),
libncurses5 (>= 5.3.20030510-1), libsigc++-1.2-5c102, libstdc++5 (>= 1:3.3.2-1)
Filename: pool/main/a/aptitude/aptitude_0.2.14-3_i386.deb
Size: 989972
MD5sum: e86011f47b49eacb69f4bd82f9564c8b
Description: curses-based apt frontend

aptitude is a curses-based apt frontend with a number of useful extended

features, including: a mutt-like syntax for matching packages in a


flexible manner, dselect-like persistence of user actions, the ability to
retrieve and display the Debian changelog of most packages, and extreme
flexibility and customization.
.
aptitude is also Y2K-compliant, non-fattening, naturally
cleansing, and housebroken.
azrael:~#

Finalmente, no podemos dejar de mencionar el dpkg. En sus principios, el Debian no tenia el apt -get, tenia el
dpkg. Cumple funciones similares a las que el comando rpm de RedHat, pero sigue solucionando el problema
de las dependencias. La limitacion que tiene el dpkg, es que no puede acceder a internet o buscar en los
repositorios de Debian que definamos en el /etc/apt/sources.list como hace el apt-get. Entonces, para instalar
algo tenemos que bajarlo de internet y decirle donde lo dejamos.

azrael:/usr/src# dpkg -i kernel-image-2.4.24-azrael_1.1_i386.deb Selecting


previously deselected package kernel-image-2.4.24-azrael. (Reading
database ... 104953 files and directories currently installed.)
Unpacking

kernel-image-2.4.24-azrael

(from

kernel-image-2.4.24-azrael_1.1_i386.deb)

...
Setting up kernel-image-2.4.24-azrael (1.1) ...
A new kernel image has been installed, and usually that means
that some action has to be taken to make sure that the new
kernel image is used next time the machine boots. Usually,
this entails running a ``bootloader'' like SILO, loadlin,
LILO, ELILO, QUIK, VMELILO, ZIPL, or booting from a floppy.
(Some boot loader, like grub, for example, do not need to be
run on each new image install, so please ignore this if you
are using such a boot loader).
A new kernel image has been installed at /boot/vmlinuz-2.4.24azrael (Size: 904kB)
Symbolic links, unless otherwise specified, can be found in /
LILO sets up your system to boot Linux directly from your
hard disk, without the need for booting from a boot floppy.
WARNING
If you are keeping another operating system or another version of
Linux on a separate disk partition, you should not have LILO

install a boot block now. Wait until you read the LILO
documentation. That is because installing a boot block now might
make the other system un-bootable. If you only want to run this
version of Linux, go ahead and install the boot block here. If it
does not work, you can still boot this system from a boot floppy.
Would you like to create a boot floppy now? [No]
You already have a LILO configuration in /etc/lilo.conf
Install a boot block using the existing /etc/lilo.conf? [Yes]
Testing lilo.conf ...
Testing successful.
Installing the partition boot sector...

Installation successful.
azrael:/usr/src#

El proceso de instalacion, no es solo desempaquetar y compiar archivos. En una gran cantidad de paquetes
luego de desarmar el deb el paso siguiente es un mini wizard con preguntas para darle una configuracion
minima a la aplicacin. En el caso del ejemplo, estamos instalando una imagen de un kernel, entonces como
paso siguiente modifica el lilo y lo ejecuta para que tome los cambios.
Para terminar, nos quedan un par de aclaraciones. En el /etc/apt/sources.list se configura tambien la version del
Debian que estamos usando, recuerdan el stable, testing y unstable? Bueno en este archivo le definimos que
version usamos. Fijense en el ejemplo siguiente.
azrael:/etc/apt# cat sources.list
#Debian official repository

deb http://ftp.debian.org/debian/ stable main non-free


contrib #Debian non-us official repository
deb http://non-us.debian.org/ stable/non-US main non-free
contrib #Debian security updates
deb http://security.debian.org/ stable/updates main non-free contrib

En el ejemplo, estamos usando las fuentes oficiales de Debian, paquetes non-us y actualizaciones de seguridad.
Las actualizaciones de seguridad no se puede cambiar la version, estamos usando stable y solo hay

actualizaciones de seguridad para stable. En cambio en los dos primeros casos, podriamos cambiar de stable por
otra version de Debian, de la siguiente forma:
azrael:/etc/apt# cat sources.list
#Debian official repository

deb http://ftp.debian.org/debian/ unstable main non-free


contrib #Debian non-us official repository
deb http://non-us.debian.org/ unstable/non-US main non-free
contrib #Debian security updates
deb http://security.debian.org/ stable/updates main non-free contrib

Luego de hacer modificaciones, recuerden de actualizar la base de datos con apt -get update. Ahora el paso
natural seria hacer apt-get update pero tengan presente que esto que vamos a hacer es actualizar TODO el
sistema con todas sus aplicaciones. Entonces para hacer este tipo de procedimientos especiales hay un switch
dedicado a mudarnos de una version a otra y es el apt-get dist-upgrade y asi tenemos actualizado nuestro
sistema sin reiniciar el equipo y sin downtime de servicios. Obviamente, cuando le llegue el turno a un servicio,
va a haber que reiniciarlo. Pero nada mas que reiniciar ese servicio y lo va a hacer automaticamente el apt-get
previo consultarnos.
El apt-get es una herramienta muy poderosa, hay muchas cosas que puede hacer y junto con el dpkg y el
aptitude la administracion de los paquetes se hace muy sencilla. Podemos ver los archivos de configuracion a
instalar en lugar de pisar los que ya hay, podemos ver que archivos instalo el paquete nuevo, tenemos un control
de cambios, podemos programar actualizaciones de seguridad diariamente para estar al dia, hasta se puede
hacer un proxy de los paquetes deb si tenemos muchos Debian instalados en nuestra red y de esta forma ahorrar
ancho de banda y ganar velocidad. Todo esto y mucho mas lo vamos a poder encontrar en la documentacion en
la pagina de Debian en varios idiomas por de mas explayado y con muchos ejemplos.

Paquetes RPM
RPM quiere decir Redhat Package Manager, o sea, que RPM es el programa administrador de paquetes de
Redhat. El formato RPM guarda dentro de cada paquete informacin suficiente para que el programa de gestin
conozca todo sobre l, lo que incluye la versin y los archivos y directorios donde se instala, una descripcin
del mismo, y la lista de otros paquetes que son requeridos. La extensin de los paquetes es: .rpm.
Note que los paquetes rpm , aparte de la extensin rpm en su nombre, tambin tienen un nmero, i386, i586
i686. Esto depende de su PC y la distribucin de Linux que use. Ese nmero corresponde al procesador en que se

compil ese paquete.

Nota: Si tengo un paquete i386, ste se podr instalar en cualquier


procesador superior, es decir que soporta escalabilidad. En cambio si el
paquete es i686 no podr instalarse en procesadores inferiores.
Al RPM lo vamos a encontrar muchas distribuciones basadas en RedHat que adoptaron el RPM como sistema
de paquetes. Escencialmente, el sistema RPM tiene una serie de problemas. Principalmente cuando nos
ponemos a hablar de dependencias, el rpm no maneja dependencias. Esto se presenta cuando queremos instalar
una aplicacin y nos avisa que la aplicacin se podria instalar si tuviera otras aplicaciones que no tiene
instaladas. Para esto, tenemos que a su vez instalar esas aplicaciones que probablemente necesiten otras para
funcionar y esto es un circulo interminable de cosas que necesitamos para instalar algo. En Debian, este tipo de
cosas no sucede. Debian usa otro sistema de paquetes llamado (deb). Igualmente en Debian existe la posiblidad
de instalar el aplicativo rpm para instalar aplicaciones rpm. Tambien esta la posiblidad de migrar un rpm a un
deb con el alien. El alien es una aplicacin dedicada a generar un deb a partir de un rpm y de esta forma poder
instalar un rpm en Debian sin ningun problema de compatibilidad.
Esta herramienta nos permite realizar varias funciones con los paquetes. RPM tiene cinco modos bsicos de
operacin (sin contar la construccin del paquete): instalacin, desinstalacin, actualizacin, consulta y
verificacin. En esta seccin veremos cada modo. Para opciones y detalles completos vea la pgina man de rpm
o pruebe: # rpm -help

La sintaxis general del comando es:


rpm <opciones> <paquete.i386.rpm>

Entre las opciones a utilizar, tenemos:


-i
-U
-h

-v
-q
--force

Para instalar
De update, actualizar
Viene de hash, tiene que ver con la base de datos donde se guardan los paquetes, guarda
una marca del progreso de la instalacin.
Conviene usarla con la opcin v
Le dice a RPM que haga una salida en formato extendido (verbose)
De query, para hacer consultas. Se puede combinar con ms opciones. Vea ms abajo.
Para forzar la instalacin de un paquete

Veamos ejemplos para cada opcin.

Instalacin
# rpm vhi package.rpm

Instala package.rpm, si encuentra otra versin no hace nada. La opcin i lo que hace es
instalar el paquete, v muestra los archivos y directorios en la pantalla y h hace un hash.
Nota: Los paquetes RPM pueden depender de otros paquetes, lo cual
significa que otros paquetes deben ser instalados para funcionar
correctamente. Si intenta instalar un paquete para el cual existe una
dependencia no satisfecha, usted ver:
# rpm -ivh package-1.01.i386.rpm failed dependencies:
yoyo is needed by package-1.0-1

Para arreglar este error debemos instalar los paquetes requeridos. Si deseara
forzar la instalacin de todas maneras (una mala idea ya que el paquete
probablemente no funcionar correctamente), hay que usar --nodeps en la
lnea de comandos.

Actualizacin
# rpm Uvh package.rpm

La opcin U nos permite actualizar el paquete. Actualiza o instala package.rpm. Sirve si tenemos otra versin
inferior.
# rpm -Uvh yoyo-2.0-1.i386.rpm
yoyo
####################################

Lo que usted ve es la instalacin, lo que no ve es el hecho de que RPM desinstala automticamente cualquier
versin antigua del paquete yoyo. De hecho, usted quiz quiera usar siempre -U para instalar paquetes, ya que
funciona bien incluso cuando no hay ninguna versin anterior del paquete instalada.
Dado que RPM realiza actualizaciones inteligentes de los paquetes con archivos de configuracin, quizs vea
un mensaje como:
saving /etc/yoyo.conf as /etc/yoyo.conf.rpmsave

Esto significa que sus cambios al archivo de configuracin puedan no ser reversiblemente compatibles con el
nuevo archivo de configuracin en el paquete, por lo que RPM salva su archivo original, e instala uno nuevo.
Usted debera investigar y resolver las diferencias entre los dos archivos tan pronto como sea posible para

asegurarse de que su sistema contina funcionando adecuadamente. Dado que actualizar es realmente una
combinacin de desinstalacin e instalacin, usted puede encontrar los errores de los dos modos, y uno ms: Si
RPM piensa que est intentando actualizar un paquete con una versin antigua, veremos:
# rpm -Uvh yoyo-1.0-1.i386.rpm
yoyo

package yoyo-2.0-1 (which is newer) is already installed

error: yoyo-1.0-1.i386.rpm cannot be installed

Para obligar a RPM a actualizar de todas maneras, use --oldpackage en la lnea de comandos

Consulta
Consultar la base de datos de paquetes instalados se realiza mediante la opcin rpm
-q. Ejemplo:
#rpm -q yoyo
yoyo-2.0-1

Se imprimir el nombre, versin y nmero de desarrollo del paquete instalado yoyo.

-a
-f <file>

-p <packagefile>
-i

En lugar de especificar el nombre del paquete, puede usar las siguientes opciones con -q
-l
-d
-c

consulta todos los paquetes instalados. consultar


el paquete al que pertenece <file>. consulta el
paquete <packagefile>.
presenta informacin del paquete como nombre, descripcin, desarrollo, tamao,
fecha de construccin, fecha de instalacin, vendedor, y otra informacin
miscelnea.
presenta la lista de archivos que el paquete posee.
presenta un lista de archivos marcados como documentacin (paginas man,
paginas info, README's, etctera).
presenta una lista de archivos marcados como archivos de configuracin. Son los
archivos que cambiamos tras la instalacin para adaptar el paquete al sistema
(sendmail.cf, passwd, inittab, etctera).
Para aquellas opciones que presenten listas de archivos, podemos aadir -v a la lnea de comandos para obtener la
lista en el conocido formato ls -l.
Ejemplos:
$ rpm -qa

Consulta la base de datos RPM y lista todos los paquetes instalados. $


rpm -qpl package.rpm

Consulta package.rpm y lista todos los archivos. $


rpm -qpi package.rpm
Consulta package.rpm y muestra informacin. $
rpm -qf /some/file
Chequea en que paquetes se encuentra el archivo

Desinstalar un paquete
# rpm e package.rpm

borra package del sistema.

Desinstalar un paquete es tan sencillo como instalarlo:


# rpm -e yoyo

Nota: Hemos usado el nombre yoyo para el paquete, no el nombre del paquete
original yoyo-1.0-1.i386.rpm.

Usted puede encontrar un error de dependencias cuando intente desinstalar el paquete si algn otro paquete
instalado depende del que est intentando borrar. Por ejemplo:
# rpm -e yoyo
removing these packages would break dependencies: yoyo
is needed by package-1.0-1

Para hacer que RPM ignore el error y desinstale el paquete de todas maneras (que es una mala idea porque el
paquete que depende de ste probablemente falle y no funcione correctamente), use --nodeps en la lnea de
comandos.

Verificacin
Verificar un paquete es comparar la informacin sobre los archivos instalados desde un paquete con la misma
informacin del paquete original. Entre otras cosas, verificar compara el tamao, chequeo MD5, permisos, tipo,
usuario y grupo de cada archivo.
# rpm -V yoyo

Verifica un paquete. Es decir verifica que todas los archivos el paquete yoyo estn como cuando fueron
originalmente instaladas. Se puede usar combinada con algunas de las opciones listadas para consultar. Por
ejemplo:
Para verificar que un paquete contiene un archivo en particular:
# rpm -Vf /bin/vi

Para verificar todos los paquetes instalados:


# rpm -Va

Esto puede ser til si sospecha que su base de datos de paquetes RPM esta corrupta.
Si todo es verificado adecuadamente no habr ninguna salida en pantalla. Si hay alguna discrepancia s habr
informacin presentada. El formato de la salida es una cadena de 8 caracteres, una posible letra c denotando un
archivo de configuracin, y despus el nombre del archivo. Cada uno de los 8 caracteres denota el resultado de la
comparacin de un atributo del archivo con el valor de ese atributo en la base de datos RPM. Un solo . (punto)
significa que el test ha sido pasado. Los siguientes caracteres denotan fallo de ciertos tests:
5
S
L
T
D
U
G
M

Chequeo MD5
Tamao del archivo
Enlace simblico
Modificacin de la fecha del archivo
Dispositivo
Usuario
Grupo
Modo (incluye permisos y tipos de archivo)

Si tenemos alguna salida en pantalla, debo decidir si me conviene borrar o reinstalar el paquete, o alguna manera
de resolver el problema.