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

Limitar velocidad de descarga para APT

Con los nuevos métodos de trabajo que se están implantando en entornos grandes, cada vez resulta más necesario tener un método de control que limite ciertos problemas de colapso de red. Uno de ellos es la instalación/actualización de paquetes en los servidores. Imaginaros que tenemos una red de 100 ordenadores con Debian/Ubuntu y decidimos instalar un nuevo paquete en todos. Herramientas como salt stack  hacen esta trabajo realmente sencillo y rápido,
shell> salt -G 'os:Debian' pkg.install vim
y mandar a 100 equipos descargar un mismo paquete en un mismo momento, puede provocar un colapso de red y ésta afectaría a todos los equipos y personas que estén en ella.
Para evitarlo, si empleamos herramientas de orquestación, por ejemplo para sistemas Debian, es muy recomendable configurar un máximo de velocidad de descarga desde los repositorios APT. Así evitaremos un sobre saturar de la red. Hacerlo es tan sencillo como crear el fichero /etc/apt/apt.conf.d/99limit con el siguiente contenido,
Acquire
{
   Queue-mode "access";
   http
   {
      Dl-Limit "25";
   };
};
Tras guardarlo, la próxima vez que empleemos apt, la velocidad de descarga se limitará a los kbs aquí establecidos (más o menos).
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

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

Debian squeeze: Error de GPG

La semana pasada se descubrió un interesante y grave fallo de seguridad en el paquete OpenSSL. Existía una función con la palabra reservada goto que podía aprovecharse para hacer cosas extrañas y entre otras, crear certificados SSL no válidos.
La verdad es que la primera vez que lo leí, me quedé bastante sorprendido, pues hacía años que no veía el goto, muy famoso en lenguajes deprecated, como pueden ser Pascal o Cobol. Pero cierto es que se usa también en lenguajes como C. Una vez apareció el bug, presente desde 2005, y la forma de explotarlo, era lógico que alguien lo hiciera. Imaginaros la sorpresa, y susto, que llevé cuando una buena amiga me pasa este fallo que le estaba dando una debian al intentar actualizar el listado de paquetes.
shell> apt-get update
...
W: Error de GPG: http://ftp.es.debian.org squeeze-updates Release: Las firmas siguientes no se pudieron verificar porque su llave pública no está disponible: NO_PUBKEY 8B48AD6246925553
Lo primero que pensé, alguien accedió a los servidores de es.debian.org y está haciendo cosas raras. Ya bien hayan sido hackeados o bien alguien haya conseguido redireccionar todo el tráfico a otras máquinas. Por suerte, emplear paquetes firmados sirve de algo. Después de una búsqueda inicial y observar que el certificado de es.debian no había sido violado, tocaba arreglar el problema. Instalar paquetes desde servidores que no confías no es buena idea.
Comenzamos viendo el listado repositorios que tenía el servidor configurados.
shell> cat /etc/apt/sources.list
deb http://ftp.es.debian.org/debian/   squeeze main
deb http://security.debian.org/        squeeze/updates main
deb http://ftp.es.debian.org/debian/   squeeze-updates main
Los servidores era buenos y estaban bien. No había nada extraño y desde el equipo contestaba la IP que era de esperar a dicho DNS. Entonces, ¿qué es lo que podía estar pasando?
Se me ocurrió entonces ver dentro de los paquetes instalados, la versión del paquete de llaves de debian que tenía instalado. Por suerte, no hacía mucho que había actualizado un equipo a squeeze y me acordaba que ese paquete se había actualizado con nuevas claves. Así que antes de seguir pensando que hay algo extraño, vamos a lo sencillo,
shell> dpkg -l |grep debian-archive-keyring
ii  debian-archive-keyring  2010.08.28  GnuPG archive keys of the Debian
He aquí el problema. La versión del paquete que está instalada no es la última. Cuando alguien actualizó ese sistema a squeeze se olvidó de actualizar uno de los paquetes más importantes. Concretamente el paquete con las nuevas llaves de los servidores. Al usar las llaves antiguas, apt daba error de clave desconocida, pues efectivamente no tenía la correcta. Para solucionarlo, actualizamos el paquete debian-archive-keyring.
shell> apt-get install debian-archive-keyring
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
Se actualizarán los siguientes paquetes:
  debian-archive-keyring
1 actualizados, 0 se instalarán, 0 para eliminar y 96 no actualizados.
...
gpg: Cantidad total procesada: 7
gpg:               importadas: 2  (RSA: 2)
gpg:              sin cambios: 5
gpg: no se encuentran claves absolutamente fiables
Tras actualizar el paquete a su última versión, apt ya no da error y el funcionamiento es el esperado, ya que las claves GPG son reconocidas.
shell> apt-get update
...
Descargados 7137 kB en 4seg. (1622 kB/s)                       
Leyendo lista de paquetes... Hecho
Lo que fue un susto inicialmente, quedó en una breve anécdota y únicamente hizo falta actualizar uno de los paquete más sencillos y a la vez más importantes del sistema. Lo que sí, casualidades de la vida, justo pasó en el momento más inoportuno con un fallo que podía haber puesto en jaque a numerosos sistemas.
Leer más

Clave GPG extras.ubuntu.com

Recién instalada la versión de Ubuntu 12.04 LTS del CD original, cambio los repositorios por lo de la distribución y me encuentro con un ya más que sabido fallo de clave GPG: "Las firmas siguientes no se pudieron verificar...". Aunque sí resulta cuando menos curioso, supongo que hace ya tiempo que dicho CD fue grabado y que no hay nada extraño en los servidores de Ubuntu, así que os explico paso a paso cómo solucionar el fallo.
No tiene mayor complicación, pero buscando por Internet vi a gente que recomendaba borrar carpetas esenciales del sistema apt para luego volver a copiarlas. Es mucho más simple y rápido. Ahí os lo dejo,
shell> apt-get update
...
Descargados 1.363 kB en 2seg. (601 kB/s)             
Leyendo lista de paquetes... Hecho
W: Error de GPG: http://extras.ubuntu.com precise Release: Las firmas siguientes no se pudieron verificar porque su llave pública no está disponible: NO_PUBKEY 16126D3A3E5C1192
shell> gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16126D3A3E5C1192
...
gpg: key 3E5C1192: public key "Ubuntu Extras Archive Automatic Signing Key ftpmaster@ubuntu.com" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1
shell> gpg --export --armor 16126D3A3E5C1192 | sudo apt-key add -
OK
shell> apt-get update
...
Descargados 72 B en 0seg. (103 B/s)
Leyendo lista de paquetes... Hecho

La entrada Clave GPG extras.ubuntu.com la puede leer en Puppet Linux.
Leer más

Crear un repositorio local para Debian/Ubuntu

Los sistemas Debian/Ubuntu emplean los paquetes .deb, que entre sus mejores características destaca la gestión de dependencias entre paquetes. Cada paquete incluye una serie de reglas de instalación y dependencias de otros paquetes, por lo que se garantizar su funcionamiento si dicho paquete está bien creado.
Como usuarios de sistemas Debian, podemos crear nuestros propios paquetes y empaquetarlos para que su instalación sea sencilla. Hace tiempo ya hablamos de cómo crear nuestra copia de los repositorios oficiales de Debian y hoy vamos a ver cómo poder crear nuestro propio repositorio, pero con los paquetes que creamos nosotros mismos.
Pero, ¿qué ventajas tiene crear un repositorio para los paquetes locales? Entre otras, podemos destacar las dos siguientes,
  • Resolución de dependencias
    Los paquetes instalados vía apt-get hacen la resolución de dependencias automáticamente, mientras que los instalados con dpkg no. Si tiene dependencias sin cumplir habría que ejecutar
    shell> apt-get -f install
    
  • Envío de paquetes a los equipos
    Otra de las principales ventajas es que no sería necesario copiar un paquete al equipo en el que queramos instalarlo. apt se encargará de hacerlo por nosotros.
Pues bien, vamos por lo tanto a crear nuestro propio repositorio con los paquetes que tengamos a mano. Estos pueden ser tanto oficiales como creados por nosotros. El único requisito, que sean .deb correctos. Nuestro repositorio lo vamos a crear bajo /var/www/repo y luego lo dejaremos accesible vía http. Lo primero es instalar el software necesario, en caso de que no esté previamente instalado.
shell> apt-get install dpkg-dev
A continuación copiamos todos los paquetes que nos interese a la raíz del nuevo repositorio.
shell> cp *.deb /var/www/repo
Ahora nos movemos al directorio del repositorio
shell> cd /var/www/repo
y ejecutamos el comando dpkg-scanpackages tal que así,
shell> dpkg-scanpackages . /dev/null | gzip > Packages.gz
Con lo que acabamos de crear un índice de paquetes, con los paquetes que hay en nuestro repositorio. Este índice es necesario, ya que es el que leen los sistemas Debian al ejecutar apt-get update.
Ya para finalizar, simplemente queda por añadir la URL que resuelva vuestra máquina a los sources.list de cada una de las máquinas en las que deseéis emplear vuestros paquetes.

Nota: El último paso hay que ejecutarlo siempre que se añada un nuevo paquete al repositorio local.

La entrada Crear un repositorio local para Debian/Ubuntu la puedes leer en El mundo en bits.
Leer más

apt-get cheat sheet

Si en un post anterior hemos dejado una pequeña chuleta de las utilidades básicas y algo más avanzadas que se pueden hacer con rpm, Debian no iba a ser menos, así que os dejo aquí una pequeña chuleta con las opciones más habituales que se suelen usar con apt-get.





  • Instalar un nuevo paquete
    shell> apt-get install package
    
  • Desinstalar un paquete
    shell> apt-get remove package
    
  • Desinstalar un paquete y purgar todos sus ficheros
    shell> apt-get remove --purge package
    
  • Actualizar listado de paquetes disponibles
    shell> apt-get update
    
  • Actualizar sistema
    shell> apt-get upgrade
    
  • Actualizar un único paquete (más dependencias)
    shell> apt-get upgrade package
    
  • Actualizar versión de distribución, o actualización con cambios en paquetes
    shell> apt-get dist-upgrade
    
  • Limpiar paquetes que ya no se usan
    shell> apt-get autoremove
    
  • Limpiar paquetes que ya no se usan y purgar ficheros
    shell> apt-get autoremove --purge
    
  • Descargar las sources de un paquete
    shell> apt-get source package
    
  • Limpiar repositorio local (libera espacio en disco)
    shell> apt-get clean
    
  • Descarga únicamente el paquete, pero lo no instala
    shell> apt-get install --download-only package
    
  • Asume como "yes" a todas las preguntas que se hagan en la instalación
    shell> apt-get install --yes package
    
  • Instala un paquete sin actualizar paquetes ya instalados
    shell> apt-get install --no-upgrade package
  • Forzar la instalación de un paquete o su reconfiguración
    shell> apt-get install -f
    
  • Forzar la configuración de una actualización
    shell> apt-get upgrade -f
    
  • Instalar dependencias de compilación de un paquete
    shell> apt-get build-dep package
    
  • Reinstalar un paquete previamente instalado
    shell> apt-get install --reinstall package
    
  • Simular la ejecución sin afectar al sistema
    shell> apt-get -s install package
    shell> apt-get -s upgrade
    
Leer más

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios