Puncte:0

Vreau să rulez o veche aplicație GNOME

drapel cn
raj

Știu că ceea ce vreau să fac este puțin neobișnuit, dar am nevoie să rulez o versiune destul de veche de gThumb (2.10.11, care vine de la Ubuntu 10.04) pe Ubuntu 20.04.

(Cineva m-a întrebat în comentarii de ce, așa că iată explicația: acea versiune veche are un mod de prezentare foarte bun, care oferă câteva caracteristici pe care versiunea actuală de gThumb prezentă în Ubuntu 20.04 le oferă nu oferi.Printre acestea se numără: 1) opțiunea „potrivește pe ecran doar pentru imagini mai mari” funcționează în modul prezentare de diapozitive; 2) Animațiile GIF sunt redate în modul de prezentare; 3) tasta de comandă rapidă „I” - afișează informații despre imaginea curentă - funcționează în modul de prezentare. Toate acestea NU funcționează în gThumb actual).

Până acum, am reușit să colectez toate bibliotecile vechi necesare pentru a rula această aplicație într-un singur director (deci toate dependențele sunt satisfăcute), aplicația pornește și apare GUI (captura de ecran de mai jos). Cu toate acestea, aplicația nu poate comunica cu demonul actual GNOME VFS și, prin urmare, nu încarcă conținutul folderului, deci este de fapt inutilizabilă. În terminal apare următorul mesaj de eroare:

(gthumb:13485): libgnomevfs-WARNING **: 13:34:54.800: Nu s-a putut activa demonul: Numele org.gnome.GnomeVFS.Daemon nu a fost furnizat de niciun fișier .service

introduceți descrierea imaginii aici

Există cu siguranță o anumită incompatibilitate între vechiul și noul demon GNOME VFS și aplicația nu poate comunica cu acesta. Există vreo modalitate de a remedia acest lucru și de a face aplicația să ruleze pe sistemul meu - de exemplu, făcând ca aplicația să nu folosească VFS, ci doar să citească direct de pe disc? (cu excepția faptului că trebuie să reconstruiesc singur aplicația, deoarece nu văd acest lucru fezabil)

Deoarece problema este legată de VFS, am încercat să înlocuiesc libgnomevfs-2.so.0 bibliotecă pe care am copiat-o din Ubuntu 10.04 cu cea mai nouă pe care am putut-o găsi, adică din Ubuntu 18.04 (nu există libgnomevfs-2.so.0 bibliotecă disponibilă pentru 20.04). Totuși, efectul este același. Deci schimbarea la VFS trebuie să fi avut loc între 18.04 și 20.04.

Nmath avatar
drapel ng
Idee rea. Îți vei sparge sistemul deoarece dependențele nu vor funcționa. Vă sugerez să faceți acest lucru într-un container VM, astfel încât să nu vă deterioreze instalarea sistemului. Dacă utilizați o versiune EOL a Ubuntu în container, asigurați-vă că rețeaua este dezactivată în VM.
Nmath avatar
drapel ng
Aceasta pare, de asemenea, o [Problemă XY](https://meta.stackexchange.com/a/66378). De ce crezi că ai nevoie de un vizualizator de imagini vechi de zece ani? Care este problema *de fapt* pe care o întâmpinați?
N0rbert avatar
drapel zw
Vă dați seama că există un pachet deb precompilat modern normal la https://packages.ubuntu.com/focal/gthumb? Care este ideea ta finală cu rularea software-ului de la Ubuntu Lucid Lynx (anul 2010)?
raj avatar
drapel cn
raj
@Nmath Am folosit mult opțiunea de prezentare de diapozitive gThumb în 10.04 și există mai multe caracteristici pe care actualul gThumb **nu** le oferă în modul de prezentare (poate fi folosită o opțiune „potrivit ecranului numai pentru imagini mai mari”; animațiile GIF sunt redate în modul slideshow; tasta „I” funcționează); Pe scurt, versiunea actuală a gThumb este mult mai proastă decât cea veche. Prin urmare, vreau să o conduc pe cea veche.
raj avatar
drapel cn
raj
@Nmath De asemenea, așa cum am scris deja, am reușit să îndeplinesc dependențele, aplicația rulează și nu se plânge de nicio bibliotecă lipsă (am pus toate bibliotecile necesare în același director cu binarul `gthumb` și îl rulez cu `LD_LIBRARY_PATH` setat la acel director). „Numai” nu poate comunica cu backend-ul recent GNOME. Sunt interesat dacă acest lucru poate fi rezolvat cumva.
drapel us
Dezvoltatorii GNOME au eliminat o mulțime de funcții utile în ultima vreme. Încercați Eye of MATE. `sudo apt install eom-common`
Puncte:0
drapel cn
raj

Am reușit să rezolv problema. Problema a fost că, pe lângă demonul obișnuit GNOME VFS (/usr/libexec/gvfsd, sau /usr/lib/gvfs/gvfsd în versiunile mai vechi de Ubuntu), a existat un alt daemon folosit de gThumb până la Ubuntu 18.04 - /usr/lib/gnome-vfs-2.0/gnome-vfs-daemon. Acest demon nu mai este prezent în Ubuntu 20.04, așa că vechiul gThumb nu poate accesa fișierele/folderele de pe disc. Era necesar să se copieze demonul în Ubuntu 20.04, astfel încât aplicația să-l poată folosi.

Soluția completă pentru a face aplicația să ruleze este următoarea (aceasta este lungă și, probabil, nimeni în afară de mine nu este interesat de asta, dar pe măsură ce am rezolvat problema, postez un răspuns, poate că cineva în viitor îl poate folosi :)):

(BTW. Presupun că toate acestea pot fi transformate într-un pachet AppImage, dacă aș ști cum să o fac :))

  1. creați un director pentru vechea aplicație gThumb, de exemplu /opt/gthumb_old.
  2. de la instalarea de lucru a Ubuntu 10.04 pe 64 de biți, copiați următoarele fișiere în /opt/gthumb_old (Am avut o astfel de instalare disponibilă; în cazul în care nu este disponibilă, trebuie să identificați pachetele care conțin aceste fișiere, să le descărcați și să extrageți fișierele, ceea ce necesită mai multă muncă):
/usr/bin/gthumb
/usr/lib/gthumb/libgthumb.so
/usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
/usr/lib/glade/2.0/libbonobo.so
/usr/lib/glade/2.0/libcanvas.so
/usr/lib/glade/2.0/libgnome.so
/usr/lib/gnome-vfs-2.0/gnome-vfs-daemon
/usr/lib/libart_lgpl_2.so.2
/usr/lib/libaudiofile.so.0
/usr/lib/libbonobo-2.so.0
/usr/lib/libbonobo-activation.so.4
/usr/lib/libbonoboui-2.so.0
/usr/lib/libcanberra-gtk.so.0
/usr/lib/libcanberra.so.0
/usr/lib/libesd.so.0
/usr/lib/libfam.so.0
/lib/libgcrypt.so.11
/usr/lib/libglade-2.0.so.0
/usr/lib/libgnome-2.so.0
/usr/lib/libgnomecanvas-2.so.0
/usr/lib/libgnome-keyring.so.0
/usr/lib/libgnomeui-2.so.0
/usr/lib/libgnomevfs-2.so.0
/usr/lib/libgnutls.so.26
/usr/lib/libhal-storage.so.1
/usr/lib/libhal.so.1
/usr/lib/libiptcdata.so.0
/usr/lib/libopenrawgnome.so.1
/usr/lib/libopenraw.so.1
/usr/lib/libORBit-2.so.0
/usr/lib/libORBitCosNaming-2.so.0
/lib/libpng12.so.0
/usr/lib/libtasn1.so.3
/usr/lib/libtiff.so.4

Cele de mai sus /usr/lib/*.so.* sau /lib/*.so.* fișierele sunt legături simbolice către alte fișiere, așa că, desigur, trebuie să copiați fișierul către care indică legătura, dar numele țintă ar trebui să fie cel al link-ului. (Dacă utilizați cp sau scp pentru a copia numele de mai sus, nu trebuie să vă faceți griji pentru acest lucru, deoarece acest lucru se întâmplă automat.)

De asemenea, trebuie link simbolic /usr/lib/x86_64-linux-gnu/libjpeg.so.8 la libjpeg.so.62 în /opt/gthumb_old. Aplicația se așteaptă să se conecteze la libjpeg.so.62 dar originalul libjpeg.so.62 biblioteca copiată din Ubuntu 10.04 nu funcționează corect și fișierele JPEG nu sunt afișate; așa că vom folosi în schimb biblioteca de sistem actuală.

  1. creați un director /opt/gthumb_old/glade și copiați conținutul /usr/share/gthumb/glade de la instalarea Ubuntu 10.04 în acest director.

  2. creați un director /opt/gthumb_old/modules și copiați conținutul /usr/lib/gthumb/modules de la instalarea Ubuntu 10.04 în acest director.

  3. creați un director /opt/gthumb_old/vfs_modules și copiați conținutul /usr/lib/gnome-vfs-2.0/modules de la instalarea Ubuntu 10.04 în acest director.

  4. creați un director /opt/gthumb_old/modules_conf și copiați conținutul /etc/gnome-vfs-2.0/modules de la instalarea Ubuntu 10.04 în acest director.

  5. creați un subdirector .gtk-2.0/x86_64-pc-linux-gnu/engines în dumneavoastră /home/nume de utilizator director și copiați fișierul /usr/lib/gtk-2.0/2.10.0/engines/libmurrine.so de la Ubuntu 10.04 în acest director. Acest lucru este necesar pentru ca meniurile și alte gadgeturi UI să fie afișate corect (aplicația va funcționa fără acest fișier, dar interfața de utilizare va fi puțin distorsionată). Dacă nu aveți instalat Adobe Reader 9 (ultima versiune disponibilă pentru Linux), puteți sări peste intermediarul x86_64-pc-linux-gnu subdirectorul și puneți fișierul doar în .gtk-2.0/motoare. Dar dacă aveți instalat Adobe Reader (ca mine), are nevoie de o versiune pe 32 de biți a fișierului libmurrine.so, care ar trebui să fie situat în .gtk-2.0/i686-pc-linux-gnu/engines, prin urmare, este mai bine să folosiți versiunea „mai lungă”.

  6. creați o legătură simbolică /usr/share/gthumb/glade arătând spre /opt/gthumb_old/glade.

  7. creați o legătură simbolică /usr/lib/gthumb/modules arătând spre /opt/gthumb_old/modules (directorul /usr/lib/gthumb nu există în instalarea standard a Ubuntu 20.04, așa că trebuie să-l creați mai întâi)

  8. creați o legătură simbolică /usr/lib/gnome-vfs-2.0/modules arătând spre /opt/gthumb_old/vfs_modules (directorul /usr/lib/gnome-vfs-2.0 nu există în instalarea standard a Ubuntu 20.04, așa că trebuie să-l creați mai întâi)

  9. creați o legătură simbolică /etc/gnome-vfs-2.0/modules arătând spre /opt/gthumb_old/modules_conf (directorul /etc/gnome-vfs-2.0 nu există în instalarea standard a Ubuntu 20.04, așa că trebuie să-l creați mai întâi)

  10. creați un script /opt/gthumb_old/gvfsd_wrapper cu următorul conținut (fișierul trebuie să fie executabil):

#!/bin/sh
GVFSD_DIR=`/usr/bin/dirname $0`
LD_LIBRARY_PATH=${GVFSD_DIR} ${GVFSD_DIR}/gnome-vfs-daemon
  1. copiați fișierul /usr/share/dbus-1/services/gnome-vfs-daemon.service din Ubuntu 10.04 în același director pe Ubuntu 20.04 (/usr/share/dbus-1/services), atunci editați-l după cum urmează. Fișierul original are următorul conținut:
[Serviciul D-BUS]
Name=org.gnome.GnomeVFS.Daemon
Exec=/usr/lib/gnome-vfs-2.0/gnome-vfs-daemon

Schimbați-l în:

[Serviciul D-BUS]
Name=org.gnome.GnomeVFS.Daemon
Exec=/opt/gthumb_old/gvfsd_wrapper
  1. În cele din urmă, creați un script /usr/local/bin/gthumb_old pentru a rula aplicația:
#!/bin/sh
LD_LIBRARY_PATH=/opt/gthumb_old /opt/gthumb_old/gthumb

(puteți crea, de asemenea, un lansator în meniu sau panoul GNOME cu referire la acest script).

Aplicația nu intră în conflict cu gThumb 3.8.0 existent din Ubuntu 20.04, deoarece își stochează datele de configurare într-un loc diferit. Ambele pot fi utilizate independent, dar există o posibilă problemă descrisă mai jos.

Notă că aplicația se blochează într-un director de imagini care are un .comentarii subdirectorul care conține comentarii create de versiunea mai nouă a gThumb. Deci, în cazul în care aplicația se blochează după ce ați intrat într-un director, ar trebui să ștergeți .comentarii subdir.

De asemenea, am găsit un caz ciudat cu două fișiere imagine (din câteva mii pe care le am). Aplicația s-a prăbușit într-un director care conținea legături simbolice la aceste două fișiere care se aflau într-un alt director (când am înlocuit legăturile simbolice cu copii ale fișierelor sau link-uri rigide, nu a existat nicio blocare - sa întâmplat doar pe acele două fișiere). Dacă nu aveți nicio legătură simbolică în directoarele dvs. de imagine, această problemă nu ar trebui să apară.

Captură de ecran finală a aplicației de lucru:

introduceți descrierea imaginii aici

Puncte:0
drapel de

Veți sparge sistemul de operare din cauza problemelor de dependențe. Prin urmare, sugerez să: Descărcați Ubuntu 10.04 de pe Aici. Instalați-l în containerul VM și rulați aplicația în el.

raj avatar
drapel cn
raj
Vă înșelați, deoarece - așa cum am scris deja - am reușit să îndeplinesc toate dependențele și aplicația ** rulează** și ** nu se plânge de nicio bibliotecă lipsă**. Nu reușește decât la interacțiunea cu backend-ul GNOME actual. Ma intereseaza daca se poate rezolva cumva.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.