Sunt pe deplin de acord că multe mesaje adecvate sunt mult mai criptice decât s-ar dori și adesea sunt chiar înșelătoare. Lucrul bun este, totuși, că, atunci când lucrați cu apt pentru o perioadă, veți întâlni mesajele din nou și din nou și vă veți obișnui cu cum să le remediați.
În funcție de ceea ce știi despre ceea ce face apt în spatele scenei, s-ar putea să nu fie atât de ușor să înțelegi toate detaliile. Îl voi încerca în speranța de a-ți ghici antecedentele și de a-ți interpreta corect întrebarea. Va rog sa ma indurati daca am gresit :-)
În general, mesajele la care vă referiți „nu vor fi instalate” sau „imposibil” se referă la dependențele care sunt necesare pentru pachetul pe care îl instalați față de pachetele deja instalate pe sistemul dumneavoastră.
Pentru a înțelege acest lucru, trebuie să știți că majoritatea pachetelor nu sunt livrate cu toate fișierele de care au nevoie pentru a rula. Personalizat Linux este să utilizați software open source oriunde puteți, astfel încât fiecare pachet folosește o mulțime de biblioteci. Acestea sunt blob-uri binare pline cu funcții pe care un executabil le poate folosi din mers. Problema este că, pe de o parte, acele proiecte open source se schimbă tot timpul și primesc actualizări foarte frecvente, iar pe de altă parte, programele sunt codificate pentru a funcționa cu o anumită versiune, adică versiunea pe care dezvoltatorul o folosea la momentul compilării. Deci aveți nevoie de exact acea versiune sau de o versiune compatibilă. Ar fi ușor dacă fiecare dezvoltator, de ex. de CUDA ar livra toate bibliotecile pe care le-au folosit în timpul compilării.Nu o fac, pentru că majoritatea sunt biblioteci standard care foarte probabil sunt folosite și de alte programe și ar însemna că fiecare program ar fi uriaș pentru a descărca și pentru a stoca toate aceste date duplicate (apropo, Docker sau AppImage fac exact asta pentru oferi o soluție la această problemă). Din cauza acestei probleme, aveți de obicei mai multe versiuni de biblioteci de sistem pe sistemul dvs. Totuși, devine dificil atunci când bibliotecile sunt incompatibile sau în conflict între ele, de ex. deoarece doar o singură lib poate accesa o resursă de sistem la un moment dat. În acest caz, trebuie să găsiți versiunea bibliotecii care este compatibilă cu toate pachetele instalate care le utilizează.
Asta încearcă să facă Apt pentru fiecare instalare pe care o faceți. Nu este un AI, așa că există limite la ceea ce poate face. Situația de mesaj imposibil este că aveți în mod clar un conflict în care sunt necesare două versiuni absolut incompatibile ale unei biblioteci în același timp. De cele mai multe ori, tezele nu sunt bibliotecile utilizate direct, ci bibliotecile pe care trebuie să le ruleze. Există o întreagă ierarhie de dependențe.
Este foarte instructiv să ajungi la github pentru orice program decent și să urmezi instrucțiunile de compilare. Compilarea în Linux este foarte ușoară. Dar de cele mai multe ori este un coșmar să localizați și să instalați toate dependențele. Și dacă nu utilizați cele mai noi, ci versiunile mai vechi, nu puteți utiliza cele mai noi dependențe, dar trebuie să aflați și ce versiuni de cod sursă aveți nevoie pentru fiecare dintre dependențe. Făcând asta, dă o impresie foarte bună cu ce lucrează apt.
Mesajul „nu va fi instalat”, prin urmare, ar putea fi cauzat că o bibliotecă necesară este disponibilă și ar funcționa bine, dar orice dependență a acestora are un conflict undeva în jos.
Acum, ce poți face?
O puteți rezolva mai bine decât apt atunci când urmăriți fiecare conflict și apoi aflați ce altă aplicație este afectată și apoi decideți care este importantă și care nu.De exemplu, ați putea afla că dispozitivul de blocare pentru instalarea CUDA este un instrument de mesagerie implicit pe care oricum nu îl utilizați. Soluția ușoară este să o dezinstalați pe aceasta și toate bibliotecile sale (atunci când nu sunt folosite în altă parte, apt va face asta). După aceea, apt îl poate instala.
Din păcate, nu cunosc niciun instrument care să vă permită să răsfoiți acei arbori de dependență într-un mod pentru a înțelege și urmări cu ușurință acele conexiuni.
Am si aceste cazuri si primul lucru este sa incerc Aptitude. Nu este instalat implicit:
sudo install aptitude
Aptitude este practic aceeași cu apt, dar este mai mare și are mult mai multă logică pentru a gestiona aceste cazuri. În cazul acestor mesaje, aptitude vă va oferi opțiuni. Unele ar putea fi false, spuneți „nu” și veți primi altul. Acesta va sugera, de exemplu, „downgrade” unui pachet. Asta înseamnă să instalezi o versiune mai veche. Va sugera să „ștergeți” un pachet sau să instalați pachete suplimentare ca soluție. Dar este că nu vă spune care sunt consecințele, adică nu vă spune „dacă downgradezi acest lucru, aplicația XYZ ar putea să nu mai funcționeze corect”. Îți oferă doar opțiuni din dilema pe care „apt” nu a fost capabil să o rezolve.
Așadar, uitându-ne la sugestiile de la Aptitude, este o idee bună să vezi ce pachete apar și dacă poți să faci conexiuni singur. S-ar putea să rețineți că există un instrument pe care l-ați instalat recent. S-ar putea să vă ofere un indiciu despre orice nu utilizați oricum. Dezinstalează-l și încearcă din nou.
De asemenea, porniți o mașină virtuală cu un Ubuntu gol și încercați să vă instalați lucrurile acolo poate fi foarte util, deoarece vedeți dacă versiunea Ubuntu are conflictul din cutie. E timpul să ajungă în locuri ca acesta și să facă o postare cât mai precisă.
Sper că nu te-am pierdut și nici nu te-am plictisit și țintește puțin întrebarea ta.
Acum apt se află în culise destul de complex, deoarece este scris într-un limbaj de nivel scăzut și, prin urmare, este destul de dificil să includă algoritmi de detectare și rezolvare complexi sau avansați. Este conceput pentru a fi un instrument robust și cu amprentă mică, care rulează pe fiecare sistem (chiar și minim). Și asta este.