martes, 16 de agosto de 2011

Linux: Afegir usuari a la llista de SUDOers.

La comanda sudo permet executar a un usuari un programa amb els permisos d'un altre programa (normalment amb permisos de ROOT, superusuari). Vindria ser el mateix que identificar-se com a root, executar la comanda i després fer un exit per tornar al mode usuari.

Per fer-ho cal afegir els usuaris corresponents a la llista de SUDOers. Sense entrar en detalls de les possibilitats que presenten les llistes de SUDOers, ens identifiquem com a ROOT i:

xddxdd@debian:~$ visudo

o simplement

xddxdd@debian:~$ vi /etc/sudoers

i afegim una entrada similar a aquesta:

usuari ALL=(ALL) ALL

Després sortim del Vim: Esc, :wq i Intro.

On usuari es el nom d'usuari que volem afegir a la llista.

Linux: Crear RAR amb múltiples volums

Primer de tot instalar el paquet RAR amb un apt-get install rar
Després la sintaxi és:

rar a -v num factormultiplicador nomdelsfitxers.rar ruta

on

a: Vol dir add.
-v: vol dir cada quanta capacitat partirem els volums.
nomdelsfitxers.rar: es el nom base dels futurs fitxers partits (nomdelsfitxers.rar, nomdelsfitxers.r01, nom dels fitxers.r02, ...)
ruta: especifica la ruta dels fitxers que volem comprimir.

Exemple

xddxdd@debian:~$ rar a -v5m ImatgeISO.rar /home/usuari/exemple/*

Aquesta comanda ens crearia arxius RAR de 5MB. És important posar el * al final de la ruta perque ens indica que afegeixi tot el que hi ha inclos en aquell directori (inclòs els subdirectoris que hi hagi recursivament).

Linux: Extreure múltiples arxius RAR o ZIP

Bé, crec que no cal ni dir que aquest post no va encaminat a obrir arxius RAR o ZIP que tenen múltiples volums, és a dir, si tenim 3 arxius RAR fitxer.rar fitxer.r01 fitxer.r02 n'hi haurà prou amb que descomprimim el primer, perque automàticament es descomprimeixin els altres volums.

No, aquest post va encaminat a obrir tots els arxius RAR o ZIP que trobem dins d'una carpeta. És senzill pensar en fer un unrar *.rar o unzip *.zip però fent això ens donarà error. Una manera de fer el que volem es amb 2 scripts en bash.

1) Script pels fitxers ZIP.

#!/bin/bash
echo "Extraccio de tots els arxius ZIP trobats a la carpeta ..."
##extraccio
for ZIP in `ls|grep .zip`
do unzip $ZIP
done
echo "Fet"

1) Script pels fitxers RAR.

#!/bin/bash
for RAR in `ls | grep .rar`
do unrar x $RAR
done

No cal dir que editar un arxiu en bash es pot fer amb qualsevol editor (nano, vi, joe) i despres donantli permisos d'execució (chmod +x fitxer.sh). De manera que ara hauríem de tenir 2 arxius extzip.sh i extrar.sh (per exemple) amb els quals hauríem de poder descomprimir tots els arxius d'un directori.

Nota: Aquests scripts tenen un petit bug i és que descomprimeixen TOTS els arxius que troba al directori de manera que si per exemple tenim 3 arxius que pertanyen al mateix volum fitxer.rar fitxer.r01 fitxer.r02 intentarà descomprimir 3 vegades el mateix volum.

Linux: Operacions entre fitxers de vídeo

Nota preliminar: Encara no se bén be perque quan utilitzo aplicacions de recodificació (tant Ffmpeg com Mencoder) utilitzant molts threads (ara no recordo bé si 6 o més) que en teoria són el nombre de nuclis de la CPU (la meva CPU és una AMD de 8 cores) a utilitzar en el procés, l'ordinador es reseteja o s'apaga. La càrrega total de la CPU en aquests casos crec que arriba a més del 80% així que diria que el problema podria ser de càrrega de la CPU encara que m'inclinaria més a pensar que pot ser un problema de prevenció de temperatura, ja que aquesta puja espectacularment al fer aquests processos, malgrat que compto amb un bon refrigerador Noctua. També vaig pensar que fos un problema de software però em vaig baixar les fonts de Ffmpeg i Mencoder per a ser compilades i el problema persistia. La nota aquesta la escric perque els paràmetres de recodificació que faré servir, haurien d'incloure un màxim de 5 threads que és un nombre prou considerable de cores i que he comprovat que l'ordinador no en pateix les conseqüències.

Abans de fer conversions entre arxius aclareixo que sembla ser (no n'estic del tot cert) que els fitxers amb contenidor AVI no poden tenir un tamany superior a 4 GB. Això fa que si necessitem un tamany superior a 4 GB haguem d'utilitzar altres contenidors, per exemple el MKV, que a més, aporta altres novetats i que el fa altament recomanable en cas de poder reproduir arxius MKV en el nostre reproductor preferit..

1) Veure els paràmetres d'un arxiu de vídeo

xddxdd@debian:~$ ffmpeg -i default.avi

Input #0, avi, from 'Default.avi':
Duration: 01:22:48.68, start: 0.000000, bitrate: 581 kb/s
Stream #0.0: Video: mpeg4, yuv420p, 640x480 [PAR 1:1 DAR 4:3], 25.00 tb(r)
Stream #0.1: Audio: mp3, 48000 Hz, stereo, s16, 128 kb/s

Fent un man ffmpeg podem veure tots els paràmetres que se li poden passar a ffmpeg.


2) Conversions de contenidors i Codecs

FLV a AVI (Nou Codec de vídeo: Lavc)

xddxdd@debian:~$ mencoder fitxer_font.flv -ovc lavc -oac copy -o fitxer_desti.avi

3GP a AVI (Nou Codec de vídeo: Lavc)

xddxdd@debian:~$ mencoder fitxer_font.3GP -ovc lavc -oac pcm -o fitxer_desti.avi NOTA: Notis que jo utilitzo el codec LAVC per a video i PCM per a audio però es poden utilitzar altres códecs.

OGV a AVI (Nou Codec de vídeo: Xvid, nou Codec d'Audio: Libmp3lame)

xddxdd@debian:~$ mencoder fitxer_font.ogv -oac mp3lame -ovc xvid -vf scale=X:Y -xvidencopts pass=1 -o fitxer_desti.avi

AVI a AVI (Nou Codec de vídeo: Xvid, nou Codec d'Audio: Libmp3lame)

xddxdd@debian:~$ ffmpeg -i fitxer_font.avi -acodec libmp3lame -vcodec libxvid -ab 96000 -ar 48000 -b 800k fitxer_desti.avi

Alguns paràmetres d'interès:

-s 640x480
-aspect 4:3 (si en demana)

Nota: Obviament els paràmetres s'han de canviar segons ens convingui.

Una altra opció:

xddxdd@debian:~$ mencoder fitxer_font.avi -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -vf scale=[ResX]:[ResY] -oac copy -o fitxer_desti.avi

El mateix, els paràmetre que he posat són al meu gust i per un vídeo concret. Si ens fixem, en aquesta última comanda he posat -oac copy que vol dir que no es processa el codec de audio, sinó que es copia tal qual.

AVI a MKV (No recodificació)

1. xddxdd@debian:~$ ffmpeg -i arxiu_origen.mp4 -c:v copy -c:a copy arxiu_resultant.mkv

2. xddxdd@debian:~$ mkvmerge arxiu_origen.avi -o arxiu_resultant.mkv

3. xddxdd@debian:~$ mencoder arxiu_origen.avi -ovc copy -oac copy -o arxiu_resultant.mkv

3) Unir fitxers AVI i MKV

3.1) Si l'arxiu te 1 pista d'audio:

xddxdd@debian:~$ mencoder -oac copy -ovc copy 1rfitxer.avi 2nfitxer.avi -o fitxer_final.avi

3.2) Si l'arxiu te més d'una pista d'audio:

xddxdd@debian:~$ avimerge -i 1rfitxer.avi 2nfitxer.avi -o fitxer_final.avi

Nota: Perque es pugui fer la unió, els arxius de video hauran de tenir els mateixos paràmetres de códec d'audio, codec de video, etc..


Però a vegades aquest mètode no funciona i ara proposo una alternativa

a) Tenia 2 videos AVI (mateixes característiques de format, codecs ...).

b) Obro Avidemux2-GTK.

c) Obro 1rfitxer.avi i li dic que si a les 2 coses.

d) Em situo al final del fitxer amb el cursor (ultim frame).

e) Archivo / Ajuntar / Adjunto el nou 2nfitxer.avi.

f) Ara guardo el fitxer_final.avi i es guardara el video bé però només amb la primera pista
d'audio.

g) Per guardar amb la segona pista, obro el fitxer_final.avi amb Avidemux2-GTK i Audio / Canal secundario de audio i poso allà el fitxer.wav corresponent.

h) IMPORTANT: Ara a FORMATO (a l'esquerra de la pantalleta VIDEO AUDIO i FORMATO un a sobre laltre), poso AVI, sonido dual. I guardo el fitxer.

Bé, aquí m'he saltat un pas perque m'he tret el fitxer del 2n canal d'audio (fitxer.wav) de la màniga.

Per tenir el fitxer WAV:

En el meu cas ho he fet així perque els arxius MP3 que extreia de les 2 parts del fitxer AVI quan les obria amb el XMMS i movia a esquerra i dreta amb les fletxes sem repetia i ho he hagut de recodificar tot a WAV. Comencem així doncs:

a) Extraiem els 2 fitxers en MP3. És VITAL l'opcio aid que selecciona que extraiem la segona TRACK d'audio.

xddxdd@debian:~$ mplayer 1rfitxer.avi -aid 2 -dumpaudio -dumpfile Part1.mp3

xddxdd@debian:~$ mplayer 2nfitxer.avi -aid 2 -dumpaudio -dumpfile Part2.mp3

b) Transformem a WAV.

xddxdd@debian:~$ mpg123 -w Part1WAV.wav Part1.mp3

xddxdd@debian:~$ mpg123 -w Part2WAV.wav Part2.mp3

c) Uneixo els WAV.

xddxdd@debian:~$ qwavjoin Part1WAV.wav Part2WAV.wav -o fitxer.wav

NOTA: Suposo que si ara recodifico el fitxer final *.WAV a *.MP3 i l'adjunto com a segon canal a l'Avidemux ocuparà menys el video final. És qüestió de provar-ho. Per convertir de WAV a MP3 és:

xddxdd@debian:~$
lame -h fitxer.wav nou_fitxer.mp3


3.3) En cas d'unir arxius MKV:

xddxdd@debian:~$ mkvmerge -o arxiu_resultant.mkv arxiu1.mkv +arxiu2.mkv

4) Dividir arxius AVI

Hi ha 2 maneres de fer-ho

1. Avidemux: Obrim el vídeo i tallem els trossos "a la carte" i guardem els que ens interessa.

2. Avisplit: Mode de comanda de terminal com per exemple podria ser:

xddxdd@debian:~$ avisplit -i Fitxer_Font.avi -t 00:00:00-00:09:53,00:09:58-00:19:45,00:19:54-00:29:55

En aquest cas, passem per paràmetre el temps exacte on volem que es produeixi el tall. El resultat són X fitxers de vídeo, tants com talls fem.

Nota: Recomano Avidemux ja que és per entorn gràfic i permet precisar més els talls del vídeo.


5) Ripejar arxius de vídeo d'un decodificador MVision (fitxers *.irm) a fitxers AVI

Passos:

1.Passar el IRM a MVP amb el programa IRM Converter que proporciona el decodificador MVision
(es pot baixar d'Internet també).

2.Passar MVP a MPG amb el ProjectX:

- Anar a baix a l'esquerra i Clickar al signe + i adjuntar l'arxiu MVP
que hem obtingut amb el IRM Converter.

- Process/prepare ...

- Action: Seleccionar To M2P

- Clickar al PLAY

Ara ja tindrem el fitxer en MPG. Llavors tenim 2 opcions:

5a).Passar MPG a AVI de la manera ja indicada en altres apartats.

5b). Grabar en DVD si s'escau amb el programa DeVeDe.

6) Afegir subtítols a un arxiu MKV (Matroska)

Segons Wikipedia: " Matroska es un formato contenedor de estándar abierto, un archivo informático que puede contener una cantidad ilimitada de vídeo, audio, imagen o pistas de subtítulos dentro de un solo archivo. "

Un dels avantatges d'aquest CONTENIDOR (MKV és un contenidor com AVI, MOV, FLV i no un Codec com XVid o H264) és poder introduir diversos subtítols sense haver de recodificar el vídeo, de manera que amb pocs minuts tenim un arxiu MKV amb els seus corresponents subtítols, a diferència d'altres contenidors com AVI on només es pot tenir un subtítol i encastat al vídeo de manera que no es pot separar el subtítol del vídeo alhora de visualitzar-lo.

2 maneres de fer-ho (mode consola i mode gràfic) tot instal·lant prèviament els paquets mkvtoolnix i si es vol mkvtoolnix-gui (mode gràfic) que estàn als repositoris de Debian.

1. Mode gràfic:

xddxdd@debian:~$ mmg

una vegada a dins del programa, a "Entrada" cliquem a "Añadir" i afegim l'arxiu MKV o AVI (el contenidor origen tan fa, al final acabarà convertint a MKV sigui quin sigui el contenidor font) i tot seguit insertem els arxius de subtítol (en el meu cas, inserto arxius en format *.SRT). Cliquem a "Iniciar Multiplexado" i el programa sol ens ajunta el vídeo amb el/s subtítol/s que haguem afegit.

2. Mode consola:

xddxdd@debian:~$ mkvmerge -o arxiu_resultant.mkv --default-track 0 arxiu1.srt arxiu2.art arxiu_origen.avi

La comanda és senzilla. A més l'opció --default-track està a 0 per setejar quina de les pistes d'audio que conté l'arxiu volem que sigui la per defecte (si bé haig de dir que no he indagat massa en les opcions d'aquesta comanda).

7) Afegir una pista d'audio a un vídeo AVI.

La comanda (sense tenir en compte altres paràmetres) és:

xddxdd@debian:~$ mencoder -ovc copy -audiofile arxiu.mp3 -oac copy input.avi -o output.avi

8) Extreure audio d'un vídeo i convertir-lo a MP3.

xddxdd@debian:~$ ffmpeg -i inputfile.m4a -acodec mp3 -ac 2 -ab 160 outputfile.mp3
o
xddxdd@debian:~$ ffmpeg -i inputfile.m4a -acodec libmp3lame -ac 2 -ab 160 outputfile.mp3

Si l'arxiu és MKV:

xddxdd@debian:~$ mplayer -vo null -dumpaudio -dumpfile outputfile.mp3 input.mkv

Si el que volem es extreure una pista concreta (ja sigui de vídeo o d'audio dins d'un arxiu AVI o MKV) utilitzarem el paràmetre -map 0:2 (per exemple el 0:2) on 2 vol dir que és la tercera pista dins de l'avi (comença a comptar des de 0, per tant si posessim 0:0 extrauríem la primera pista, usualment la de vídeo, si posessim 0:1 extrauríem la segona pista, usualment d'audio, i amb 0:2 extrauríem la tercera pista, segurament la segona pista d'audio del vídeo):

xddxdd@debian:~$ ffmpeg -i input.avi -map 0:2 -vn -ar 48000 -ac 2 -ab 256k -f mp3 outputfile.mp3

Links d'interès

Linux: Gestió de processos en una terminal

· Per veure TOTS els processos dins d'una terminal:

xddddxdd@debian:~$ ps -e

PID TTY TIME CMD
10489 ? 00:00:03 dolphin
10523 ? 00:00:14 xmms
10604 ? 00:00:02 kwrite

· Per veure TOTS els processos dins d'una terminal i l'usuari de cada procés

xddddxdd@debian:~$ ps -e -f

UID PID PPID C STIME TTY TIME CMD
xddddxdd 2208 1 0 Aug15 ? 00:00:00 /usr/bin/kactivitymanagerd
xddddxdd 2240 1 1 Aug15 ? 00:39:21 /usr/bin/knotify4
xddddxdd 2243 1 0 Aug15 ? 00:05:56 /usr/bin/plasma-desktop

· Per eliminar un procés dins d'una terminal:

xddddxdd@debian:~$ kill PID

On PID és el nombre del procés corresponent. Per "matar" processos que son de ROOT caldra identificar-nos previament.

· Per buscar un procés dins d'una terminal:

xddddxdd@debian:~$ ps -e | grep nomdelproces

2032 ? 00:00:00 nomdelproces

· Per eliminar un procés dins d'una terminal passant per paràmetre un nom o part del nom (el que posaríem després del grep)

xddddxdd@debian:~$ ps aux | grep firef | awk '{print $2}' | xargs kill

kill: No such process



Linux: Programar en LISP amb CLISP + Emacs + Slime

Una de les opcions per a programar en LISP a Linux és utilitzar l'editor Emacs adaptat a LISP amb el programa CLISP. Per fer-ho necessitarem alguns paquets addicionals com el paquet Slime.

Passos a seguir:

1. Instalar CLISP. Jo ho vaig fer amb un apt-get install clisp.

2. Tenir instalat Emacs. Igual, apt-get install emacs emacs23

3. Tenir instalat Slime. Ull !! Instalant el paquet que em venia amb Debian, no em funcionava.

a) Em vaig baixar doncs, el paquet de http://common-lisp.net/project/slime/snapshots/slime-current.tgz

b) Faig un tar zfxv del slime-current.tgz i s'em descomprimeix un directori slime-xxxxxx

c) Copio el directori slime a:
c.a) cp sudo cp slime-xxxxxx /usr/share/emacs/site-lisp/ -R
c.b) cp sudo cp slime-xxxxxx /usr/share/emacs23/site-lisp/ -R (Sense aquest segon cp, no em funcionava)

d) Edito un fitxer anomenat ".emacs" al /home/usuari: vi /home/usuari/.emacs

(setq inferior-lisp-program "clisp -q")

(require 'slime)
(slime-setup '(slime-fancy))

e) Inicio emacs: emacs

f) Executo "Alt x" i escric slime
Llavors em comença a compilar coses i ja esta.

g) Amb "Ctrl X 2" creo una nova finestra on editare els arxius *.lsp

h) A una de les 2 finestres obro o creo un fitxer *.lsp
Edito les funcions i tot i quan he acabat Clicko a "Ctrl X E" per introduir les noves funcions a la llista, sino no funcionen.

i) Ara a la altra finestra ja puc passar les funcions per parametre.

Linux: Thunderbird / Icedove navegador per defecte

Suposo que hi ha altres maneres de fer-ho però per setejar el navegador per defecte que obre els links al Mozilla Thunderbird / Icedove (és la mateixa versió que Mozilla Thunderbird però no aquest no pot ésser distribuït amb la Debian per tenir una marca i una icona patentada per la Fundació Mozilla, de manera que el contingut d'una distribució Debian ha de ser TOTALMENT lliure) el que farem és obrir el Mozilla Firefox / Iceweasel (el navegador que vull per defecte) anar a Editar / Preferencias / Avanzado i a la última pestanya que posa "Por defecto", clickar a "Comprobar ahora". Quan ens demani si volem posar el navegador per defecte, direm òbviament "". Clickant a la casella "Comprobar si Mozilla Firefox / Iceweasel es el navegador por defecto al arrancar" ens assegurem que si alguna vegada, setegem, ja sigui voluntàriament o per error, un altre navegador com a predeterminat, puguem reestablir aquest navegador per defecte sense haver de pensar-hi o haver de fer els passos anteriorment descrits.

Per a altres navegadors (Opera, Chrome, ... ) també hi ha aquesta opció de setejar el navegador per defecte, simplement que el modus operandi és lleugerament diferent.

EDIT 2: Abans s'utilitzava un altre mètode per setejar el navegador per defecte al Mozilla Thunderbird. Dins del client de correu, anavem a Editar / Preferencias / Avanzado / Editor de configuración i al Filtro buscavem:

network.protocol-handler.app.http
i
network.protocol-handler.app.https

i hi introduiem de valor (dent Doble Click): el nom de l'executable del nostre navegador (firefox, iceweasel, google-chrome, etc.).

EDIT 4: També hi havia una altra manera que era:

root@debian:~# update-alternatives --config x-www-browser

i posar el que més ens interessava.

EDIT 5: Ja no em funciona cap d'aquests 3 mètodes anteriors. La manera és obrir Thunderbird, anar a Editar / Preferencias / Adjuntos i filtrar els continguts http i https i canviar-ne la "Acción", amb el navegador que desitgem. Obviament, si no hi ha els continguts http i https n'hi haurà prou amb que rebem un mail (amb http i https per separat) i intentem obrir-lo i alla ens demanarà si volem "setejar" un navegador per defecte per a aquest tipus de contingut.