jueves, 30 de junio de 2011

FLASH OPERATOR PANEL

sudo -i
vi /etc/asterisk/manager.conf

[usuariopanel]
secret = panelpass
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.0
;permit=192.168.0.0/255.255.255.0 ;SI TU PANEL NO VA ESTAR EN EL MISMO SERVER.
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user

vi /var/www/freepbx/panel/op_server.cfg

Configurar el fop server.

Editar op_server.cfg y cambiar los parámetros apropiados para su configuración.

manager_host es el nombre de host o dirección IP de su Assudo -i
vi /etc/asterisk/manager.conf
terisk. si esta en el
mismo server es 127.0.0.1.
manager_user es la definida por el usuario en manager.conf (a raíz de este ejemplo de
configuración, debe ser "usuariopanel"(sin las comillas))
manager_secret es el secret definido para el usuario (a raíz de este ejemplo de
configuración, debe ser "panelpass"(sin las comillas))
security_code es el código para desbloquear el panel.

cd /var/www/freepbx/panel/
cp flash/* /var/www/freepbx/panel/sudo -i
vi /etc/asterisk/manager.conf


despues editar en /var/www/freepbx/admin/views/panel.php

vi /var/www/freepbx/admin/views/panel.php

debe quedar son la siguiente fuente.

src="../panel/index.html"

luego ejecutar.

chmod a+x op_server.pl

amportal stop_fop

./op_server.pl

y ya se puede ver en http://x.x.x.x/freepbx/admin/panel.php

y por ultimo

amportal restart

INSTALACIÓN DE FREEPBX

cd /usr/src/
sudo wget http://mirror.freepbx.org/freepbx-2.9.0.tar.gz
sudo tar -xzvf freepbx-2.9.0.tar.gz
cd freepbx-2.9.0

Editaremos el sources.list de nuestro apt para que recoja de los repositorios de debían multimedia, ya que necesitamos el paquete lame y no se encuentra en los repositorios oficiales de debían.

sudo vi /etc/apt/sources.list

Y añadimos al final del archivo las dos siguientes lineas:

deb http://oktan.ls.fi.upm.es/debian-multimedia/ stable main
deb-src http://oktan.ls.fi.upm.es/debian-multimedia/ stable main

luego actualizamos

sudo apt-get update

Nos dará error debido a que no hemos instaladola keys del repositorio, para ello instalamos debian-multimedia-keyring pasando del Aviso de autenticaión:

sudo apt-get install debian-multimedia-keyring
sudo apt-get update

sudo apt-get install libxml2-dev apache2 libapache2-mod-php5 php5 php-pear php5-mysql php5-gd bison libncurses5-dev libaudiofile-dev curl sox php-db lame libssl-dev

Editaremos el archivo /etc/php5/apache2/php.ini

sudo vi /etc/php5/apache2/php.ini

y buscaremos la linea

upload_max_filesize = 2M

y la cambiaremos por

upload_max_filesize =40M

Tambien dejaremos a Off en este archivo la opción magic_quotes_gpc

magic_quotes_gpc = Off

Crearemos un grupo y un usuario llamados asterisk con los siguientes comandos:
sudo groupadd asterisk
sudo useradd -c "asterisk PBX" -d /var/lib/asterisk -g asterisk asterisk
Crearemos el directorio /var/run/asterisk:
sudo mkdir /var/run/asterisk
Ahora editaremos la configuración de asterisk para que utilice el directorio que acabamos de crear como directorio de ejecución:
sudo vi /etc/asterisk/asterisk.conf
La linea a cambiar es la que dice

astrundir => /var/run

y la debemos dejar así:

astrundir => /var/run/asterisk
Ahora instalremos unos cuantos paquetes perl necesarios para FreePBX y Asterisk con los siguientes comandos:
sudo perl -MCPAN -e 'install +YAML'
Contesaremos a todo que si hasta que nos deje de nuevo en la consola
sudo perl -MCPAN -e "install IPC::Signal"
sudo perl -MCPAN -e "install Net::Telnet"
sudo perl -MCPAN -e "install Proc::WaitStat"
Ahora crearemos las bases de datos necesarias para que FreePBX vaya llenando las tablas con nuestras configuraciones y luego pase a los archivos de asterisk lo necesario para su funcionamiento, recordad que los passwords que pedirán estos comandos son los que pusimos en la instalación de mysql-server
sudo mysqladmin create asteriskcdrdb -p
sudo mysql --user=root --password=TU_PASSWORD asteriskcdrdb < /usr/src/freepbx-2.9.0/SQL/cdr_mysql_table.sql
sudo mysqladmin create asterisk -p
sudo mysql --user root -p asterisk < /usr/src/freepbx-2.9.0/SQL/newinstall.sql
sudo mysql --user root -p
mysql> GRANT ALL PRIVILEGES on asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'TU_PASSWORD_ASTERISK';

mysql> GRANT ALL PRIVILEGES on asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'TU_PASSWORD_ASTERISK';

mysql> FLUSH PRIVILEGES;

mysql> quit

Perfecto ya tenemos creadas las bases de datos con sus tablas y sus datos, ahora debemos decirle a apache2 que se ejecute como el usuario que creamos llamado asterisk y que pertenezca al grupo llamado tambien asterisk, para ello editaremos el archivo /etc/apache2/envvars y sustituiremos www-data por asterisk.
sudo vi /etc/apache2/envvars
Lo dejaremos así:
# envvars - default environment variables for apache2ctl

# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=asterisk
export APACHE_RUN_GROUP=asterisk
export APACHE_PID_FILE=/var/run/apache2.pid

Reinciamos apache2:
sudo /etc/init.d/apache2 restart
Luego nos aparecerá el siguiente error

apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

Para corregir este problema, necesitas editar el archivo httpd.conf
sudo vi /etc/apache2/httpd.conf
Por defecto el archivo httpd.conf esta en vacío, simplemente escribe lo siguiente.

ServerName localhost

Guarda el archivo y cierra el editor, y finalmente reinicias el servidor.

sudo /etc/init.d/apache2 restart


Antes de lanzar la instalación de FreePBX, debemos asegurarnos que asterisk está funcionando:
sudo kill -9 `pidof asterisk`
sudo asterisk
sudo ./install_amp
Nos debe aparecer algo como esto:
Checking for PEAR DB..OK
Checking for PEAR Console::Getopt..OK
Checking user..OK
Checking if Asterisk is running..running with PID: 29968..OK
Checking for /etc/amportal.conf../etc/amportal.conf does not exist, copying default
Creating new /etc/amportal.conf
Enter your USERNAME to connect to the 'asterisk' database:
[asteriskuser]
Enter your PASSWORD to connect to the 'asterisk' database:
[amp109] TU_PASSWORD
Enter the hostname of the 'asterisk' database:
[localhost]
Enter a USERNAME to connect to the Asterisk Manager interface:
[admin]
Enter a PASSWORD to connect to the Asterisk Manager interface:
[amp111] TU_PASSWORD
Enter the path to use for your AMP web root:
[/var/www/html]
/var/www/freepbx
Created /var/www/freepbx
Enter the IP ADDRESS or hostname used to access the AMP web-admin:
[xx.xx.xx.xx]
Enter a PASSWORD to perform call transfers with the Flash Operator Panel:
[passw0rd] TU_PASSWORD
Use simple Extensions [extensions] admin or separate Devices and Users [deviceanduser]?
[extensions]
Enter directory in which to store AMP executable scripts:
[/var/lib/asterisk/bin]

Created /var/lib/asterisk/bin
Enter directory in which to store super-user scripts:
[/usr/local/sbin]
Si llegado el caso nos aparece este error:
Checking for PEAR DB..FAILED
[FATAL] PEAR must be installed (requires DB.php). Include path: .:/usr/share/php:/usr/share/pear
entonces la solución es ejecutar en la consola
sudo pear install DB
y nuevamente ejecutar sudo ./install_amp
Después reiniciamos amportal

sudo amportal restart
Podemos comprobar visitando la página web de nuestra nueva centralita abriendo un navegador y entrando en la dirección http://xxx.xxx.xxx.xxx/freepbx
Aprovecharemos y actualizaremos FreePBX, entrad en FreePBX Administration de ahí os moveis a Module Admin, pulsad en Check for updates Online, y luego pinchad en Download All y Upgrade All y luego Process, repetir el proceso varias veces veces hasta que no quede nada por actualizar.
Para que podamos sacar llamadas por los canales Dahdi necesitaremos editar el archivo /etc/amportal.conf
sudo vi /etc/amportal.conf
Buscamos la linea comentada que pone
# ZAP2DAHDICOMPAT=true|false
La cual debe quedar asi:
ZAP2DAHDICOMPAT=true
De esta forma FreePBX sabrá configurar Asterisk para que utilize los canales Dahdi con la nueva nomenclatura y no con la antigua.
Reiniciad amportal:
sudo amportal restart­
Para que Asterisk y FreePBX se inicien cuando encendamos el equipo tendremos que realizar lo siguiente:
sudo vi /etc/init.d/inicia_asterisk.sh
Y añadiremos lo siguiente:
#!/bin/bash
/usr/local/sbin/amportal start

Demosle permisos de ejecución:
sudo chmod a+x /etc/init.d/inicia_asterisk.sh
Ahora crearemos un enlace simbólico para que al inicio del sistema llame al script que acabamos de crear:
sudo ln -s /etc/init.d/inicia_asterisk.sh /etc/rc2.d/S92inicia_asterisk
OK ESO ES TODO!!!

viernes, 20 de mayo de 2011

SERVICIO DE FAX EN ELASTIX

Primero debemos crear una extensión IAX.









Para nuestro caso elegimos la 401 y llenamos los siguientes campos.
User Extension = 401
Display Name = FAX
Secret = passwordfax

Una vez creada la extensión seleccionamos la pestaña superior que dice FAX y luego en la parte izquierda la opción New Virtual Fax. Allí introducimos los datos de nuestra extensión de Fax y el correo al cual queremos que nos lleguen los Faxes.





Recuerde que una vez creado nuestro FAX deberá aparecer con status Running and idle on ttyIAX1 de lo contrario no esta corriendo nuestro servicio de haylafax o IAXmoden en nuestra maquina. Por lo cual se debe iniciar por consola con las siguientes lineas.


# service iaxmodem start
# service hylafax start


Listo ya se puede decir que podemos recibir nuestros Faxes correctamente a nuestra maquina, pero no a nuestro correo. Para ello debemos configurar nuestro Postfix.

Configurando el servidor Postfix

La configuración de nuestro servidor postfix se encuentra en el archivo /etc/postfix/main.cf por tanto:

cd /etc/postfix
vi main.cf


Luego cambiamos las siguientes líneas:

#myhostname = host.domain.tld
#myhostname = virtual.domain.tld

Por:

myhostname = elastix.mydominio.com
#myhostname = virtual.domain.tld


Luego cambiamos:

#mydomain = domain.tld

Por:

mydomain = mydominio.com

ahora ingresamos el servidor SMTP por el cual se enviara el correo, que en nuestro caso es GMAIL.

#relayhost = $mydomain
#relayhost = [gateway.my.domain]
#relayhost = [mailserver.isp.tld]
#relayhost = uucphost
#relayhost = [an.ip.add.ress]


Por:

#relayhost = $mydomain
#relayhost = [gateway.my.domain]
relayhost = smtp.gmail.com:587
#relayhost = uucphost
#relayhost = [an.ip.add.ress]


Guardamos los cambios realizados a main.cf, luego recargamos la configuración de POSTFIX.


postfix reload


Luego necesitas modificar otra vez el archivo main.cf con los siguientes cambios, estos estan al final del archivo.

################################
#Ingresado por yb-webadmin
mydomain =mydominio.com
myhostname = elastix.mydominio.local


Configurando la cuenta de correo
Creamos el archivo sasl_passwd (sin extension)

vi /etc/postfix/sasl_passwd

Dentro del archivo registramos la cuenta de correo (existente) y su respectiva clave, esta es la cuenta desde la cual se enviaran los correos.


smtp.gmail.com:587 usuario@gmail.com:miclavedegmail


Grabamos el archive sasl_passwd.
Luego lo ciframos:

postmap hash:/etc/postfix/sasl_passwd

Luego editamos el archive main.cf

vi /etc/postfix/main.cf

Agregamos las siguientes lineas al final

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =


grabamos el archivo y recargamos la configuracion del POSTFIX.

postfix reload

Como gmail usa SSL, necesitamos un certificado SSL, así que creamos uno propio, el cual será usado por el TLS

mkdir /etc/postfix/tls
cd /etc/postfix/tls
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024

Dejar el 'challenge password' vacio:
openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

Agregar las siguientes lineas en el archivo /etc/postfix/main.cf:

smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/tls/smtpd.key
smtpd_tls_cert_file = /etc/postfix/tls/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/tls/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
tls_daemon_random_source = dev:/dev/urandom


Reiniciamos los servicios:

service saslauthd restart
service postfix restart


Para que inicien en el boot:

chkconfig postfix on
chkconfig saslauthd on

Para Revizar los logs de nuestro servicio de correo usamos:


tail -f /var/log/maillog


Abre otra consola y envia un correo para provar que esta funcionando correctamente.

mail destinatario@dominio.com
Subject: test
hello
.
Cc:


Luego de esto en el log debe salir algo parecido a esto y lo que importa es la palabra SENT:

elastix postfix/smtp[3257]: 08EAE21566: to=, relay=smtp.gmail.com[74.125.45.109]:587, delay=9.2, delays=0.21/0.06/6.8/2.1, dsn=2.0.0, status=sent (250 2.0.0 OK 1227556872 34sm10144335yxl. May 20:50:26 elastix postfix/qmgr[3250]: 08EAE21882: removed

Y Ya esta!!

miércoles, 4 de mayo de 2011

Problema del NAT en Asterisk

Hace un tiempo me encontre con el siguiente problema en una de mis instalaciones donde el cliente solicitaba una extensión por fuera de la red Local.

estaba usando X-lite mediante una cuenta SIP. La extensión se registraba OK.
Luego intentaba hacer una llamada y al establecerce no se escuchaba nada, al cabo de un rato la llamada se colgaba sola.

En un principio, todo parece ir bien, se inicia la llamada, se escucha el tono, y suena el teléfono de destino. El problema viene al descolgar, es decir, cuando el audio se establece entre los participantes de la conversación. En este punto, pueden pasar 2 cosas: que el llamante lo escuche a su interlocutor o que no haya audio en absoluto.

El protocolo SIP solo lleva la señalización de la llamada, mientras que el tráfico de audio (RTP) se intenta llevar a cabo de extremo a extremo. El problema viene por que el puerto al que se manda el audio es aleatorio. El router es capaz de dirigir correctamente la señalización, pero es incapaz de saber si el tráfico RTP es de esa llamada, y no sabe a donde mandarlo (debería mandárselo al mismo que la señalización). Como consecuencia, el audio no fluye correctamente entre los 2 interlocutores.

La solucion es Simple..

Instalé el Softphone Zoiper Mediante una Cuenta IAX y problema solucionado.

jueves, 14 de abril de 2011

Personaliza Tu ChanSpy para escuchar una extension en particular

Hola..

Asterisk cuenta con una aplicación llamada chanspy la cual se encuentra en la ruta /etc/asterisk/extension_additional.conf y por default viene así:

[app-chanspy]
include => app-chanspy-custom
exten => 555,1,Macro(user-callerid,)
exten => 555,n,Answer
exten => 555,n,Wait(1)
exten => 555,n,ChanSpy()
exten => 555,n,Hangup

; end of [app-chanspy]


Esto nos permite realizar escucha de llamadas al azar de las extensiones registradas en nuestro asterisk.
Pero si lo que queremos es monitorear una extensión en particular lo que debemos hacer es incluir en /etc/asterisk/extension_custom.conf lo siguiente:

[app-chanspy-custom]
exten => _*51xx,1,ChanSpy(SIP/${EXTEN:2},q)


Recuerda que el número 2 que esta seguido de la palabra EXTEN lo que hace es eliminar *5 de tus extensiones 1XX
Es solo un ejemplo. Espero Les Sirva!!

jueves, 17 de marzo de 2011

Modulo Freepbx para leer contexto editado en los archivos de configuración

Saludos Encontré esta información en un blog de asterisk el cual puede ser de mucha utilidad.

En un comienzo FreePBX se diseñó para ser una herramienta simple y fácil para programar tanto el flujo de las llamadas como el dialplan de Asterisk. Sin embargo, en nombre de la simplicidad a veces es necesario sacrificar características avanzadas y formas muy complicadas para hacer las cosas. FreePBX llega a un razonable punto medio entre ambos mundos: por una parte tiene una GUI sumamente poderosa que se mantiene intuitiva y simple, y por la otra tiene una manera ordenada para extender de forma consistente la GUI en un dialplan ‘crudo’(me refiero a la estructura del archivo extensions.conf).

Primero, un pequeño refresco de los conceptos del dialplan de Asterisk. Cada instrucción de Asterisk está compuesta de cuatro partes:

* Contexto

* Extension

* Prioridad

* Aplicación

Por ejemplo:

[gritan-monos]
exten => 66,1,Playback(tt-monkeys)

En este ejemplo, cuando llega una llamada a la extension 66, con prioridad 1 dentro del contexto “gritan-monos”, Asterisk reproducirá (Playback) el archivo de sonido “tt-monkeys”. Adicionalmente, Asterisk tiene la habilidad de incluir uno (o más contexto) dentro de otros contextos utilizando el comando “include”, por ejemplo:

[algun-contexto]
exten => … otras cosas
include algun-otro-contexto

FreePBX toma ventaja de la característica include para mantener el dialplan simple y limpio dividiéndolo en contextos más pequeños. El contexto que utiliza FreePBX para el enrutamiento de llamadas se llama “from-internal”. A excepción de dos inclues, el contexto “from-internal” está casi vacío. El contenido de “from-internal” se puede ver aquí:

=========== extensions.conf ==============
[from-internal]
include => from-internal-xfer
include => bad-number
===========================================

El contexto “from-internal-xfer” su vez incluye (entre otros) “from-internal-additional” y “from-internal-custom”. El contexto “from-internal-additional” es también bastante disperso -a excepción de algunos includes más de contextos aún más pequeños, correspondiendo al dialplan completo generado por FreePBX. También se incluye siempre el contexto “from-internal-custom” -anque siempre está vacío- de tal manera que se pueda utilizar de la manera que se quiera. La manera simple de comenzar un nuevo contexto es en “/etc/asterisk/extensions_custom.conf” y agregar nuestro propio dialplan allí. Luego, para incluir nuestro contexto “[gritan-monos]” en el contexto generado por FreePBX deberíamos agregar lo siguiente a “/etc/asterisk/extensions_custom.conf”:

[from-internal-custom]
include => gritan-monos

[gritan-monos]
exten => 66,1,Playback(tt-monkeys)

Luego debemos re-cargar el dialplan (asterisk -rx “dialplan reload”, o asterisk -rx “extension reload” si se está usando Asterisk 1.2). Eso es todo!! Ahora utilizando alguna extensión discamos 66. Se debería oír la reproducción del archivo “tt-monkeys”.

Aunque este método es realmente simple, tiene algunos inconvenientes: Si se definiera algún código como 66, y luego se configurase algún anexo (y por lo tanto un teléfono) con la extensión 66 en FreePBX – ¿qué sucedería cuando se disca 66?

Correcto!, Asterisk se confundiría: no sabría a cuál de los ’66′ llamar (de hecho Asterisk elegiría uno de los dos, pero saber cuál es otra historia). Con el fin de prevenir tal situación, FreePBX protege rigurosamente el dialplan de tener entradas repetidas. No se pueden tener dos extensiones utilizando el mismo número (inténtelo!). Tampoco es posible tener otros ‘destinos’ (los cuales son también llamados ‘extension’ en el lenguaje del dialplan de Asterisk) tales como ‘ring groups’(grupos de extensiones) o ‘queues’(colas de llamados) con un mismo número de extensión ya existente.
Para incluir un dialplan propio en la ruta que sigue la llamada, se puede utilizar una combinación de módulos. Primero, se necesita decirle a FreePBX en qué parte del dialplan propio debe apuntar. Para hacer ésto, se debe crear un “Custom Destination“(Destino Personalizado en español, se encuentra en la pestaña “Tools”) con la opción “Custom Destination”apuntando al dialplan personalizado en el siguiente formato: contexto,extensión,prioridad. Para referirse al ejemplo previo, se debería elegir el destino personalizado como: gritan-monos,66,1. También se agrega una Descripción de manera que sea más fácil recordar qué hace este dialplan. Se llamará gritan-monos. Luego presionar submit(enviar).

A continuación necesitamos crear una “Miscellaneous Application”. El módulo “Misc Application” nos permite establecer una extensión (recuerde que, en Asterisk una extension el ‘algún lugar’ en el dialplan al que se llama, no necesariamente es un teléfono) que apunte a cualquier lugar. Por ejemplo, si desea que sus usuarios sean capaces de call a un IVR (lo cual está disponible solamente para las llamadas entrantes), puede elegir un “feature code”(Código de Función, por ej. *133,33,etc.). Ahora se elegirá un “Feature Code” para llamar al contexto personalizado: Click en “Misc Application” en la pestaba “Setup”, ingresar algún código, por ejemplo: 11234. A continuación rellenar la casilla “Enter a Description”, con ‘llamar monos’. Finalmente, elegir la aplicación personalizada desde el menú “Destination” Custom Application: gritan-monos y finalmente click en submit.

miércoles, 16 de marzo de 2011

DENEGAR Y PERMITIR LLAMADAS SALIENTES DESDE FREEPBX

.....................................................................................

Outbound Route Permissions


Otro Modulo muy Util del freepbx en el cual tenemos la opcion de permitir y denegar acceso de llamadas salientes a usuarios es el Outbound Route Permissions

Al descargar dicho modulo encontraran instrucciones sobre el manejo de dicho modulo.

Como Bloquear Extensiones desde FreePBX

.....................................................................................

Saludos

Hace unos días un cliente me solicitó bloquear las extensiones de su red telefónica IP basada en asterisk por motivos de seguridad.

Después de buscar una forma de hacerlo por el dial plan de asterisk, me encontré que existe un modulo de Freepbx el cual me permite realizar esta acción, dicho modulo es el key-lock.

http://www.freepbx.org/support/documentation/module-documentation/third-party-unsupported-modules/keylock

La instalación es sencilla y por default tiene los siguientes códigos.

Key Lock Toggle: *56
Key Lock: *57
Key Unlock: *58
Key Setpass: *59

miércoles, 16 de febrero de 2011

Iniciar servicio de Call Center Elastix

Para la instalacion del Modulo Callcenter ejecute

yum install elastix-callcenter

Iniciar servicio de Call Center Elastix

service elastixdialer start

Parar servicio de Call Center Elastix

service elastixdialer stop

Iniciar Servicio de Call Center Cuando Arranque el PC

/sbin/chkconfig elastixdialer on

miércoles, 2 de febrero de 2011

Cuando el Cache de APT sufre un desbordamiento


Saludos !! Hago Referencia a este LINK

http://j053d.net/blog/dynamic-mmap-ran-out-of-room/

por que a mi me funcionó.. de igual forma la solucion a este problema es la siguiente.


Cuando el Cache de APT (si el apt-get que usamos de vez en cuando) ha sufrido un overflow por alguna enorme cantidad de paquetes en su lista de repositorios que al hacer un update indique la sobrecarga en algun punto de su update y es entonces cuando debemos aumentar el espacio de esta memoria cache del APT.

Bien sea en spanish: Dynamic MMap corrió fuera de la sala
O bien sea en English: Dynamic MMap ran out of room

El día de hoy me ocurrieron unos errores (precisamente al purgar la versión 1.3.3 de Turpial para instalar la version 1.3.4). Al realizar un update por la terminal, el proceso termino con las siguientes ultimas lineas:

1E: Dynamic MMap corrió fuera de la sala. Incremente el tamaño de APT::Cache-Limit. Valor actual: 25165824. (man 5 apt.conf)
2E: Ocurrió un error mientras se procesaba language-pack-kde-he (NewVersion1)
3E: Problem with MergeList /var/lib/apt/lists/ve.archive.ubuntu.com_ubuntu_dists_karmic-updates_main_binary-i386_Packages
4W: Unable to munmap
5E: No se pudieron analizar o abrir las listas de paquetes o el archivo de estado.

Lo cual indica que la memoria caché apt está fuera del espacio, suponiendo que es por muchos paquetes cargados de los repos y ha sobre-excedido el cache de apt.

Bien sea si intentase hacer un apt-get install -f o un apt-get clean o un apt-get autoclean o un autoremove el resultado era el mismo. Al abrir el Synaptic, este sacaba un aviso que informaba sobre el mismo fallo y se cerraba luego de informar esto:

1E: Dynamic MMap corrió fuera de la sala. Incremente el tamaño de APT::Cache-Limit. Valor actual: 25165824. (man 5 apt.conf)
2E: Ocurrió un error mientras se procesaba language-pack-kde-it (NewVersion1)
3E: Problem with MergeList /var/lib/apt/lists/ve.archive.ubuntu.com_ubuntu_dists_karmic-updates_main_binary-i386_Packages
4E: Las listas de paquetes o el archivo de estado no se pueden analizar sintácticamente o abrir.
5E: _cache->open() failed, please report.

De esta informacion sobre el fallo, resaltaba a la vista la sugerencia indicada:

1Incremente el tamaño de APT::Cache-Limit. Valor actual: 25165824. (man 5 apt.conf)

Preferí pasar por el IRC de ubuntu-es para preguntar como podría incrementar este cache indicando en un paste la información de todo este fallo. El buen Geek erUSUL el cual en muchas ocasiones esta en el IRC de ubuntu-es tomando como referencia esta información me ayudo a resolver dicho problema.

Entonces, desde la terminal:

1echo 'APT::Cache-Limit "100000000";' | sudo tee -a /etc/apt/apt.conf.d/70debconf

Y con esto el update correrá normalmente sin problemas como debe ser e igual al abrir el Synaptic por ser una extensión gráfica de este.

Es de recordar que si gustas puedes borrar la linea agregada: APT::Cache-Limit “100000000″;
Pero volverás a caer en el mismo fallo del desbordamiento del Cache del APT por lo que mejor es dejarlo y recordar hacer de vez en cuando un clean cuando sea por la terminal.

El Cache-Limit puede ser cualquier valor que se necesite, pero para estar con un buen rango, lo ajustamos a un valor bien alto (10MB) que es bastante.

1sudo gedit /etc/apt/apt.conf.d/70debconf

Y finalmente se debe hacer un clean y el update correra sin problemas nuevamente

1sudo apt-get clean
2sudo apt-get update

PD: Escribe en la terminal apt-get moo si quieres ver una vaca, algo que no puede hacer aptitude otra interfaz para apt pero por terminal, no grafica como synaptic. El mismo aptitude asi lo indica al pedir su informacion de ayuda aptitude help la cual cierra con la linea: Este aptitude no tiene poderes de Super Vaca, pero apt-get si las tiene :)