Mostrando entradas con la etiqueta packages. Mostrar todas las entradas
Mostrando entradas con la etiqueta packages. Mostrar todas las entradas

Red Hat, instalar versión de un paquete

Hoy toca enseñar un pequeño truco acerca de cómo instalar una versión concreta de un paquete en sistemas Red Hat. En la mayoría de los repositorios, los mantenedores van sacando nuevas versiones y aunque puede resultar muy útil tener siempre la última versión instalada (seguridad, estabilidad, etc.) puede darse el caso de que necesites una versión concreta de un paquete para una determinada prueba. En este caso, la forma de instalarlo ya no es la de siempre,
shell> yum install openssh-server
Sino que hay que saber qué versión del paquete necesitas instalar y pasársela al instalador.
Para empezar, vamos a ver el listado de paquetes disponibles en el repositorio y con su correspondiente versión.
shell> yum --showduplicates list openssh-server
Paquetes disponibles
openssh-server.x86_64   5.3p1-104.el6       base
openssh-server.x86_64   5.3p1-104.el6_6.1   updates
Y de ahí, podemos optar por instalar el paquete que deseemos, tal que así
shell> yum install package-version
Que traducido a un caso concreto, quedaría,
shell> yum install openssh-server-5.3p1-104.el6
Espero que os haya sido de ayuda.
Leer más

add-apt-repository: command not found

Ubuntu incluyó una forma muy simple de añadir nuevos repositorios de software para disponer de paquetes específicos o más recientes. Esto permite a muchas personas y empresas ofrecer repositorios de fácil instalación en el sistema, para dejar así sus paquetes disponibles. La forma de instalar estos nuevos repositorios es gracias al comando add-apt-repository. Aunque, una vez finalizada la instalación básica del sistema, éste nos puede fallar por que no tiene los paquetes necesarios instalado. Si obtenéis el siguiente error agregando un origen.
shell> add-apt-repository ppa:oisf/suricata-stable
  -su: add-apt-repository: command not found
La solución es sencilla, únicamente hay que instalar el paquete python-software-properties.
shell> apt-get install python-software-properties
Y volver a probar,
shell> add-apt-repository ppa:oisf/suricata-stable
You are about to add the following PPA to your system:
 suricata IDS stable packages
 More info: https://launchpad.net/~oisf/+archive/suricata-stable
Press [ENTER] to continue or ctrl-c to cancel adding it
...
En la última versión de Ubuntu Server, la 14.04, encontré un problema a la hora de usar add-apt-repository e instalar las dependencias para que funcionase. En éste caso, tuve que instalar el paquete software-properties-common,
shell> apt-get install software-properties-common
Y ya luego todo funcionó correctamente.
Leer más

Instalación de Oracle Java en Ubuntu

Una de las tareas que en su época se dio como más tediosa en sistemas GNU/Linux, fue la instalación de Java. Java la versión oficial, no el paquete libre, que ese viene en los repositorios, por lo que su instalación también es sencilla.
Sin embargo, gracias a la expansión de Ubuntu, la gente de Oracle creó una PPA que simplifica y mucho el proceso de instalación de Java. Los pasos a realizar, a continuación.

Instalación del nuevo repositorio

Como ya de dijo, Java está disponible para sistemas Debian desde el Oracle Java PPA, por lo que en primer lugar debemos de importarlo en nuestro sistema.
shell> add-apt-repository -y ppa:webupd8team/java
gpg: keyring `/tmp/tmp6gk849hs/secring.gpg' created
gpg: keyring `/tmp/tmp6gk849hs/pubring.gpg' created
gpg: requesting key EEA14886 from hkp server keyserver.ubuntu.com
gpg: /tmp/tmp6gk849hs/trustdb.gpg: trustdb created
gpg: key EEA14886: public key "Launchpad VLC" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
OK

Actualización de las fuentes

Como hemos añadido un nuevo lugar de fuentes, actualizamos el listado de paquetes,
shell> apt-get update

Instalación de Oracle Java

Ahora ya tenemos disponibles las diferentes versiones de Java que hay en los repositorios,
shell> apt-cache search oracle java
...
oracle-java6-installer - Oracle Java(TM) Development Kit 6
oracle-java6-set-default - Set Oracle JDK 6 as default Java
oracle-jdk7-installer - Oracle JDK7 Installer meta package
oracle-java7-installer - Oracle Java(TM) Development Kit 7
oracle-java7-set-default - Set Oracle JDK 7 as default Java
oracle-java8-installer - Oracle Java(TM) Development Kit 8
oracle-java8-set-default - Set Oracle JDK 8 as default Java
Por lo que seleccionamos la que queremos instalar y el resto será automático. Únicamente debemos de aceptar el acuerdo de licencia.
shell> apt-get install oracle-java7-installer

Comprobación

Cuando finalice la instalación, ya tenemos java y javac, entre otros, disponibles en el sistema
shell> javac -version
javac 1.7.0_72

shell> java -version
java version "1.7.0_72"
Leer más

Debian Squeeze LTS

Hace unos meses os hablé de que por fin Debian iba a tener una versión LTS (Long Term Support) y cómo activar dicho repositorio de seguridad. Puedes leer el artículo entero aquí.
Pues bien, hoy se dió a conocer una vulnerabilidad  que afecta a GNU/Linux, sí la de bash, de la que os hablaré con más detenimiento en otro momento. Quiero aprovechar para recordar que actualicéis.
Eso es lo más importante, un sistema actualizado es menos vulnerable. Aun así, si estáis empleando Debian Squeeze acordaros de incluir la línea de LTS en vuestro fichero sources.list y también, como recomendación instalar el paquete debian-security-support.
Lo primero será actualizar el sources.list, añadiendo lo siguiente,
deb http://ftp.debian.org/debian squeeze-lts main contrib
Para a continuación,
shell> apt-get update
shell> apt-get upgrade
Si no tenías este nuevo repositorio verás que se actualizan bastantes paquetes de interés, según la finalidad del sistema.

Aun así, no todos los paquetes incluidos en Debian Squeeze van a tener soporte LTS, sino que algunos terminarán por dejar de mantenerse. Para tener un listado de aquellos paquetes instalados en el equipo y que pueden no tener soporte, está el comando check-support-status. Para instalarlo,
shell> apt-get install debian-security-support
shell> check-support-status
Ended security support for one or more packages

Unfortunately, it has been necessary to end security support for some
packages before the end of the regular security maintenance life cycle.

The following packages found on this system are affected by this:

* Source:libplrpc-perl, ended on 2014-05-31 at version 0.2020-2
  Details: Not supported in squeeze LTS
  Affected binary package:
  - libplrpc-perl (installed version: 0.2020-2)

Limited security support for one or more packages

Unfortunately, it has been necessary to limit security support for some
packages.

The following packages found on this system are affected by this:

* Source:php5
  Details: See README.Debian.security for the PHP security policy
  Affected binary packages:
  - libapache2-mod-php5 (installed version: 5.3.3-7+squeeze21)
  - php5 (installed version: 5.3.3-7+squeeze21)
  - php5-cli (installed version: 5.3.3-7+squeeze21)
  - php5-common (installed version: 5.3.3-7+squeeze21)
  - php5-curl (installed version: 5.3.3-7+squeeze21)
  - php5-gd (installed version: 5.3.3-7+squeeze21)
  - php5-mysql (installed version: 5.3.3-7+squeeze21)

Tienes más información acerca de lo aquí comentado en howtoforge.com.
Leer más

dpkg: warning: package not in database

Si tienes un sistema perfectamente instalado y funcionando y con todos los paquetes que necesitas, una de las formas más cómodos que Debian/Ubuntu ofrece para sacar un listado de los paquetes instalados y poder pasárselos a otro sistema para que quede con la mismos es empleando el comando dpkg.
Lo primero es sacar el listado de los paquetes del servidor origen, tal como sigue:
shell> dpkg --get-selections > packages.list
A continuación, en el nuevo servidor los importamos e instalamos,
shell> dpkg --set-selections < packages.list
shell> apt-get dselect-upgrade

Si durante este proceso aparece este error,
dpkg: warning: package not in database
La solución es relativamente sencilla,
shell> apt-get install dselect
shell> dpkg --set-selections < packages.list
shell> apt-get dselect-upgrade
Y ya tenemos una copia de todos los paquetes instalados en el sistema origen en el sistema destino.
Leer más

Repositorios Debian squeeze LTS

Desde ya hace un tiempo se venía rumoreando y finalmente se hizo realidad: Debian 6.0 [squeeze] será la primera Debian con soporte LTS. Tras este anuncio por parte de la comunidad, era de esperar algún tipo de cambio o modificación y estos no se hicieron esperar.
Por un lado han creado una nueva lista oficial para brindar el soporte que se merece esta LTS. Te puedes suscribir a ella desde aquí.
Y por otro lado, quizás el cambio más importante de momento, es que se ha creado un nuevo repositorio para los paquetes LTS. Así que si empleas Debian squeeze y pretendes aprovechar este largo tiempo de soporte es hora de que edites tu fichero de repositorios y pongas el siguiente para binarios,
deb http://http.debian.net/debian squeeze-lts main contrib non-free
Y este otro si también deseas tener el código fuente de los paquetes,
deb-src http://http.debian.net/debian squeeze-lts main contrib non-free
Por cierto, Debian squeeze LTS tendrá soporte hasta el 6 de Febrero 2016.
Leer más

Instalación de paquetes en GNU/Linux

Por suerte, desde hace ya muchos años instalar o desinstalar paquetes en los diferentes sistemas operativos de base Linux se hizo mucho más sencillo. Al principio de los tiempos, instalar algo era casi para "nativos del código fuente". Aun recuerdo la época en la que había que compilar los binarios con todas sus dependencias. Conseguías más rendimiento, puede ser, si sabías lo que hacías, pero actualizar un paquete era casi misión imposible. El trabajo casi nunca compensaba el esfuerzo.
Por suerte, el mundo Linux avanzó y las principales distribuciones tienen desde hace mucho tiempo repositorios en los que ofrecen software ya compilado y empaquetado. Así, instalar o actualizar un paquete es una tarea muy sencilla. Pero por supuesto, cada distribución, optó por un método diferente y para nada homogéneo, ni de paquetes ni de instrucciones para la instalación.
A continuación os dejo aquí una tabla comparativa de los comandos que cada distribución tiene para hacer la misma tarea. En todos los casos, los paquetes a instalar vienen de los repositorios que estén configurados en cada uno de los sistemas.
Linux OS
search
install
update
remove
Debian
Ubuntu
Linux Mint
apt-cache search [pkg] apt-get install [pkg] apt-get upgrade apt-get remove [pkg]
Fedora
Red Hat
CentOS
yum search [pkg] yum install [pkg] yum update yum remove [pkg]
Mandriva
Mageia
urpmi -y [pkg] urpmi [pkg] urpmi-auto-select urpme [pkg]
OpenSuse zypper search [pkg] zypper install [pkg] zypper update zypper remove [pkg]
Arch pacman -Ss [pkg] pacman -S [pkg] pacman -Syu pacman -R [pkg]
Gentoo emerge -s [pkg] emerge [pkg] emerge -uD [pkg] emerge -C [pkg]
Es muy recomendable tener presente esta chuleta de ayuda siempre que tengáis que manejar más de un sistema de base Linux de una familia diferente.
Leer más

Yum, Metadata file does not match checksum

Hoy tuve una mala experiencia con yum. Necesitaba instalar unos paquetes y como siempre, en el peor momento, el mejor error. El detalle vino al intentar actualizar el listado de paquetes disponibles que tenía el servidor remoto (en este caso epel). Tras descargar la base de datos, al hacer la comparación daba un error de checksum: Los datos no coinciden!.
shell> yum install php-pdo.x86_64
...
epel/pkgtags                                       | 996 kB     00:01
http://...: [Errno -1] Metadata file does not match checksum
Trying other mirror.                               | 997 kB     00:00
epel-testing/pkgtags                               | 996 kB     00:01
http://...: [Errno -1] Metadata file does not match checksum
Este fallo se produce en numerosas ocasiones en sistemas RedHat, CentOS y Fedora, principales distribuciones basadas en RPM. El error que obtenemos, nos indica que la versión del fichero que tenemos cacheada no coincide con la versión que estamos descargando. Existen por lo tanto dos soluciones: La primera, esperar a que se caduque la caché local, lo que hará el purgado automático de dicho fichero. La segunda, forzar la limpieza de la caché con,
shell> yum clean all
Y tras ello ejecutar nuevamente el comando. Descargará todos los ficheros completos, lo que puede llevarle un tiempo si tenemos muchos repositorios, pero habremos solucionado el problema.
shell> yum install php-pdo.x86_64
...
epel/metalink                                      |  23 kB     00:00
epel                                               | 4.2 kB     00:00
epel/primary_db                                    | 6.0 MB     00:00
epel-testing/metalink                              |  23 kB     00:00
epel-testing                                       | 4.2 kB     00:00
epel-testing/primary_db                            | 405 kB     00:00
Setting up Update Process
Resolving Dependencies
...

La entrada Yum, Metadata file does not match checksum la puedes leer en El mundo en bits.
Leer más

Extraño fallo al actualizar Ubuntu


Aunque eEste es un curioso fallo que me pasó cuando estaba actualizando una estación de trabajo con Ubuntu 12.04. Aunque el fallo no tenía gran sentido, lo comento a continuación por si a alguien más le sucede que pueda ver cómo yo lo solucioné.

shell> apt-get dist-upgrade
Leyendo lista de paquetes... Hecho
...
Preconfigurando paquetes ...
(Leyendo la base de datos ... 266542 ficheros o directorios instalados actualmente.)
Desempaquetando linux-headers-3.5.0-13 (de .../linux-headers-3.5.0-13_3.5.0-13.13_all.deb) ...
dpkg-deb (subproceso): datos: error interno de lectura de gzip `: data error'
dpkg-deb: error: el subproceso  devolvió el código de salida de error 2
dpkg: error al procesar /var/cache/apt/archives/linux-headers-3.5.0-13_3.5.0-13.13_all.deb (--unpack): el subproceso dpkg-deb --fsys-tarfile devolvió el código de salida de error 2
No se escribió ningún informe «apport» porque ya se ha alcanzado el valor de «MaxReports»
                                                                           ...
Se encontraron errores al procesar:
 /var/cache/apt/archives/linux-headers-3.5.0-13_3.5.0-13.13_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Al realizar un upgrade del sistema, éste intenta instalar el paquete linux-headers-3.5.0-13_3.5.0-13.13_all.deb, pero terminada dando un fallo que impide su instalación, dejando el sistema de paquetes "tocado".
Lo primero que se me ocurre es forzar la instalación de los paquetes, para ver si ésto soluciona el problema.
shell> apt-get install -f
...
Los paquetes indicados a continuación se instalaron de forma automática y ya no son necesarios.
  linux-headers-3.2.0-23 linux-headers-3.2.0-24 linux-headers-3.2.0-24-generic linux-headers-3.2.0-23-generic-pae linux-headers-3.2.0-24-generic-pae
  linux-headers-3.2.0-23-generic
Utilice «apt-get autoremove» para eliminarlos.
Se instalarán los siguientes paquetes extras:
  linux-headers-3.5.0-13
Se instalarán los siguientes paquetes NUEVOS:
  linux-headers-3.5.0-13
0 actualizados, 1 se instalarán, 0 para eliminar y 1 no actualizados.
20 no instalados del todo o eliminados.
Se necesita descargar 0 B/12,2 MB de archivos.
Se utilizarán 58,7 MB de espacio de disco adicional después de esta operación.
¿Desea continuar [S/n]? 
(Leyendo la base de datos ... 266542 ficheros o directorios instalados actualmente.)
Desempaquetando linux-headers-3.5.0-13 (de .../linux-headers-3.5.0-13_3.5.0-13.13_all.deb) ...
dpkg-deb (subproceso): datos: error interno de lectura de gzip `: data error'
dpkg-deb: error: el subproceso  devolvió el código de salida de error 2
dpkg: error al procesar /var/cache/apt/archives/linux-headers-3.5.0-13_3.5.0-13.13_all.deb (--unpack):
 el subproceso dpkg-deb --fsys-tarfile devolvió el código de salida de error 2
Se encontraron errores al procesar:
 /var/cache/apt/archives/linux-headers-3.5.0-13_3.5.0-13.13_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Aunque obtenemos el mismo fallo al intentar instalar el paquete. Así que vamos a optar por desinstalarlo  ya que además son las cabeceras de una versión del kernel que no estaba siendo usada.
shell> apt-get remove --purge linux-headers-3.5.0-13
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
El paquete linux-headers-3.5.0-13 no está instalado, no se eliminará
Tal vez quiera ejecutar «apt-get -f install» para corregirlo:
Los siguientes paquetes tienen dependencias incumplidas:
 linux-headers-3.5.0-13-generic : Depende: linux-headers-3.5.0-13 pero no va a instalarse
E: Dependencias incumplidas. Intente «apt-get -f install» sin paquetes (o especifique una solución).
Nuevamente no nos lo permite hacer y nos indica que la forma solucionarla es una que ya probamos con anterioridad y no funcionó.
La solución encontrada viene de la mano de dpkg y es la siguiente.
shell> dpkg --remove --force-remove-reinstreq linux-headers-3.5.0-13-generic
(Leyendo la base de datos ... 266541 ficheros o directorios instalados actualmente.)
Desinstalando linux-headers-3.5.0-13-generic ...
shell> apt-get clean
Tras ello, volvemos a intentar instalar todos los paquetes que tengamos pendientes y parece que ya todo está correcto.
shell> apt-get install -f
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
Corrigiendo dependencias... Listo
Los paquetes indicados a continuación se instalaron de forma automática y ya no son necesarios.
  linux-headers-3.2.0-23 linux-headers-3.2.0-24 linux-headers-3.2.0-24-generic linux-headers-3.2.0-23-generic-pae linux-headers-3.2.0-24-generic-pae
  linux-headers-3.2.0-23-generic
Utilice «apt-get autoremove» para eliminarlos.
Se instalarán los siguientes paquetes extras:
  linux-headers-3.5.0-13 linux-headers-3.5.0-13-generic
Se instalarán los siguientes paquetes NUEVOS:
  linux-headers-3.5.0-13 linux-headers-3.5.0-13-generic
0 actualizados, 2 se instalarán, 0 para eliminar y 0 no actualizados.
20 no instalados del todo o eliminados.
Necesito descargar 13,2 MB de archivos.
Se utilizarán 69,9 MB de espacio de disco adicional después de esta operación.
¿Desea continuar [S/n]? 
Des:1 http://ppa.launchpad.net/xorg-edgers/ppa/ubuntu/ precise/main linux-headers-3.5.0-13 all 3.5.0-13.13 [12,2 MB]
Des:2 http://ppa.launchpad.net/xorg-edgers/ppa/ubuntu/ precise/main linux-headers-3.5.0-13-generic i386 3.5.0-13.13 [1.010 kB]
Descargados 13,2 MB en 3seg. (3.743 kB/s)             
(Leyendo la base de datos ... 257690 ficheros o directorios instalados actualmente.)
Desempaquetando linux-headers-3.5.0-13 (de .../linux-headers-3.5.0-13_3.5.0-13.13_all.deb) ...
Seleccionando paquete linux-headers-3.5.0-13-generic previamente no seleccionado
Desempaquetando linux-headers-3.5.0-13-generic (de .../linux-headers-3.5.0-13-generic_3.5.0-13.13_i386.deb) ...
Configurando libllvm3.1 (3.1-1~precise1) ...
Configurando libgl1-mesa-dri (9.0~git20120901+9.0.6886da78-0ubuntu0ricotz2~precise) ...
Configurando libxatracker1 (9.0~git20120901+9.0.6886da78-0ubuntu0ricotz2~precise) ...
Configurando linux-image-3.5.0-13-generic (3.5.0-13.13) ...
Running depmod.
update-initramfs: deferring update (hook will be called later)
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.5.0-13-generic /boot/vmlinuz-3.5.0-13-generic
update-initramfs: Generating /boot/initrd.img-3.5.0-13-generic
run-parts: executing /etc/kernel/postinst.d/pm-utils 3.5.0-13-generic /boot/vmlinuz-3.5.0-13-generic
run-parts: executing /etc/kernel/postinst.d/update-notifier 3.5.0-13-generic /boot/vmlinuz-3.5.0-13-generic
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.5.0-13-generic /boot/vmlinuz-3.5.0-13-generic
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.5.0-13-generic
Found initrd image: /boot/initrd.img-3.5.0-13-generic
Found linux image: /boot/vmlinuz-3.2.0-24-generic
Found initrd image: /boot/initrd.img-3.2.0-24-generic
Found linux image: /boot/vmlinuz-3.2.0-23-generic
Found initrd image: /boot/initrd.img-3.2.0-23-generic
Found memtest86+ image: /boot/memtest86+.bin
done
Configurando libhpmud0 (3.12.2-1ubuntu3.1) ...
Configurando libsane-hpaio (3.12.2-1ubuntu3.1) ...
Configurando hplip-data (3.12.2-1ubuntu3.1) ...
Configurando printer-driver-hpcups (3.12.2-1ubuntu3.1) ...
Configurando hplip (3.12.2-1ubuntu3.1) ...
Creating/updating hplip user account...
Configurando printer-driver-postscript-hp (3.12.2-1ubuntu3.1) ...
Configurando libcrystalhd3 (1:0.0~git20110715.fdd2f19-4.1) ...
Configurando linux-headers-3.5.0-13 (3.5.0-13.13) ...
Configurando linux-headers-3.5.0-13-generic (3.5.0-13.13) ...
Configurando linux-headers-generic (3.5.0.13.13) ...
Configurando linux-image-extra-3.5.0-13-generic (3.5.0-13.13) ...
Running depmod.
update-initramfs: deferring update (hook will be called later)
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.5.0-13-generic /boot/vmlinuz-3.5.0-13-generic
update-initramfs: Generating /boot/initrd.img-3.5.0-13-generic
run-parts: executing /etc/kernel/postinst.d/pm-utils 3.5.0-13-generic /boot/vmlinuz-3.5.0-13-generic
run-parts: executing /etc/kernel/postinst.d/update-notifier 3.5.0-13-generic /boot/vmlinuz-3.5.0-13-generic
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.5.0-13-generic /boot/vmlinuz-3.5.0-13-generic
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.5.0-13-generic
Found initrd image: /boot/initrd.img-3.5.0-13-generic
Found linux image: /boot/vmlinuz-3.2.0-24-generic
Found initrd image: /boot/initrd.img-3.2.0-24-generic
Found linux image: /boot/vmlinuz-3.2.0-23-generic
Found initrd image: /boot/initrd.img-3.2.0-23-generic
Found memtest86+ image: /boot/memtest86+.bin
done
Configurando linux-image-generic (3.5.0.13.13) ...
Configurando postfix (2.9.3-2~12.04.3) ...

Postfix configuration was not changed.  If you need to make changes, edit
/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration
values, see postconf(1).

After modifying main.cf, be sure to run '/etc/init.d/postfix reload'.

Running newaliases
 * Stopping Postfix Mail Transport Agent postfix          [ OK ] 
 * Starting Postfix Mail Transport Agent postfix          [ OK ] 
Configurando printer-driver-hpijs (3.12.2-1ubuntu3.1) ...
Configurando vlc-nox (2.0.3-0ubuntu0.12.04.1) ...
Configurando vlc-plugin-notify (2.0.3-0ubuntu0.12.04.1) ...
Configurando vlc (2.0.3-0ubuntu0.12.04.1) ...
Configurando vlc-plugin-pulse (2.0.3-0ubuntu0.12.04.1) ...
Procesando disparadores para libc-bin ...
ldconfig deferred processing now taking place
Leer más

Firmar paquete RPM local

Muy estrechamente relacionado con el tema de crear repositorios locales para RedHat/CentOS, está la necesidad de autenticar dichos repositorios y el contenido de los mismo. Está claro que si el repositorio se sirve vía http, podemos emplear https con un certificado válido para nuestra empresa y así ya tener autenticación de origen de datos, sin embargo no tenemos ninguna garantía de que los paquetes que vamos a instalar estén realmente firmados como es debido. Para ello, cada vez que creemos un paquete que se vaya a subir al repositorio, antes de hacerlo, deberíamos de firmarlo. En este post, vamos a ver cómo conseguirlo.
Primero comenzamos creando una clave gpg para el firmado. Obviamente esta clave es generada localmente, por lo que el certificado no estará aceptado por autoridades externas.
shellgpg --gen-key
gpg (GnuPG) 1.4.10; Copyright (C) 2008 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Por favor seleccione tipo de clave deseado:
  (1) RSA and RSA (default)
  (2) DSA and Elgamal
  (3) DSA (sólo firmar)
  (4) RSA (sólo firmar)
Su elección: 1
las claves RSA pueden tener entre 1024 y 4096 bits de longitud.
¿De qué tamaño quiere la clave? (2048)
El tamaño requerido es de 2048 bits
Por favor, especifique el período de validez de la clave.
  0 = la clave nunca caduca
    = la clave caduca en n días
  w = la clave caduca en n semanas
  m = la clave caduca en n meses
  y = la clave caduca en n años
¿Validez de la clave (0)? 0
La clave nunca caduca
¿Es correcto? (s/n) s
Necesita un identificador de usuario para identificar su clave. El programa
construye el identificador a partir del Nombre Real, Comentario y Dirección
de Correo Electrónico de esta forma:
    "Heinrich Heine (Der Dichter) "
Nombre y apellidos: Javier Terceiro
Dirección de correo electrónico: javier@miempresa.com
Comentario:
Ha seleccionado este ID de usuario:
    "Javier Terceiro "
¿Cambia (N)ombre, (C)omentario, (D)irección o (V)ale/(S)alir? V
Necesita una frase contraseña para proteger su clave secreta.

Es necesario generar muchos bytes aleatorios. Es una buena idea realizar
alguna otra tarea (trabajar en otra ventana/consola, mover el ratón, usar
la red y los discos) durante la generación de números primos. Esto da al
generador de números aleatorios mayor oportunidad de recoger suficiente
entropía.
..+++++......++++++++++
gpg: clave 1C5D59BF marcada como de confianza absoluta
claves pública y secreta creadas y firmadas.

gpg: comprobando base de datos de confianza
gpg: 3 dudosa(s) necesarias, 1 completa(s) necesarias,
modelo de confianza PGP
gpg: nivel: 0  validez: 1  firmada: 0  confianza: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048R/1C5D59BF 2012-05-21
  Huella de clave = 2493 D660 1A83 12F5 0A50  2E71 8A82 1165 1C5D 59BF
uid                  Javier Terceiro 
sub   2048R/25A1D82A 2012-05-21
Una vez tengamos la firma creada, ya estamos preparados para firmar todos los paquetes que vayamos creando. Para ello, vamos a crear el fichero .rpmmacros en la home del usuario que los vaya a firmar. Dicho fichero tendrá el siguiente contenido.
%_signature gpg
%_gpg_name Repository Owner
Y ahora para firmar un paquete nuevo, únicamente hay que ejecutar,
shell> rpm --resign zabbix-server-1.8.12.src.rpm
Enter pass phrase:
Pass phrase is good.
zabbix-server-1.8.12.src.rpm
Y si ahora interesa saber si el fichero está correctamente firmado, simplemente,
shell> rpm -K zabbix-server-1.8.12.src.rpm
zabbix-server-1.8.12.src.rpm: (SHA1) DSA sha1 md5 (GPG) NOT OK (MISSING KEYS: GPG#1C5D59BF)
Como podéis ver algo muy simple de hacer y que te aporta ese extra de seguridad a los paquetes que tú mismo crees y que evitará que ante un ataque se sustituyan por otros infectados.

Leer más

RedHat, limpiar paquetes descargados

Una de las cosas que siempre suele suceder al instalar y actualizar paquetes en nuestras distribuciones es que estos terminan ocupando más espacio del que deberían. Por defecto, al actualizar un paquetes, éste suele ocupar un poco más de espacio que el anterior, por nuevas funcionalidades o librerías nuevas que incluya, pero a mayores, ocupa todo el espacio del propio paquete que se descargar. Este paquete queda en la caché de nuestro gestor de paquetes y por lo tanto en disco, aunque no sea estrictamente necesario.
En sistemas debian, para hacer un purgado de dichos ficheros nos llega con hacer,
shell> apt-get clean
En sistemas Redat/CentOS, que emplean yum, también podemos hacer algo similar que ayuda al purgado de dichos paquetes,
shell> du -sh /var/cache/yum
48M   /var/cache/yum
shell> yum clean all
Loaded plugins: fastestmirror
Cleaning up Everything
Cleaning up list of fastest mirrors
shell> du -sh /var/cache/yum
84K   /var/cache/yum
Como se puede observar, tras el purgado el espacio fue liberado. En el fichero de configuración, /etc/yum.conf, está definido el directorio cachedir.
Leer más

Failed to load application: No module named MySQLdb

Este error puede ser común y aunque yo lo describo para el empleo del honeypot kippo, la solución me imagino que será aplicable a cualquier caso. Si estáis trabajando con kippo y al arrancarlo os suelta el siguiente error,
shell> ./start.sh
Starting kippo in background...Removing stale pidfile /home/javier/kippo-0.5/kippo.pid
Loading dblog engine: mysql
Traceback (most recent call last):
  File "/usr/lib/python2.6/dist-packages/twisted/application/app.py", line 626, in run
    runApp(config)
  File "/usr/lib/python2.6/dist-packages/twisted/scripts/twistd.py", line 23, in runApp
    _SomeApplicationRunner(config).run()
  File "/usr/lib/python2.6/dist-packages/twisted/application/app.py", line 374, in run
    self.application = self.createOrGetApplication()
  File "/usr/lib/python2.6/dist-packages/twisted/application/app.py", line 439, in createOrGetApplication
    application = getApplication(self.config, passphrase)
---  ---
  File "/usr/lib/python2.6/dist-packages/twisted/application/app.py", line 450, in getApplication
    application = service.loadApplication(filename, style, passphrase)
  File "/usr/lib/python2.6/dist-packages/twisted/application/service.py", line 390, in loadApplication
    application = sob.loadValueFromFile(filename, 'application', passphrase)
  File "/usr/lib/python2.6/dist-packages/twisted/persisted/sob.py", line 210, in loadValueFromFile
    exec fileObj in d, d
  File "kippo.tac", line 28, in 
    factory = honeypot.HoneyPotSSHFactory()
  File "/home/javier/kippo-0.5/kippo/core/honeypot.py", line 392, in __init__
    globals(), locals(), ['dblog']).DBLogger(cfg)
  File "/home/javier/kippo-0.5/kippo/dblog/mysql.py", line 5, in 
    import MySQLdb, uuid
exceptions.ImportError: No module named MySQLdb

Failed to load application: No module named MySQLdb
Lo que os falta es la librería de acceso a MySQL desde python. Por lo tanto la solución,
shell> apt-get install python-mysqldb
Con lo que kippo arrancará perfectamente.
shell> ./start.sh
Starting kippo in background...Loading dblog engine: mysql
Leer más

rpm rollback package

El sistema de paquetería RPM no deja de sorprenderme y cada día más. Hoy descubrí un pequeño gran truco. Nada más ni nada menos que el rollback de los paquetes. Esto quiere decir, la marcha atrás de una actualización o instalación de algún paquete, por si el resultado no es el esperado. Tenerlo habilitado, lógicamente consume más espacio es disco, pero los amplios beneficios que ofrece, creo que compensan con creces el espacio extra.
Según lo que dice la documentación oficial, hay que decir que el rollback dejó de estar soportado "oficialmente" desde la versión RHEL 5, aunque internamente sigue funcionando. Así que vamos a ver cómo configurarla y emplearla.

  • Editamos el fichero /etc/yum.conf y agregamos la línea
    tsflags=repackage
    
    Con ello conseguimos indicarle a yum que debe guardar la información necesaria para poder realizar rollback de los paquetes.
  • Editamos el fichero /etc/rpm/macros y agregamos la línea
    %_repackage_all_erasures 1
    
    Esta configuración le indica al sistema rpm lo mismo que la anterior.
A partir de este punto el sistema está ya preparado para regresar a un estado anterior si fuera necesario. La forma de poder conseguirlo no es otros que indicándole a rpm la fecha a la que queremos que regrese con la opción rollback,
shell> rpm -Uvh -rollback '1 day ago'
Leer más

RPM, fecha de instalación de un paquete

Aunque no es algo habitual, quizás en algún momento nos interesa saber en qué día y a qué hora se instaló un paquete en nuestro sistema Red Hat/CentOS, así que la mejor forma de saberlo es preguntárselo a rpm. Este comando nos puede dar un listado de todos los paquetes instalados con la fecha exacta de su instalación. Si el sistema está recién instalado, lo más normal es que todos tengan la misma hora, pero a partir de ahí, según posteriores actualizaciones y nuevas instalaciones, se podrá ver cómo estos van cambiando poco a poco su fecha. Para poder obtener la fecha, únicamente hay que emplear la opción --last.
shell> rpm -qa --last
sudo-1.7.2p1-14.el5_8.3                       Thu Aug 16 13:07:28 2012
nss-tools-3.13.5-4.el5_8                      Tue Aug  7 09:11:48 2012
nscd-2.5-81.el5_8.4                           Tue Aug  7 09:11:48 2012
tzdata-2012c-3.el5                            Tue Aug  7 09:10:41 2012
libtiff-3.8.2-15.el5_8                        Mon Jul  9 09:08:25 2012
e2fsprogs-libs-1.39-34.el5_8.1                Thu Jun 28 11:02:23 2012
perl-Date-Calc-5.4-1.2.2.1                    Wed Jun 20 10:49:01 2012
perl-Bit-Vector-6.4-2.2.2.1                   Wed Jun 20 10:49:01 2012
...
O aplicándolo a un sólo paquetes,
shell> rpm -qa --last sudo
sudo-1.7.2p1-14.el5_8.3                       Thu Aug 16 13:07:28 2012
Este comando a mayores de indicarnos la fecha nos permite obtener un listado de los paquetes que se han instalado juntos (coinciden en fecha), lo que puede ayudar a diagnosticar un problema en el sistema en caso de que algo falle tras la instalación de algún software.
Leer más

¿A qué paquete pertenece un fichero?

¿A qué paquete pertenece un fichero? Gracias al comando dpkg esta respuesta es muy simple. Si nos interesa saber a qué paquete pertenece un fichero que tenemos instalado en nuestro sistema, únicamente empleamos la opción -S y listo. Un ejemplo,
shell> dpkg -S puppetd
puppet: /usr/sbin/puppetd
puppet: /usr/share/man/man8/puppetd.8.gz
puppet: /usr/bin/puppetdoc
Por lo tanto si aparece un ejecutable que no pertenezca a ninguno de los paquetes que estén instalados en el sistema, habrá que ver de dónde ha salido.
Más trucos interesantes sobre dpkg, aquí.
Leer más

Notificación de actualizaciones en RedHat/CentOS

En sistemas Debian/Ubuntu tenemos software ya especializado en buscar actualizaciones, que podemos hacer que se ejecute diariamente y así tener un informe diario de si hay o no hay actualizaciones pendientes para el sistema. En CentOS/RedHat ésto también es posible y sin necesidad de instalar ningún paquete adicional, sino que el propio gestor de paquetes, yum, trae una opción para hacer tal tarea. Vamos a ver cómo funciona y cómo poder configurarla.
Para empezar, necesitaremos editar el fichero /etc/yum/yum-updatesd.conf y dejarlo tal que así
[main]
# how often to check for new updates (in seconds)
run_interval = 86400
# how often to allow checking on request (in seconds)
updaterefresh = 600

# how to send notifications (valid: dbus, email, syslog)
emit_via = email
email_to = admin@tu_empresa.com
email_from = root@tu_empresa.com
# should we listen via dbus to give out update information/check for
# new updates
dbus_listener = yes

# automatically install updates
do_update = no
# automatically download updates
do_download = no
# automatically download deps of updates
do_download_deps = no
Las opciones importantes, las marcadas en negrita, significan:
  • run_interval
    Es el intervalo de frecuencia de búsqueda de actualizaciones. Por defecto viene establecido a una hora (3600 segundos) y lo vamos a poner diario (86400 segundos).
  • emit_via
    Es la forma de notificación de alertas de upgrades. Pueden ser vía email o vía syslog. Como nos interesa tener notificaciones vía mail, seleccionamos email.
  • email_to
    A quién va destinado el correo.
  • email_from
    De quién va a venir el correo.
Una vez tengamos todo listo, sólo queda reiniciar el servicio. Para ello,
shell> /etc/init.d/yum-updatesd restart
   Deteniendo yum-updatesd:                                   [  OK  ]
   Iniciando yum-updatesd:                                    [  OK  ]
Y el correo que tendrá un contenido similar al siguiente,
Hi,
This is the automatic update system on servidorLinux.dominio.com

There are 8 package updates available. Please run the system updater.

Packages available for update:
    portmap
    bind-libs
    man-pages-es
    libselinux-ruby
    rkhunter
Leer más

CentOS forzar desinstalación de paquetes

Por defecto y desde hace ya algunas versiones Red Hat y por lo tanto CentOS han implantado yum como herramienta para la gestión de paquetes. Sin embargo todavía queda presente el comando rpm que sigue plenamente funcional y que en determinadas ocasiones nos puede ayudar a solucionar problemas.
Como vimos en un post anterior, para desinstalar paquetes desde yum, se emplea la opción erase. En caso de que alguna dependencia falle y no se permita desinstalar el software, el comando no seguirá, por lo que si necesitamos desinstalar dicho paquete, habrá que recurrir al uso de rpm.
Por lo tanto, si interesa desinstalar un paquete, pero no todas las dependencias que éste desinstalará, lo podremos lograr así,
shell> rpm -e --nodeps PACKAGE
En caso de que el número de dependencias sea excesivo y pueda hacer algo que no interesa, se puede forzar la desinstalación de un paquete tal que así, evitando todas las dependencias.
shell> rpm -e --justdb --nodeps PACKAGE
Leer más

Can't locate Date/Calc.pm in CentOS

En ocasiones puede que tengamos un pequeño programa escrito en perl que hace uso de la librería Date::Calc, para el manejo y cálculo más exacto de fechas. Pues bien, para poder emplearla hay que tener instaladas las librerías específicas. En Debian/Ubuntu éstas se llaman libdate-calc-perl y se instalan de forma muy sencilla. El problema está en CentOS/RedHat, que si no las tenemos obtenemos el siguiente fallo (al igual que en cualquier otro sistema).
Can't locate Date/Calc.pm in @INC (@INC contains:
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.8
/usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.8
/usr/lib/perl5/vendor_perl
/usr/lib/perl5/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/5.8.8 .) at /usr/local/sbin/program.pl line 192.
Pues bien, para evitar dicho fallo, lo mejor es lógicamente instalar las librerías necesarias y en RedHat/CentOS, el nombre de dicha librería es perl-Date-Calc.
shell> yum search date-cal
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.bofh.so
 * epel: mirror.uv.es
 * extras: mirror.ate.info
 * updates: mirror.ate.info
==================== Matched: date-cal ====================
perl-Date-Calc.i386 : Un modulo para calculos de fechas eficiente ...
Por lo tanto, sirviéndonos de yum, la instalamos en nuestro equipo y el fallo desaparecerá.
shell> yum install perl-Date-Calc
Leer más

yum, listado de paquetes por tamaño

Otro de los plugins interesantes que le dan una funcionalidad extra a yum es yum-list-data. Aunque su funcionalidad es relativa, sí es cierto que sirve para sacar estadísticas de aquellos paquetes que hay instalados en el sistema y saber el tamaño de los mismos, así como saber el porcentaje de paquetes por rangos de tamaños.
Algo que como ya dije, sólo sirve para tener un poco más controlado el sistema, pero que en determinadas ocasiones puede resultar de cierta utilidad.
Primeramente, procedemos a su instalación,
shell> yum install yum-list-data 
y una vez instalado, simplemente lo usamos.
shell> yum -C info-package-sizes installed
==================== Installed Packages ====================
[    1B -  10KB ]        9 (  3%)
 basesystem-10.0-4.el6.noarch                   124   (   124)
...
[  10KB -  25KB ]        7 (  2%)
 device-mapper-event-libs-1.02.66-6.el6.i686    19 k (19.420)
...
[  25KB -  50KB ]       24 (  9%)
 b43-openfwwf-5.2-4.el6.noarch                  32 k (33.000)
...
 yum-plugin-versionlock-1.1.30-10.el6.noarch    45 k (45.992)

[  50KB -  75KB ]       14 (  5%)
 bzip2-libs-1.0.5-7.el6_0.i686                  69 k (70.864)
...
[  75KB - 100KB ]       10 (  3%)
 bzip2-1.0.5-7.el6_0.i686                       77 k ( 78.612)
...
[ 250KB - 500KB ]       41 ( 15%)
 compat-readline5-5.2-17.1.el6.i686             320 k (327.432)
  curl-7.19.7-26.el6_1.2.i686                   345 k (352.904)
...
[ 500KB - 750KB ]       27 ( 10%)
 atmel-firmware-1.3-7.el6.noarch                716 k (733.156)
...
[   1MB -   5MB ]       40 ( 15%)
 authconfig-6.1.12-5.el6.i686                   1.8 M (1.856.068)
...
[   5MB -  10MB ]       12 (  4%)
 binutils-2.20.51.0.2-5.28.el6.i686             8.9 M ( 9.279.944)
...
[  10MB -  50MB ]        5 (  1%)
 coreutils-8.4-16.el6.i686                      12 M (12.672.740)
...
[  50MB - 100MB ]        2 (  0%)
 kernel-2.6.32-220.el6.i686                     63 M ( 66.007.368)
...
[ 100MB - 500MB ]        1 (  0%)
 glibc-common-2.12-1.47.el6_2.5.i686            107 M (112.361.324)

info-package-sizes done
Leer más

unattended-upgrades, actualización automática

Uno de los grandes problema que suceden en grandes instalaciones es el tema de las actualizaciones. Mantener un número elevado de equipos actualizados puede llevar mucho tiempo, así que poder automatizar esta tarea es algo esencial. Para hacerlo, existe unattended-upgrades, que no es más que una sencilla aplicación que realiza las actualizaciones automáticas del sistema. Puede realizar actualizaciones de seguridad, de la rama estable, o de un repositorio concreto. Su uso de forma regular es altamente recomendable, especialmente en equipos de sobremesa. Quizás en servidores de producción haya que tener más cuidado con lo que se actualiza, pero en sobremesas, su uso es ideal.
Vamos a comenzar por instalarlo.
shell> apt-get install unattended-upgrades
Una vez tenemos el paquete instalado, hay que crear el fichero /etc/apt/apt.conf.d/10periodic con el siguiente contenido. Este fichero sirve para configurar las actualizaciones automáticas.
APT::Periodic::Enable "1"; 
APT::Periodic::Update-Package-Lists "1"; 
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7"; 
APT::Periodic::Unattended-Upgrade "1"; 
APT::Periodic::RandomSleep "900";
  • APT::Periodic::Enable
    Activamos las actualizaciones automáticas.
  • APT::Periodic::Update-Package-Lists
    Actualizamos la lista de paquetes disponibles (apt-get update).
  • APT::Periodic::Download-Upgradeable-Packages
    Descargamos los paquetes actualizables.
  • APT::Periodic::AutocleanInterval
    Se ejecuta un apt-get clean.
  • APT::Periodic::RandomSleep
    Actualización aleatoria de 900 segundos.
  • APT::Periodic::Unattended-Upgrade
    Se ejecuta unattended-upgrade cada 1 día.
Ahora toca modificar el fichero /etc/apt/apt.conf.d/50unattended-upgrades, en el que elegimos lo qué se actualiza de nuestra distribución y lo que no.
Unattended-Upgrade::Allowed-Origins {
        "${distro_id} stable";
        "${distro_id} ${distro_codename}-security";
        "${distro_id} ${distro_codename}-updates";
//      "${distro_id} ${distro_codename}-proposed-updates";
};
En este caso, optamos por actualizar el sistema (rama estable), así como actualizaciones de seguridad y update. Ahora, ya con todo configurado, reiniciamos el servicio.
shell> /etc/init.d/unattended-upgrades restart
Como puede también ser de interés, unattended-upgrades, tiene la posibilidad de ejecutarse como un comando, y así podemos ver lo que hace.
shell> unattended-upgrade
O bien, simular lo que haría si se ejecutase. Esto es muy interesante en caso de que la actualización pueda suponer cambios muy drásticos.
shell> unattended-upgrade --dry-run
Leer más

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios