Mozilla Firefox în Debian

O problemă comună în rândul utilizatorilor sistemului de operare Debian se pare că este înlocuirea pachetului Iceweasel cu ultima versiune de Mozilla Firefox. Am ajuns la această concluzie după ce am fost abordat pe această temă în repetate rânduri, drept pentru care voi prezenta în continuare un mic ghid.

Am două precizări importante înainte de a continua, și pentru a elimina unele confuzii ușor de făcut:

  • am toată considerația pentru munca administratorilor de pachete din depozitele Debian. Au făcut întotdeauna o treabă excelentă, și nu mă pot plânge de calitatea sau cantitatea lor (deși sunt destui care o fac). Kudos, glandium, for taking your time to integrate the Mozilla-related packages into Debian!
  • nu sunt un maniac al versiunilor. Nu am nicio intenție de a rula ultimele versiuni ale programelor, în afara cazurilor în care le testez sau depind de funcționalități specifice lor. Aș putea trăi în oldstable pentru o săptămână de lucru, fără să am mari probleme de acomodare :-)

Atenție: exemplele de mai jos sunt construite utilizând „sudo”, dar dacă „sudo” nu este configurat pe sistem, toate comenzile care încep astfel vor trebui executate ca „root”.

1. Primul lucru de care avem nevoie este cea mai recentă versiune stabilă a Mozilla Firefox:

wget http://releases.mozilla.org/pub/mozilla.org/firefox/releases/latest/linux-i686/en-US/firefox-15.0.1.tar.bz2

2. Arhiva astfel obținută va fi dezarhivată:

tar -xf firefox-15.0.1.tar.bz2

3. ...și mutată într-o locație tipică programelor adiționale, de exemplu /opt

sudo mv firefox/ /opt
cd /opt/firefox/

4. Pentru a nu avea probleme la actualizări, recomand trecerea directorului nou creat în proprietatea utilizatorului obișnuit de lucru, pe mașinile cu un singur utilizator de mediu grafic, sau a grupului comun utilizatorilor, pe sistemele unde este cazul. Voi oferi un exemplu care le combină pe ambele:

sudo chown victor:users . -R

Opțional, dacă setarea se face pe grup:

chmod 774 . -R

5. Acum avem Firefox pe sistem, mai trebuie puțină grijă de extensii (voi păstra locația implicită a Iceweasel pentru asta):

ln -s /usr/lib/mozilla/plugins /opt/firefox/plugins

6. Pentru a înlocui comanda care lansează Iceweasel cu Firefox, am mutat-o pe cea veche:

sudo mv /usr/bin/firefox /usr/bin/firefox-iceweasel

7. ...și am creat-o pe cea nouă:

sudo ln -s /opt/firefox/firefox /usr/bin/firefox

8. Sistemul mai are câteva mici nevoi pentru a accepta liniștit schimbarea. Întâi, o intrare .desktop:

sudo nano /usr/share/applications/firefox.desktop

și lipit următorul conținut:

[Desktop Entry] 
Name=Firefox 
GenericName=Web Browser 
Comment=Mozilla Firefox
Exec=/opt/firefox/firefox %u 
Terminal=false 
Icon=/opt/firefox/icons/mozicon128.png 
Type=Application 
Categories=Application;Network;WebBrowser; 
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;
StartupWMClass=Firefox-bin 
StartupNotify=true'

ATENȚIE: Numele pictogramei se poate schimba de la o versiune la alta, de verificat periodic în caz că dispare brusc :-)

8'. La fiecare actualizare de sistem, Iceweasel va vrea să rescrie legătura din /usr/bin/firefox cu o legătură către el însuși. De aceea, de moment ce nu mai suntem interesați de Iceweasel, vom instrui aptitude să oprească actualizările pentru acesta(pentru asta va fi nevoie de root, probabil):

echo "iceweasel hold" | dpkg --set-selections

9. În continuare, am folosit update-alternatives pentru a obține efectul de navigator implicit pe sistem:

update-alternatives --install  /usr/bin/x-www-browser x-www-browser /opt/firefox/firefox 100
update-alternatives --set x-www-browser /opt/firefox/firefox

Am făcut pașii de mai sus pe un sistem pe 32 de biți, după cum se poate vedea din calea aleasă pentru descărcare. Ar fi interesant dacă cineva mi-ar trimite o adăugire și pentru 64 de biți (e foarte posibil să fie ceva diferit la extensii sau ia32-libs), pentru a acoperi cele mai importante arhitecturi.

Pentru a ușura toate etapele, am compus un script simplu, care execută tot. Sunt două opțiiuni de utilizare:

  • cu „sudo”, caz în care nu se va alege dezactivarea actualizărilor. Pe sistemul meu a fost nevoie de „root”, altfel primeam:
    dpkg: error: operation requires read/write access to dpkg status area
    
  • de sub contul de „root”, în caz contrar

Codul este:

#!/bin/bash

echo -n "Introdu numele utilizatorului care va folosi Mozilla Firefox [$(whoami)]: "
read USER
echo -n "Introdu grupul care va utiliza Firefox [$(id -gn)]: "
read GROUP
echo -n "URL-ul arhivei pentru instalare: "
read URL
echo -n "Vrei să blochezi actualizările Iceweasel (recomandat) - doar dacă ești logat ca root [D/n] "
read DPKG
if [ -n "$DPKG" ] || DPKG='Y'


if [ -z "$URL" ]; then
    URL="http://releases.mozilla.org/pub/mozilla.org/firefox/releases/15.0.1/linux-i686/en-US/firefox-15.0.1.tar.bz2"
else
    #if [ -n "$(curl -sr 0-1 $URL | grep '404')" || $URL =~ '[.]*firefox-([0-9\.-_]*).tar.bz2' ]; then 
    if [ -n "$(curl -sr 0-1 $URL | grep '404')" ]; then 
        echo 'Eroare: URL nevalid!' ;
	exit;
    else 
        echo 'URL valid, continuă...' 
    fi
fi


echo '==========[ Pasul 1/3: Descărcarea navigatorului Mozilla Firefox ]=========='
curl $URL | tar -jxv


echo '==========[ Pasul 2/3: Copierea navigatorului Mozilla Firefox În sistem ]=========='

mv firefox/ /opt

if [ -z "$USER" ]; then
    USER=$(id -un) 
fi  


if [ -z "$GROUP" ]; then
    GROUP=$(id -gn)
    chown $USER:$GROUP /opt/firefox/ -R
    chmod 754 /opt/firefox/ -R
else
    chown $USER:$GROUP /opt/firefox/ -R
    chmod 774 /opt/firefox/ -R
fi


echo '==========[ Pasul 3/3: Crearea legăturilor în sistem ]=========='

ln -s /usr/lib/mozilla/plugins /opt/firefox/plugins
mv /usr/bin/firefox /usr/bin/firefox-iceweasel
ln -sf /opt/firefox/firefox /usr/bin/firefox
echo '[Desktop Entry] 
Name=Firefox 
GenericName=Web Browser 
Comment=Mozilla Firefox 
Exec=/opt/firefox/firefox %u 
Terminal=false 
Icon=/opt/firefox/icons/mozicon128.png 
Type=Application 
Categories=Application;Network;WebBrowser; 
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;
StartupWMClass=Firefox-bin 
StartupNotify=true' > /usr/share/applications/firefox.desktop

update-alternatives --install  /usr/bin/x-www-browser x-www-browser /opt/firefox/firefox 100
update-alternatives --set x-www-browser /opt/firefox/firefox

if [ "$DPKG" = "Y" ] ; then
    echo "iceweasel hold" | dpkg --set-selections
else
    echo "Atenție: pentru a dezactiva actualizările Iceweasel, execută ca root comanda:"
    echo 'echo "iceweasel hold" | dpkg --set-selections"'
fi


echo '==========[ Instalarea a reușit! Mozilla Firefox este navigatorul implicit și se află în meniul cu aplicații de rețea ]=========='

Cu câteva cunoștințe minime de GNU Bash, sau cu ceva intuiție, codul se poate altera după plac pentru a ajunge la efectele dorite fără a da prea multe comenzi de mână.

Acesta trebuie copiat într-o locație unde utilizatorul curent are drepturi de scriere, apoi făcut executabil și rulat -- presupunând că fișierul se numește install_mozilla-ff.sh, ar trebui:

chmod +x install_mozilla-ff.sh
./install_mozilla-ff.sh

Notă: Acest articol liber a apărut pentru prima dată în jurnalul lui Victor Nițu din comunitatea Ceata, jurnale.ceata.org/~vnitu. Codul din acest articol este licențiat sub GPLv3+.

Comentarii

Si iceweasel ce are ?
Nu e nevoie sa faci asa daca vrei ultima versiune Firefox/Iceweseal.
Arunca privirea aici: http://mozilla.debian.net
Iceweasel e Firefox.
Chiar nu inteleg de ce tot se bat cu morile de vant si nu pricep o data pt. totdeauna.

Adresă: 
slacky2005@gmail.com

Iceweasel a avut mai multe probleme de-a lungul timpului, și poate cea mai dureroasă a fost că la un moment dat venea cu o versiune de libsqlite care strica partea de bookmarks (rezulta în crash de aplicație la o colecție mai mare, cu o rata de reproducere de circa 70-80% parcă).

E destul de dificil să urmărești asemenea erori, neștiind care dintre surse a greșit (Debian sau Mozilla), ambele părți fiind niște suspecți buni pentru depanare. Eliminând una dintre părți, scapi de turele prin Debbugs :-)

Eu nu folosesc Firefox de la Mozilla, în mare parte din cauza pasiunii mele pentru motorul WebKit :-) Am scris acest ghid știind că au existat probleme exclusive în Iceweasel (inclusiv de consum mare de CPU, cam cu 50-60% mai mare) și pentru că sunt destul de frecvent întrebat despre asta. Pentru cel puțin trei sferturi din utilizatorii Debian însă, Iceweasel n-ar trebui să constituie o  problemă, și o spun cu cea mai mare convingere. Dar o mare parte din dezvoltatorii web care folosesc Debian au avut probleme mai mici sau mai mari cu pachetele Mozilla construite de Debian.

Nu zic că arhiva de la Mozilla ar merge bine. De fapt, habar nu am, dar mi se pare ireal să fie ăsta bun și .deb nu. Dar asta elimină un nod din traseul Firefox către utilizator, de unde mai puține șanse de a introduce erori noi. Pentru un utilizator ce preferă Firefox ca navigator implicit, ar putea fi un win categoric și productiv să pună direct din arhiva de la Mozilla.

Adresă: 
vnitu@ceata.org

Am mai descoperit ceva.

Poți adăuga depozitul Linux Mint Debian Edition, și au ei pachete pentru Firefox, nesparte și nealterate precum cele din Debian, și care se instalează în /opt/ de asemenea. Recent mi-a comunicat cineva asta, urmează să verific când am vreme:

/etc/apt/sources.list.d/lmde.list

 deb http://packages.linuxmint.com/ debian main upstream import.

Apoi, logat ca root:

 apt-get update && apt-get install linuxmint-keyring
 apt-get install firefox

Dacă se dorește localizare:

 apt-get install firefox-l10n-ro-ro
Adresă: 
vnitu@ceata.org

Nu am avut probleme serioase cu Iceweasel. Nici cu cel din depozitele oficiale, nici cu cel din depozitul mozilla.
In afara de ceva agatari in Google plus nu au fost probleme. Si acolo banuiesc sa fie de la cpufreq care imi scade frecventa la procesor sau ceva prin kernelul de la siduction.
De asta spun ca nu pot da vina pe Debian pt. agatat in google plus. Iar daca pun procesorul pe performance adio adatare.
Solutia cu depozitele LMDE e ok, dar totusi trebuie sa fii atent, eventual cu ceva pin pe el.
Chromium papa mai putin CPU, in schimb papa mai mult ram. :)

Adresă: 
slacky2005@gmail.com

Chromium prealocă mai multă memorie, dar nu comnsumă neapărat din ea. Dacă are cineva nevoie de ram, cred că va ceda din resursele prealocate. E o practică comună :-)
Nici eu n-am avut probleme serioase cu Iceweasel, dar asta mai ales ca intru foarte rar în el. Mi s-au plâns mai mulți, motiv pentru care am făcut ghidul ^
BTW, eu am mai mult RAM decât CPU, de aia îmi place WebKit :-D

Adresă: 
vnitu@ceata.org

Excelent articol. Chiar aveam nevoie de un tutorial așa step by step. cool