Oggi avevo bisogno di installare 1 singolo pacchetto dalla versione unstable di Debian in un server installato con la versione stabile, quindi qual è il modo migliore per ottenere questo risultato?
Per questo esempio userò il pacchetto drush
, perché ci sono un sacco di differenze tra le varie versioni di Debian.
Ma, come prima cosa si deve essere sicuri di avere tutti i repository che si desiderano utilizzare nel file /etc/apt/sources.list in questi giorni se si utilizza un server che utilizza la versione stabile (squeeze) si dovrebbe avere qualcosa simile a questo:
deb http://debian.fastweb.it/debian squeeze main contrib non-free deb http://debian.fastweb.it/debian wheezy main contrib non-free deb http://ftp.it.debian.org/debian unstable main contrib non-free deb http://security.debian.org/ squeeze/updates main contrib deb-src http://security.debian.org/ squeeze/updates main contrib deb http://www.backports.org/debian squeeze-backports main contrib non-free |
Questo elenco definisce tutti i repository standard : stabile (squeeze), testing (wheezy) e Sid anche detta unstable, stiamo anche definendo il repository backport e quello di sicurezza.
Ora, per sapere quali versioni sono disponibili per un pacchetto che si desidera installare utilizzare il comando: apt-cache policy packagename
, quindi utilizzando drush
come pacchetto ottengo questo output:
apt-cache policy drush drush: Installed: (none) Candidate: 3.3-1 0 Version table: 5.7-1 0 100 http://ftp.it.debian.org/debian/ unstable/main amd64 Packages 100 /var/lib/dpkg/status 5.4-1 0 500 http://debian.fastweb.it/debian/ wheezy/main amd64 Packages 4.5-2~bpo60+1 0 650 http://www.backports.org/debian/ squeeze-backports/main amd64 Packages 3.3-1 0 700 http://debian.fastweb.it/debian/ squeeze/main amd64 Packages |
If you wonder what are the numbers at the start of each repository, these are the priority of every source, the higher has more priority and they are read from the file /etc/apt/preferences that on my server contains these information:
Se vi chiedete che cosa sono i numeri all’inizio di ogni repository, questi sono la priorità dei vari repository, la più alta ha più priorità e vengono letti dal file /etc/apt/preferences, file che sul mio server contiene le seguenti informazioni:
Package: * Pin: release a=stable Pin-Priority: 700 Package: * Pin: release a=squeeze-backports Pin-Priority: 650 Package: * Pin: release a=testing Pin-Priority: 600 Package: * Pin: release a=unstable Pin-Priority: 100 |
Quindi, per impostazione predefinita il sistema dovrebbe installare il pacchetto dalla versione stabile, e in generale, questo è quello che voglio, ma questa volta voglio installare la versione 5.7 del pacchetto, vediamo come fare:
Primo Metodo
E’ possibile utilizzare apt-get -t distribution install package
con questo comando si utilizzerà la distribuzione dichiarata per installare il pacchetto e le dipendenze , quindi utilizzando:
apt-get -t unstable install drush |
Installerà drush 5.7-1 0
E php 5.4.4-9
, una delle dipendenze di questo pacchetto.
Questo potrebbe essere esattamente quello che stai cercando, ma forse volete solo drush
dalla distribuzione unstable e tenere php alla versione stabile ?
Secondo Metodo
Per instalalre solo drush
da unstable, è possibile utilizzare il comando: apt-get install drush/unstable
il comando è simile al precedente, ma c’è una differenza importante questo comando dirà ad apt di installare SOLO il pacchetto drush
da unstable e tutte le sue dipendenze saranno prese dalla distribuzione di default; in questo caso dalla distribuzione stable, e così, alla fine di questo comando avrete drush 5.7-1 0
E php 5.3.3-7+squeeze14
Altri modi
Questi 2 metodi dovrebbero coprire la maggior parte delle vostre esigenze, ma è anche possibile modificare il file temporaneo delle priorità o dire ad apt-get
di installare una versione specifica, e sono sicuro che ci sono altri modi per ottenere questo risultato, come al solito, vi è più di un modo per ottenere un risultato su GNU/Linux ed è una cosa che mi piace di questo sistema operativo.
Popular Posts:
- None Found
In general, mixing stable and upstream Debian repos will lead to dependency problems down the road, judging by thousands of posts on the Debian forums by newbies that have done exactly what you advise, only to realize later that many packages are now uninstallable. Debian specifically advises against your method.
A safer method is to download the deb directly from packages.debian.org and use gdebi to try and install it. If there’s dependency issues with the stable libraries, it will refuse to do so.
The very best method, though it’s the most work, is to backport the newer package from the source code against the stable libraries. This does take some skill for some packages, but absolutely will not break anything.
http://forums.debian.net/viewtopic.php?f=16&t=38976
As Steve Pusser already sated, it is not advisable to mix Stable with Testing or Sid. Fortunately, in this case, the package is relatively “independent” and can be installed without much hassle, but in many cases it is necessary to update a core package (like PHP) that would break various installed packages.
The best method is to compile the package using the Stable tree.
I do not understand your APT Preferences. Backports has a priority of 1, yet you gave it 650; and any non-installed package has a priority of 500, but you gave 700 to Stable and 600 to Testing and Sid. Is it not easier to give Testing and Sid a priority of 1, like Backports?
There seems to be a problem with the Testing repository, because you gave it 600 and its Apt-Cache shows that it has 500 (just like any non-configured repository).
One of the European mirrors for Backports should give you a faster connection.