Opensuse 13.2: instalación de los drivers nvidia para gtx 770 (gk-104)

Para la instalación desde un sistema Opensuse 13.2 limpio haremos lo siguiente:

1) Instalación del repositorio
sudo zypper ar -f ftp://download.nvidia.com/opensuse/13.2/ nvidia
2) Instalación del paquete:
sudo zypper install x11-video-nvidiaG04
3) Añadir usuario a grupo de video
sudo usermod -a -G video dieguz2
4) Bloquear drivers nouveau. Vamos a
  Yast  / Cargador de Arranque / Kernel Parameters / Parámetro opctional para la línea de comandos del kernel /  , añadimos al final de lo que haya nomodeset nouveau.modeset=0
otra opción es :
echo "blacklist nouveau" >> /etc/modprobe.d/50-blacklist.conf
 5) Comprobar que todo esté ok
glxinfo | grep -i nvidia
server glx vendor string: NVIDIA Corporation
client glx vendor string: NVIDIA Corporation
OpenGL vendor string: NVIDIA Corporation
OpenGL core profile version string: 4.4.0 NVIDIA 346.72
OpenGL core profile shading language version string: 4.40 NVIDIA via Cg compiler
OpenGL version string: 4.5.0 NVIDIA 346.72
OpenGL shading language version string: 4.50 NVIDIA
OpenGL ES profile version string: OpenGL ES 3.1 NVIDIA 346.72

Opensuse 13.2 : Cambiar el swap. dracut Emergency shell, dev does not exist.

Al hacer algunos cambios en el ordenador el swap cambio de ubicación y de uuid, como consecuencia al arrancar el sistemas aparecía el prompt del dracut y siguiente mensaje
dracut-initqueue[299]: Warning: Could not boot.
dracut-initqueue[299]: Warning: /dev/disk/by-uuid/442317cd-e9ec-4001-90b0-8992008bd956 does not exist

GRUB2 arranque

Si usamos grub2, al arrancar, muestra el menú con las diferentes entradas, si pulsamos 'e', podemos editar los comandos. Hay algunas entradas como esta:
linux /boot/vmlinuz-3.16.6-2-desktop root=UUID=9e407f35-c659-44cd-85d4-e17b751da9a4 ro BOOT_IMAGE=/boot/x86_64/loader/linux ramdisk_size=512000 ramdisk_blocksize=4096 resume=/dev/sdb5 splash=silent quiet showopts
 Si queremos quitar el resume pondremos noresume, si queremos cambiar el dispositivo, resume=/dev/nuevodev  o resume=UUID=uuiddelnuevodispositivo

Sistema Arrancado

Si no arranca el sistema, arrancaremos con algún live CD. En cualquera de los dos casos haremos lo siguiente

Listar las particiones de nuestro sistema y su uuid. Las apuntamos.
# blkid
/dev/sda2: UUID="1E83-6E29" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="2bb2aec0-85d7-471a-a84e-cb290ae86a2a"
/dev/sda5: LABEL="suse" UUID="0e2c2ce4-cebf-4d2e-8829-19abe7870f27" TYPE="ext4" PARTLABEL="primary" PARTUUID="20a3af3c-265d-421b-a050-60ca64c2ed60"
/dev/sdb5: UUID="935c8fdb-1bfc-480e-8e7a-628ac0919f47" TYPE="swap" PARTUUID="00025d31-05"
UEFI  => /dev/sda2
La raiz  => /dev/sda5
El swap  => /dev/sdb5


Hacer chroot del sistema, en dev/sda5 esta mi raiz de linux
# mount /dev/sda5 /mnt
# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys /mnt/sys

# chroot  /mnt
Con esto ya tendremos montado la raiz de nuestro antiguo sistema.

Activar el swap
# swapon /dev/sdb5
opcional :Si necesitamos formatearlo se va a generar un nuevo UUID, así que ojo si usamos UUID(mkswap /dev/sdb5)


GRUB sistema

revisamos /etc/default/grub

Cambiamos la linea:
# GRUB_CMDLINE_LINUX_DEFAULT=" resume=/dev/disk/by-id/ata-ST3120026AS_3JT2HBTB-part5 splash=silent quiet showopts"

por un noresume
#GRUB_CMDLINE_LINUX_DEFAULT=" noresume splash=silent quiet showopts"

o por un resume de nuestro nuevo swap
# GRUB_CMDLINE_LINUX_DEFAULT=" resume=/dev/sdb5

Actualizamos el grub:
# grub2-mkconfig -o /boot/grub2/grub.cfg


Revisamos también un par de archivos relacionados
/etc/sysconfig/kernel
/etc/sysconfig/bootloader (mirar el DEFAULT APPEND)
Y finalmente
/sbin/mkinitrd
reiniciamos y debería estar todo correcto

Apache : calcular tamaño memoria por proceso de apache y optimizar el valor de Maxclients

Para calcular el tamaño que está ocupando en memoria apache y sus procesos podemos usar el siguiente script en bash:

 ps -ylC httpd | awk '{x += $8;y += 1} END  { print "Apache uso de memoria (MB): "x/1024;  print "Tamaño medio del proceso (MB): "x/((y-1)*1024);   print "Procesos apache: "y-1;   }'

Ejemplo de salida
Apache uso de memoria (MB): 1396.54
Tamaño medio del proceso (MB): 16.8257
Procesos apache: 83

Estos valores son útiles para optimizar el parámetro MaxClients en el fichero /etc/httpd/conf.d/mpm_prefork.conf ( Centos 7 ) .

Para calcular el Valor:

MaxClients = (Total RAM en el sistema - RAM reserva para el resto del sistema) /  Tamaño medio del proceso

Por ejemplo si tenemos una máquina con 16 GB, y queremos dedicar al apache el 80% de la memoria (3,2 GB) y el tamaño del proceso es de 17MB.

MaxClients = (16GB - 3.2 GB) * 1024 / 17MB =771,0118
o equivalentemente
MaxClients = ((16×1024) × 0,8) ÷ 17 = 771
SI queremos fijar la cantidad de memoria a un valor fijo (ej: 4GB) se hacen las mismas cuentas
MaxClients = (4×1024) ÷ 17 = 240

LDAP: modificar varios atributos con el mismo archivo ldif

Para modificar varios atributos de una entrada LDAP usando sólo un archivo ldif, el formato tiene que ser similar al siguiente:
dn: uidNumber=69696967,ou=Usuarios,dc=dieguz2,dc=es
changetype: modify
replace: shadowLastChange
shadowLastChange: 111111
-
replace: sn
sn: 222222
-
replace: email
email: dieguz2@no.existo.xy
Los atributos que se modifiquen tienen que ir separados por un guión.

Solaris:Tiempo epoch en solaris y linux

En linux para obtener la fecha podemos usar:
date +%s
En Solaris  no está definido el strftime por lo que tendremos que usar python, perl o una combinación de comandos, por ejemplo:

truss /usr/bin/date 2>&1 | grep ^time | cut -f 2 -d' '
perl -le 'print time()'
truss /usr/bin/date 2>&1 | grep ^time | awk -F"= " '{print $2}'

Postgresql: tamaño de una tabla

Para obtener el tamaño de una tabla en postgres

select pg_size_pretty(pg_total_relation_size('TABLA'));

gnome 3.14: Asociar un tipo de archivo a una aplicación manualmente

Asociar archivo gráficamente:

Dos formas de hacerlo:
  • Seleccionamos el archivo, le damos al botón derecho, "Abrir Con", "Otra aplicación"
  • Botón derecho, propiedades, pestaña "Abrir con"
 Nos saldrá una lista de aplicaciones que pueden abrir el archivo.
Podemos pulsar en "Ver todas las aplicaciones" para ver un listado.

Asociar archivo manualmente.

A nivel de sistema el listado de asociaciones está aquí:
/usr/share/applications/defaults.list
A nivel de usuario:
 ~/.local/share/applications/mimeapps.list
Por ejemplo, Si queremos asociar sublimetext con el listado

1) Definimos el lanzador del sublime (si no lo tenemos definido ya)
vi ~/.local/share/applications/sublimeX.desktop

[Desktop Entry]
Name=Sublime Text Editor 3
Comment=Sublime Text Editor 3
Exec=sublime %F
MimeType=text/plain;
Terminal=false
Type=Application
Icon=/home/dieguz2/programas/sublime_text_3/Icon/256x256/sublime-text.png
Categories=GNOME;GTK;Utility;TextEditor;Development;
Name[es_ES]=Sublime Text 3
StartupNotify=true

[NewWindow Shortcut Group]
Name=New Editor Window
Exec=sublime --new-window
TargetEnvironment=Unity

2) Editamos vi ~/.local/share/applications/mimeapps.list y añadimos:
application/x-php=sublimeX.desktop

Java: instalación jdk 7 en opensuse 13.1

1) Descargar el archivo rpm de  http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html?ssSourceSiteId=otnes 

Por ejemplo:  jdk-7u45-linux-x64.rpm
wget http://download.oracle.com/otn-pub/java/jdk/7u45-b18/jdk-7u45-linux-x64.rpm

2) Instalar el RPM
rpm -ivh  jdk-7*-linux-x64.rpm
 Por defeto se instala en  /usr/java/jdk1.7.0_45/ creando también los enlaces

3) Actualización de la alternativas

update-alternatives --install "/usr/bin/java" "java" "/usr/java/latest/bin/java" 1
update-alternatives --set java /usr/java/latest/bin/java
update-alternatives --install "/usr/bin/javac" "javac" "/usr/java/latest/bin/javac" 1
update-alternatives --set javac /usr/java/latest/bin/javac
4) Comprobar que todo está correcto
java -version

java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)

Extra:
Para ejecutar el plugin en el navegador debemos crear el siguiente enlace:
sudo ln -svf /usr/java/latest/jre/lib/amd64/libnpjp2.so /usr/lib64/browser-plugins/
o de forma alternativa :
plugin=$(rpm -ql $(rpm -qa | grep jdk) | grep libnpjp2.so) && ln -svf "$plugin" /usr/lib64/browser-plugins/

Extra:
Para configurar el javaws
    rutajws=$(rpm -ql $(rpm -qa | grep jdk) | grep /bin/javaws);
    # si salen varios rutajws hay que seleccionar 1 manualmente, por ejemplo:
    # rujajws=/usr/java/latest/bin/javaws
    sudo update-alternatives --install "/usr/bin/javaws" "javaws" "$rutajws" 1
    sudo update-alternatives --set javaws $rutajws



Compilar php 4.4 con ldap en centOs

Instrucciones de compilación
./configure --with-ldap

BUG 1) configure: error: Cannot find ldap libraries in /usr/lib.
./configure --with-ldap= /usr/lib64 --with-lib=lib64

BUG 2) configure: error: Cannot find ldap.h

Editamos el archivo configure y añadimos la siguientes lineas

if test -f $PHP_LDAP/include/ldap.h; then
   LDAP_DIR=$PHP_LDAP
   LDAP_INCDIR=$PHP_LDAP/include
   LDAP_LIBDIR=$PHP_LDAP/lib
elif test -f $PHP_LDAP/include/umich-ldap/ldap.h; then
   LDAP_DIR=$PHP_LDAP
   LDAP_INCDIR=$PHP_LDAP/include/umich-ldap
   LDAP_LIBDIR=$PHP_LDAP/lib
elif test -f $PHP_LDAP/ldap/public/ldap.h; then
   LDAP_DIR=$PHP_LDAP
   LDAP_INCDIR=$PHP_LDAP/ldap/public
   LDAP_LIBDIR=$PHP_LDAP/lib
fi
   LDAP_DIR=/usr/lib64
   LDAP_INCDIR=/usr/include
   LDAP_LIBDIR=/usr/lib64
fi
 

Solaris: juego de caracteres en el terminal

Para cambiar el juego de caracteres en solaris podemos usar la siguiente sintaxis

LC_ALL=es_ES.UTF-8 miaplicacion

O bien fijamos directamente el valor de la variable con un export o definiendola en /etc/profile, ~/.bash_profile o /etc/default/init

Si no lo tenemos definido podemos tener mensajes del tipo:

�Desea continuar con la conexi�n (s�/no)?

y no cogera "sí" como valor válido