martes, 7 de mayo de 2013

Actualizando GNU/Linux Debian de 6.0.x Squeeze a 7.0.0 Wheezy

INTRODUCCIÓN

Como es costumbre, las versiones de Debian siempre llevan el nombre de un personaje de las películas Toy Story, y el equipo de desarrollo de Debian anunció la semana pasada que la versión 7.0 (llamada Wheezy) entraba en estado estable a partir del día domingo 5 de mayo de 2013, y se publicaron las notas de la versión junto con la guía de actualización. Dicen las "malas lenguas" que por ahí es conveniente hacer una reinstalación en vez de una actualización, pero siendo que mi servidor es de pruebas, y que voy a tratar de seguir al pie de la letra las instrucciones, me voy a animar a actualizar ;).

[Imagen tomada de aquí]

Los primeros tres capítulos de la guía se refieren, respectivamente a: 1) Introducción, 2) Qué hay de nuevo en Wheezy, y 3) Novedades del sistema de instalación. Es interesante ver que Wheezy incluye alrededor de 12800 (sí, doce mil ochocientos!) nuevos paquetes, haciendo un total de 37493 paquetes en total disponibles en los DVDs de instalación y desde los repositorios. Otro detalle importante es ver nuevas arquitecturas soportadas.

Habiendo dicho esto, paso a repasar el capítulo 4, el cual detalla las instrucciones para actualizar desde Debian 6.0.x Squeeze.

EL BACKUP

Como solamente necesito hacer un backup de mi home, de /etc/squid, /etc/postfix, /etc/cups, y de /var/www :
tar -cpvzf BKP.tgz /home/gacanepa /etc/squid /etc/cups /etc/postfix /var/www

REVISAR LAS ACCIONES PENDIENTES EN EL GESTOR DE PAQUETES

Según el apartado 4.2.1:
En algunos casos, utilizar apt-get para instalar paquetes en lugar de aptitude puede hacer que aptitude considere que un paquete no está siendo utilizado (marcado como «unused») y lo marcará para su eliminación... Por ello, es necesario que revise si existe alguna acción pendiente en el gestor de paquetes aptitude. El procedimiento de actualización puede verse afectado negativamente si algún paquete está marcado para eliminarse o actualizarse... Para realizar esta revisión debería ejecutar el interfaz de usuario en “modo visual” de aptitude y pulsar g (“Go”). Si se muestra cualquier acción, debería revisarla y o bien arreglarlas o llevar a cabo las acciones que se le sugieran. Se le presentará el mensaje “No hay ningún paquete planificado para instalar, eliminar o actualizar” si no hay ninguna acción pendiente.
Ejecuté
aptitude safe-upgrade
para actualizar los paquetes que tengan disponibles nuevas versiones, sin desinstalar ningún paquete a menos que no se esté usando. Entonces aptitude sí entrega el resultado deseado:


PREPARAR LAS FUENTES PARA APT
El método recomendado para actualizar desde versiones anteriores de Debian es usar la herramienta de gestión de paquetes apt-get. En versiones anteriores, se recomendaba la orden aptitude para este propósito, pero las versiones más recientes de apt-get ofrecen la misma funcionalidad y se ha demostrado que proporcionan los resultados deseables para una actualización de forma más consistente.Asegúrese de que las entradas con las fuentes de APT (en el archivo /etc/apt/sources.list) hacen referencia a la distribución “wheezy” o a estable (“stable”). No debería haber ninguna entrada que haga referencia a “squeeze”.
El contenido de mi archivo /etc/apt/sources.list:


GRABAR LA SESIÓN DE ACTUALIZACIÓN
script -t 2>~/upgrade-wheezystep.time -a ~/upgrade-wheezystep.script

ACTUALIZAR LA LISTA DE PAQUETES
apt-get update

ACTUALIZACIÓN MÍNIMA DEL SISTEMA

Se actualizan los paquetes que se puedan actualizar en el sistema sin que sea necesario eliminar ni instalar ningún otro paquete:
apt-get upgrade

ACTUALIZAR EL SISTEMA
Se realizará una actualización completa del sistema, esto es, se instalarán las versiones más recientes de los paquetes y se resolverán todos los posibles cambios de dependencias entre los paquetes de diferentes versiones. Si fuera necesario, se instalarán nuevos paquetes (normalmente, nuevas versiones de las bibliotecas o paquetes que han cambiado de nombre), y se eliminarán los paquetes obsoletos conflictivos.
apt-get dist-upgrade

Por suerte no hubo ningún problema durante la actualización. Al terminar se puede constatar la nueva versión de Debian y del kernel:
root@debian:~# cat /etc/issue
Debian GNU/Linux 7.0 \n \l
root@debian:~# uname -r
3.2.0-4-686-pae

Lo único que tuve que arreglar fue quitar la referencia al módulo php5-suhosin -el cual ha sido eliminado en Wheezy- de PHP5 para que el servidor web Apache arrancara correctamente:
dpkg --purge php5-suhosin

miércoles, 1 de mayo de 2013

Volviendo a instalar la impresora multifunción Epson Stylus CX3900 en Debian Squeeze

1) Instalé los paquetes cups y cups-pdf:
aptitude install cups cups-pdf
2) Para poder acceder a la interfaz web de CUPS es necesario configurar el servicio para que escuche en la interfaz de red y dar los permisos necesarios (conviene primero hacer una copia de seguridad del archivo original):
root@debian:~# cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.original
root@debian:~# vi /etc/cups/cupsd.conf
Listen 192.168.0.10:631
# Restrict access to the server
<Location />
Order allow,deny
Allow 192.168.0.0/24
</Location>
# Restrict access to the admin pages...
<Location /admin>
Order allow,deny
Allow 192.168.0.0/24
</Location> 
# Default authentication type, when authentication is required...
DefaultAuthType Basic
3) Tipear en el navegador: <IPdelServidor>:631, en mi caso 192.168.0.10:631:


4) Ir a la pestaña "Administration" y hacer clic en el botón "Add printer":


5) Comienza a buscar impresoras conectadas:


6) Detectó la Epson Stylus CX3900 (elegir la opción correspondiente para indicar que esa es la que se desea instalar):


7) Indicar el nombre deseado para la impresora y si se desea compartirla, así como su ubicación:


8) Si el driver de la impresora no está incluido en CUPS, elegir "Select Another Make/Manufacturer":


9) Mientras tanto, habrá que bajar el driver (archivo .deb) desde la página de soporte de EPSON: http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX:


10) Instalo el paquete recién bajado:
dpkg -i epson-inkjet-printer-escpr_1.2.2-1lsb3.2_i386.deb
11) Me avisa que tiene dependencias no resueltas:
dpkg: dependency problems prevent configuration of epson-inkjet-printer-escpr:
 epson-inkjet-printer-escpr depends on lsb (>= 3.2).
12) ¿Qué es lsb?
aptitude show lsb
Package: lsb                             
State: not installed
Version: 4.0-0ubuntu26.1
Priority: extra
Section: misc
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: all
Uncompressed Size: 45.1 k
Depends: lsb-core, lsb-graphics, lsb-cxx, lsb-desktop, lsb-printing
Suggests: lsb-multimedia, lsb-languages
Description: Linux Standard Base 4.0 support package
 The Linux Standard Base (http://www.linuxbase.org/) is a standard core system that third-party applications written for Linux can depend upon. 

 This package provides an implementation of all modules of version 4.0 of the Linux Standard Base for Debian on the Intel x86, Intel ia64 (Itanium), IBM S390, and PowerPC 32-bit architectures with the Linux kernel. Future revisions of the specification and this package may support the LSB on additional architectures and kernels. 

 The intent of this package is to provide a best current practice way of installing and running LSB packages on Debian GNU/Linux. Its presence does not imply that Debian fully complies with the Linux Standard Base, and should not be construed as a statement that Debian is LSB-compliant.
Homepage: http://www.linux-foundation.org/en/LSB
13) Entonces instalamos lsb:
aptitude install lsb
14) Para luego retomar la instalación del driver de la impresora. Entonces el server "no se queja" de nada y el driver se instala sin problemas. Retomo la instalación de la impresora desde la interfaz web:


15) Tiro 3 impresiones de prueba:


16) Los trabajos de impresión resultantes quedan "registrados" en /var/spool/cups:


17) Y luego de borrar el contenido del directorio mencionado anteriormente, el registro de los trabajos de impresión en la interfaz web desaparece:

18) Para poder conocer el porcentaje de tinta restante en los cartuchos hay que presionar -estando la impresora apagada- por al menos 3 segundos los botones de encendido y de carga de tinta. La impresora se encenderá e imprimirá una hoja con datos parecidos a los siguientes:
C:030%    Y:030%    M:030%    Bk:100%
(cartuchos Cyan, Yellow, Magenta, y Black, respectivamente)

martes, 2 de abril de 2013

Cuando no se puede escribir a un dispositivo de bloques particionado con NTFS...

Intentando hacer un backup de mi /home, esta mañana me encontré con que no podía escribir a mi disco rígido portátil. Este último estaba formateado como NTFS, tal como muchos dispositivos extraíbles hoy en día.
Cuando esto sucede, se puede montar el dispositivo y ver sus contenidos, pero no escribir en el mismo, salvo que... se tenga el paquete ntfs-3g instalado:
 gacanepa@Gabriel-PC:~$ aptitude show ntfs-3g  
 Package: ntfs-3g               
 State: not installed  
 Version: 1:2010.3.6-1  
 Priority: optional  
 Section: otherosfs  
 Maintainer: Adam Cécile (Le_Vert) <gandalf@le-vert.net>  
 Uncompressed Size: 209 k  
 Depends: libc6 (>= 2.3), libntfs-3g75  
 Description: read-write NTFS driver for FUSE  
  The ntfs-3g driver is an open source, GPL licensed, third generation Linux NTFS  
  driver which was implemented by the Linux-NTFS project. It provides full  
  read-write access to NTFS, excluding access to encrypted files, writing  
  compressed files, changing file ownership, access right.   
  Technically it's based on and a major improvement to the third generation Linux  
  NTFS driver, ntfsmount. The improvements includes functionality, quality and  
  performance enhancements.   
  ntfs-3g is based on FUSE (userspace filesystem framework for Linux), thus you  
  will have to prepare fuse kernel module to be able to use it.   
  Fuse is available in any recent kernel. No need to prepare a kernel module if  
  you are already running Debian Etch kernel or newer.  
 Homepage: http://www.ntfs-3g.org/  
De otra manera, el dispositivo es montado con el módulo NTFS del kernel, que no brinda permisos de escritura.
Después de instalar dicho paquete, pude proceder a hacer el backup necesario en mi disco portátil.

viernes, 22 de marzo de 2013

Configurando NIS (Network Information Service) - Parte 2: El cliente

Continuando con la implementación de NIS, ahora pasamos a configurar un cliente que podrá utilizar la información contenida en /etc/passwd (situado en el servidor). Los detalles de cada operación se pueden ver en la primera parte (Configurando el servidor):

1) Instalar portmap.

2) Actualizar portmap.

3) Instalar y configurar NIS con el nombre de dominio elegido anteriormente.

4) Editar el archivo /etc/hosts agregando el nombre del servidor de NIS y su FQDN (Fully Qualified Domain Name) para resolver nombres en caso de no utilizar DNS o de una falla en dicho servicio:
192.168.0.10    debian  debian.gorditolinuxero.com.ar
5) Editar el archivo /etc/yp.conf
# ypserver ypserver.network.comdomain gorditolinuxero.com.ar server debian.gorditolinuxero.com.ar
(salvo la línea que está comentada, el resto debe ir en la misma línea)
6) Editar el archivo /etc/nsswitch.conf
passwd:         nis compatgroup:          nis compatshadow:         nis compat
7) Modificar los permisos por defecto del directorio /home (esto se puede retocar luego!) para que Nautilus (o el explorador de archivos que corresponda) y XWindows permitan a los usuarios loguearse mediante una interfaz gráfica: chmod 777 /home

LISTO :).

Configurando NIS (Network Information Service) - Parte 1: El servidor

Nota: La práctica desarrollada en este post está basada en Setting up NIS (Part 1 of 2): Configuring a NIS SERVER
NIS (Network Information Service = Servicio de Información de Red) permite distribuir la información contenida en los archivos /etc/passwd y /etc/groups de un servidor a todos los demás equipos de la red, haciendo que la misma parezca transparente para los usuarios; es decir, que toda la red se comporte como si fuera un solo equipo. También permite distribuir los datos de resolución de nombres contenidos en el archivo /etc/hosts del servidor cuando por la simplicidad de la red no se considere necesario la puesta en marcha de un servicio de DNS dedicado.
Originalmente, NIS fue desarrollado por Sun Microsystems bajo el nombre de Yellow Pages, pero debido a que Yellow Pages es una marca registrada de British Telecom, luego se le cambió el nombre; sin embargo, las siglas "yp" todavía se encuentran en varios de los comandos relacionados con NIS.
Funcionalmente, NIS utiliza demonios (servicios, o procesos no interactivos) y una base de datos para proveer autenticación centralizada en una arquitectura cliente-servidor en sistemas basados en Unix, como GNU/Linux, de manera similar que Active Directory en Microsoft Windows.
Una vez puesto en marcha NIS, es importante asegurarlo mediante cifrado y la configuración apropiada utilizando los archivos hosts.allow y hosts.deny.

PASOS PARA CONFIGURAR EL SERVIDOR (ejecutar los comandos como root o con privilegios de superusuario)

1) Instalar portmap: aptitude install portmap

2) Actualizar la configuración por defecto de portmap: update-rc.d portmap defaults 10
El comando update-rc.d nos permite automatizar el proceso de creación y borrado de enlaces a los scripts de inicio, con en fin de iniciar/parar servicios. El argumento "10" se utiliza para hacer que arranque antes que NIS, que según el listado del directorio /etc/rc2.d (correspondiente al nivel de ejecución o runlevel 2 que es con el que inicia Debian por defecto):
S15nis -> ../init.d/nis
Según el man page the update-rc.d:
Si  se  usa la opción defaults entonces update-rc.d creará enlaces para arrancar los servicios en los niveles de ejecución  2345  y  parar  los servicios  en  los  niveles  de  ejecución  016.  Por omisión todos los enlaces tendrán el código de secuencia 20, pero  esto  puede  cambiarse especificando  uno  o  dos argumentos NN.  Un argumento cambia el valor por omisión del código de secuencia tanto para los enlaces de  arranque como para los de parada, y si se proporcionan dos argumentos el primero cambia el código de los enlaces de arranque y  el  segundo  el  de  los enlaces de parada.
Si el comando anterior arroja el siguiente error:
insserv: warning: current start runlevel(s) (2 3 4 5 S) of script `portmap' overwrites defaults (2 3 4 5).
hay que ejecutar antes
update-rc.d -f portmap remove
para quitar el enlace simbólico de portmap al script de inicio (/etc/init.d/portmap), y luego recrearlo utilizando:
update-rc.d portmap defaults 10
3) Instalar NIS: aptitude install nis
Al realizar la instalación, se pedirá ingresar el nombre del dominio que se utilizará:


4) Editar el archivo /etc/defaults/nis: modificar las líneas indicadas con los cambios que sean necesarios

# Are we a NIS server and if so what kind (values: false, slave, master)?
NISSERVER=master

# Are we a NIS client?
NISCLIENT=false

5) Editar el archivo /etc/ypserv.securenets: modificar la línea indicada con los cambios que sean necesarios
# This line gives access to everybody. PLEASE ADJUST!
255.255.255.0   192.168.0.0

6) Editar el archivo /var/yp/Makefile: modificar la línea indicada con los cambios que sean necesarios
ALL =   passwd shadow group hosts rpc services netid protocols netgrp

7) Reiniciar portmap: service portmap restart

8) Reiniciar NIS: service nis restart

9) Invocar /usr/lib/yp/ypinit -m para construir la lista de los hosts que van a ser los servidores NIS en la red:

At this point, we have to construct a list of the hosts which will run NIS
servers.  debian.gorditolinuxero.com.ar is in the list of NIS server hosts.  Please continue to add
the names for the other hosts, one per line.  When you are done with the
list, type a <control D>.
next host to add:  debian.gorditolinuxero.com.ar
next host to add:

10) Agregar en el servidor los usuarios y los grupos que los clientes van a usar en toda la red. Esto se lleva a cabo mediante la creación común de usuarios, incluida la asignación de contraseñas.

11) Compilar los usuarios, los grupos, y las contraseñas en la base de datos de NIS: cd /var/yp; make

LISTO :). Ahora a configurar los clientes.

viernes, 15 de marzo de 2013

Configurar disposición de teclado en Debian Squeeze

1) Ejecutar con permisos administrativos el siguiente comando: dpkg-reconfigure keyboard-configuration. Se abrirá la pantalla para elegir el tipo de teclado que tenemos:


2) Presionando Enter en la pantalla anterior pasamos a la siguiente, en la que podremos elegir el layout o disposición de nuestro teclado. En "Other" hay una lista bastante extensa de opciones para escoger:


3) Nuevamente con Enter seguimos adelante para configurar a) el comportamiento de la tecla AltGr, y b) el seteo de una tecla de composición, que permite interpretar combinaciones de teclas para producir algún caracter no disponible en el teclado:



4) Reiniciar el equipo para que tome los cambios.

Para más información:

viernes, 8 de febrero de 2013

Ejecutar consulta SQL guardada en un archivo

Esta semana se presentó en mi trabajo la necesidad de hacer dos consultas a una base de datos Oracle (Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production) para crear un reporte de producción que permitiera visualizar ciertos campos no disponibles mediante el menú estándar en el sistema.
Estas son las dos consultas y los comentarios sobre lo que aprendí al escribirlas. Para ejecutar el contenido del archivo, se escribe @nombredearchivo.sql desde el prompt del frontend del RDBMS (Relational Database Management System).
Para bases MySQL (no hace mucho adquirida por Oracle), la sintaxis es parecida, aunque reemplazando "@" por la palabra clave "source": source nombredearchivo.sql.

PRIMER CONSULTA: Uso de la función TO_DATE() para comparar fechas y SPOOL/SPOOL OFF para guardar los resultados en un archivo de texto.


SEGUNDA CONSULTA: Uso de la función TRUNC(sysdate) para obtener los registros pertenecientes a un intervalo de tiempo fijo (pero configurable).


El sitio donde aprendí lo necesario para hacer estas consultas es Burleson Consulting. Se trata de una consultora que brinda soporte y aplicaciones de Oracle (aunque indican que no están afiliados con ellos).