Programare

miahi

Wizzard
Sugar daddy
Joined
Aug 1, 2004
Messages
8,242
Vezi cu -v mai multe detalii; e posibil ca unele biblioteci să fie linkate de 2 ori (se întâmplă dacă sunt folosite de alte biblioteci care au fost linkate static în ELF dar cu alți parametri).

Poți să cauți bibliotecile alea și în /etc/ld.so.conf (posibil să fie un tree în /etc/ld.so.conf.d/*, așa că grep libmbed -r /etc/ld.so.conf*)
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
4,890
Nu exista -v sau -u pe router iar pe host nu merge probabil fiindca e pentru arm, nu x86. Zice ca "not a dynamic executable".
/etc/ld.so.conf indica:
/opt/lib
/opt/usr/lib
/lib
/usr/lib
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
4,890
PS: Cred ca am gasit problema.
Firmware-ul routerului e facut cu uclibc. Dar in /opt este instalat Entware care foloseste glibc.
Hiawatha instaleaza mbed TLS in /opt/lib/hiawatha (uclibc). Dar in /opt/lib se afla mbed TLS de la Entware (glibc), ca are nevoie Midnight Commander de ele.
Am incercat cu LD_LIBRARY_PATH=/opt/lib/hiawatha hiawatha si merge. Deci ceva e gresit cu adresa de unde isi ia mbed TLS by default, ca incarca .so-urile gresite din /opt/lib, nu /opt/lib/hiawatha.
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
4,890
PS2: Problema se impute.
- Am dezinstalat mc si mbed tls din Entware, dar tot nu merge. Pun LD_LIBRARY_PATH - merge.
- Caut pe net despre CMAKE. Aflu ca in executabilele compilate ar trebui sa existe RPATH si RUNPATH care spun unde se gasesc .so-urile.
- Citesc manualul CMAKE despre RPATH si RUNPATH. Aflu ca se poate.
- Asadar studiez sursele Hiawatha 2 ore. Nimic in neregula. RPATH sunt la locul lor.
- Caut in programul compilat dupa RPATH si /opt/lib/hiawatha - nimic!
- Incep sa banuiesc ceva... :hmm: Caut pe net banuiala.
- Constat ca uclibc nu foloseste RPATH sau RUNPATH. E batut in cap si cauta doar in LD_LIBRARY_PATH.
- F*CK!!! :kill: :bash: :capu: :mad2:

Concluzie:
- Nu pot avea Hiawatha cu RPATH daca folosesc toolchain-ul router-ului (uclibc).
- Daca pun mbed TLS cu uclibc in /opt/lib, nu merge, ca mbed incearca sa ia uclibc din /opt/lib prima data (conform ld.so.conf) unde da peste glibc si crapa.
- Si chiar daca puteam pune mbed in /opt/lib, ar crapa hiawatha, ca incearca exact acelasi lucru.
- Nu pot modifica ld.so.conf ca e read-only.
- Nu-mi dau seama cum de programele din firmware merg in configuratia asta.
- Dar si daca mi-as da seama cum de merg, nu ma ajuta ca nu pot pune hiawatha in firmware, ca e read-only
- Deci inca o data: F*CK!!! :kill: :bash: :capu: :mad2:
 

miahi

Wizzard
Sugar daddy
Joined
Aug 1, 2004
Messages
8,242
Nu mi-e clar de ce nu poți folosi LD_LIBRARY_PATH și gata (separat pentru fiecare tool).
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
4,890
Pentru ca iese o varza? Pentru ca e incomod sa-l scriu de fiecare data cand testez configuratia serverului? Pentru ca n-o sa-mi aduc aminte de el cand o sa fac upgrade/update?

Update:
A mers modificata un pic configuratia pentru cmake sa faca mbedtls static => merge. :majoreta:
Case closed.
 

miahi

Wizzard
Sugar daddy
Joined
Aug 1, 2004
Messages
8,242
Păi oricum pare o varză care nu poate fi migrată (ai un script care să refacă toate modificările pe care le-ai făcut router-ului până acum? ai backups la toate modificările pe care le-ai făcut surselor ca să meargă compilate? ce se întâmplă dacă crapă router-ul?)
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
4,890
Am! Ca am mai patit! :biggrin: Acum sunt frumos organizate in directoare si .tar.gz-uri. Si toolchain-urile sunt pe discuri virtuale frumos organizate si ele, cu tot cu repository, in caz ca am nevoie de vreo versiune veche.

Hai alta:
Incerc PHP + Hiawatha => fail
Hiawatha apeleaza /opt/bin/php-cgi cu adresa .php-ului de interpretat ca prim argument si urmatorul environment:
Code:
DOCUMENT_ROOT=/opt/www/10
GATEWAY_INTERFACE=CGI/1.1
HTTPS=off
HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_ENCODING=gzip, deflate
HTTP_ACCEPT_LANGUAGE=en-US,en;q=0.5
HTTP_CONNECTION=keep-alive
HTTP_COOKIE=clickedItem_tab=2; asus_token=ZBzHecCuL3OnoAXB2sx0H7Bd9Lrlg7p; CoreTmpUnit=0; bw_rtab=INTERNET
HTTP_DNT=1
HTTP_HOST=172.27.143.1
HTTP_RETURN_CODE=200
HTTP_SCHEME=http
HTTP_UPGRADE_INSECURE_REQUESTS=1
HTTP_USER_AGENT=Mozilla/5.0 (Windows NT 5.2; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
PWD=/tmp/mnt/2G/entware/www/10              <=== de mentionat ca /opt este symlink catre /tmp/mnt/2G/entware, 2G fiind stick-ul USB, deci directorul asta e corect
REDIRECT_STATUS=200
REMOTE_ADDR=172.27.143.2
REQUEST_METHOD=GET
REQUEST_URI=/Main.php
SCRIPT_FILENAME=/opt/www/10/Main.php
SCRIPT_NAME=/Main.php
SERVER_ADDR=0.0.0.0
SERVER_BINDING=Main
SERVER_NAME=marius95.go.ro
SERVER_PORT=80
SERVER_PROTOCOL=HTTP/1.1
SERVER_SOFTWARE=Hiawatha v10.10
SHLVL=1
PHP-ul raspunde cu :
Code:
Status: 404 Not Found
X-Powered-By: PHP/7.4.3
Content-type: text/html; charset=UTF-8

No input file specified.

Ce-i gresit ?
Evident, acel /opt/www/10/Main.php exista si este accesibil tuturor cu 777.
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
4,890
PS:
php-cgi ignora argumentul.
Variabila cu problema este SCRIPT_NAME=/Main.php. Cu ea da eroarea asta: PHP Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0
Daca i-o sterg, merge. De ce?

Evident, e de la doc_root. Daca ii setez doc_root = "/opt/www/10" merge, dar daca ii setez doc_root = "/opt/www" nu mai merge. WTF?!?!?
Extraordinar cum poate o porcarie de program sa iti iroseasca ziua!
 
Last edited:

miahi

Wizzard
Sugar daddy
Joined
Aug 1, 2004
Messages
8,242
Ce ai în php.ini? Că nu toate alea se suprascriu cu ce-i dai în env - dacă ai document root ca /opt/www/10 în php.ini, n-o să vrea /opt/www în env, pentru că e problemă de securitate.
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
4,890
Pai se pare ca daca scriu /opt/www, nu vrea /opt/www/10, deci :bash:. Vezi postul anterior.
----------
Sa inteleg ca dupa 25 de ani de MySQL si nenumarate forks/variante, InnoDB ramane singura optiune cu foreign keys?! :facepalm:
 

miahi

Wizzard
Sugar daddy
Joined
Aug 1, 2004
Messages
8,242
Vezi că InnoDB-ul din MariaDB nu mai e compatibil cu cel din MySQL, au mai lucrat la el. Și mai ai XtraDB, care e tot un fork. În rest ifecare și-a făcut storage specializat pe nevoile proprii, că innodb functionează destul de bine pentru o bază de date normală.
 

Jaffar

Wizard
Joined
Oct 20, 2003
Messages
905
De ce te deranjeaza InnoDB? Cate storage engine-uri ai vrea ca sa fii multumit?
 

Jaffar

Wizard
Joined
Oct 20, 2003
Messages
905
Portabil cum, să muți fișierele fizic, ca la myisam? Nu e ok sa faci mysqldump?
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
4,890
Exact. Dump pot face doar daca merge sistemul. Pentru cazul in care nu merge, prefer sa pot muta stick-ul.
 

miahi

Wizzard
Sugar daddy
Joined
Aug 1, 2004
Messages
8,242
Păi și la innodb poți muta fișierele, fără pierderi dacă baza de date e oprită (cu baza de date pornită n-o să scapi fără pierderi în toate bazele de date tranzacționale serioase). De-aia există conceptul de backup, care nu se bazează pe "las' că iau fișîerele și le mut".
 

Marius '95

Membru Senior
Sugar daddy
Joined
Nov 13, 2005
Messages
4,890
MySQL / MariaDB si asta:
Code:
ALTER TABLE tInterp ADD CONSTRAINT nooverlap CHECK (
    NOT EXISTS (
        SELECT * FROM tInterp A WHERE NEW.cDID=A.cDID AND NEW.cIID !=A.cIID AND .... bla bla bla
    )   
);

Function or expression 'select ...' cannot be used in the CHECK clause of `nooverlap`
:what:
 
Top Bottom