I repository ed il loro utilizzo: differenze tra le versioni

Riga 134: Riga 134:
* il suddetto pacchetto è presente in tre repository, repoA, repoB, repoC tutti correttamente specificante nel file <code>source.list</code>;
* il suddetto pacchetto è presente in tre repository, repoA, repoB, repoC tutti correttamente specificante nel file <code>source.list</code>;
* tutti i pacchetti presenti in repoA appartengono al rilascio obiettivo (ad esempio testing), in repoB e repoC sono contenuti pacchetti appartenenti ad un'altra distribuzione (ad esempio unstable e stable rispettivamente);
* tutti i pacchetti presenti in repoA appartengono al rilascio obiettivo (ad esempio testing), in repoB e repoC sono contenuti pacchetti appartenenti ad un'altra distribuzione (ad esempio unstable e stable rispettivamente);
* la versione di "vattelapesca" in repoA è la 1.4, in repoB la 2.0 e in in repoC la 1.3;
* la versione di "vattelapesca" in repoA è la 1.4, in repoB la 2.0 e in in repoC la 1.1;
* nel sistema è installata la versione 1.3 di "vattelapesca";
* nel sistema è installata la versione 1.3 di "vattelapesca";
* non esiste un file <code>preferences</code> o comunque non è stata specificata una priorità per nessuno dei tre rilasci considerati;
* non esiste un file <code>preferences</code> o comunque non è stata specificata una priorità per nessuno dei tre rilasci considerati;
Riga 140: Riga 140:


Nel momento in cui l'utente esegue il comando <code>apt-get install vattelapesca</code> saranno assegnati i seguenti punteggi:
Nel momento in cui l'utente esegue il comando <code>apt-get install vattelapesca</code> saranno assegnati i seguenti punteggi:
* 100 a "vattelapesca" presente in repoC;
* 500 a "vattelapesca" presente in repoC;
* 500 a "vattelapesca" presente in repoB;
* 500 a "vattelapesca" presente in repoB;
* 500 a "vattelapesca" presente in repoA;
* 500 a "vattelapesca" presente in repoA;
Il pacchetto proveniente da C viene immediatamente scartato; a questo punto APT effettuerà la sua scelta in base ad un altro criterio, la versione, quindi ad essere installato sarà il pacchetto proveniente da repoB e non da repoA come desiderato.
Tutti e tre i pacchetti hanno lo stesso punteggio, ma il pacchetto proveniente da C viene immediatamente scartato perché implicherebbe retrocessione dello stesso (downgrade, il significato delle varie fascie di punteggio sarà spiegato poco più avanti). A questo punto APT sceglierà tra repoA e repoB in base ad un altro criterio, la versione, quindi ad essere installato sarà il pacchetto proveniente da repoB e non da repoA come desiderato.
Il problema esplode poi quando si esegue il comando <code>apt-get upgrade</code> (o peggio <code>apt-get dist-upgrade</code>), cioè quando si tenta di aggiornare tutti i pacchetti di sistema.
Il problema evidentemente non può che esplodere quando si esegue il comando <code>apt-get upgrade</code> (o peggio <code>apt-get dist-upgrade</code>), cioè quando si tenta di aggiornare tutti i pacchetti di sistema.


DA CONTINUARE
La soluzione è, come facilmente intuibile, quella di assegnare manualmente un punteggio ai vari pacchetti, singolarmente o raggruppandoli. Prima però è necessario capire il significato dei vari punteggi.


Affinché questo sia possibile, è necessario innanzitutto istruire apt secondo i nostri desideri. I file in questione sono due e precisamente <code>/etc/apt/apt.conf</code> e <code>/etc/apt/preferences</code>, che ora andremo ad analizzare. In un'installazione di default questi due file non sono normalmente presenti (vengono utilizzate delle impostazioni di default), quindi dovremmo procedere col crearli manualmente con i privilegi di root.
Affinché questo sia possibile, è necessario innanzitutto istruire apt secondo i nostri desideri. I file in questione sono due e precisamente <code>/etc/apt/apt.conf</code> e <code>/etc/apt/preferences</code>, che ora andremo ad analizzare. In un'installazione di default questi due file non sono normalmente presenti (vengono utilizzate delle impostazioni di default), quindi dovremmo procedere col crearli manualmente con i privilegi di root.
2 894

contributi