Puncte:0

De ce și cum să depanați: Următoarele pachete au dependențe neîndeplinite, ... dar nu va fi instalat

drapel in
$ sudo apt install cuda
Citirea listelor de pachete... Gata
Construirea arborelui de dependență       
Citirea informațiilor despre stare... Gata
Unele pachete nu au putut fi instalate. Acest lucru poate însemna că ai
a solicitat o situație imposibilă sau dacă utilizați instabil
distribuție că unele pachete necesare nu au fost încă create
sau a fost mutat din Incoming.
Următoarele informații pot ajuta la rezolvarea situației:

Următoarele pachete au dependențe neîndeplinite:
 cuda : Depinde: cuda-11-4 (>= 11.4.2) dar nu va fi instalat
E: Nu puteți corecta problemele, ați reținut pachete sparte.

Ce înseamnă „nu va fi instalat”? De ce? De ce nu instalează dependențele? Cum pot afla?

Ce înseamnă „ai ținut pachete sparte”? Ce pachete sparte? Cum pot afla?

Ce înseamnă „situație imposibilă”? Cum pot obține mai multe detalii despre el?

Legat este acest mesaj similar anterior, care este încă fără răspuns. Dar aici, se imprimă și „ai ținut pachete sparte”, și această „situație imposibilă”, așa că poate este puțin diferit.

Nu întreb în mod specific despre acest anume cuda pachet aici. De asemenea, nu întreb despre cum să rezolv sau să repar ceva aici. intreb doar despre cum se depanează și a intelege si se ocupa de asa ceva apt (sau apt-get) mesaje în general, pentru orice pachet.

drapel ru
Comentariile nu sunt pentru discuții extinse; această conversație a fost [mutată în chat](https://chat.stackexchange.com/rooms/130195/discussion-on-question-by-albert-why-and-how-to-debug-the-following-packages- h).
Puncte:1
drapel fr

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.

drapel in
Mulțumesc, a fost deja foarte util pentru a explica partea „de ce” a întrebării mele. Deci există un conflict. Dar mai spuneți că nu este cu adevărat posibil să vedeți cu ușurință care este de fapt conflictul? Cum poate fi asta? Aproape orice alt instrument și manager de pachete pe care l-am folosit întotdeauna ar tipări ce conflict există, de ex. saing lib-v1 și lib-v2 nu pot fi instalate în același timp, dar solicitate de acest arbore dep. Sunt destul de sigur că Gentoo Portage emerge va imprima ceva așa.
CatMan avatar
drapel fr
Ei bine, sunt de acord, sună puțin alb-negru. De multe ori ar fi trebuit să subliniez „ușor”, ca ușor din punct de vedere al utilizatorului. Un dezvoltator învață ce scop și funcție a pachetului și poate judeca mai ușor impactul unei modificări. Non-devs nu pot, dar ar trebui să aibă și o modalitate de a instala lucruri. A face lucruri complexe din punct de vedere tehnic „ușor” necesită uneori mai mult efort decât a face caracteristica principală în sine. În Open Source, cred că este un lucru auto-implicat cultural: oamenii știu cine a inventat o caracteristică, dar nimănui nu-i pasă cine a făcut-o ușor de utilizat. Oricum, sper sa iti rezolvi problema.

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.