Nov 212012
 

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:

Flattr this!

  2 Responses to “Come installare un singolo pacchetto da Debian SID o da Debian Testing”

  1. 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

  2. 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.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*