web-dev-qa-db-fra.com

Épingler un package en utilisant son propre référentiel et apt-get

J'ai créé mon propre référentiel afin de pouvoir fournir une version plus récente d'un package que celle que contient actuellement le référentiel Ubuntu. Tout fonctionne bien, à l'exception que je dois spécifier la version lors de l'installation:

Sudo apt-get install package=1.2.1

Si je ne spécifie pas la version, il l'installera à partir du référentiel d'Ubuntu.

J'ai essayé de placer mon référentiel en haut du sources.list mais cela ne fait aucune différence.

Je me demande donc s'il y a un drapeau lors de la construction du .deb package qui donnera la priorité à mon référentiel à tout moment? ou un drapeau dans le référentiel réel? Je préfère ne pas demander à l'utilisateur de modifier son /etc/apt/preferences pour définir la priorité, ni utiliser apt-get -t repo.

J'ai essayé d'installer le navigateur Tor étant donné ces instructions et il installe la dernière version de leur coutume repo. Je ne sais pas ce qu'ils font, mais cela ne fonctionne qu'avec les étapes qu'ils énumèrent.

3
Pete Darrow

Solution 1: (en utilisant Debian Epoch)

Préfixez la version de votre package avec 1: pour que ce soit 1:1.2.1 et donc il sera toujours considéré comme une version supérieure. C'est très pratique si vous créez vos propres packages modifiés et que vous ne voulez pas qu'ils soient remplacés par des mises à niveau d'Ubuntu.

Lors de la comparaison de deux numéros de version, d'abord l'Epoch de chacun est comparé, puis la version en amont si Epoch est égale, et ensuite debian_revision si la version en amont est également égale. L'époque est comparée numériquement.

Source: https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version

Solution 2 (à l'aide de l'épinglage)

Pour configurer AptPreferences pour un package donné, ajoutez un nouveau fichier dans /etc/apt/preferences.d/.

Sudo gedit /etc/apt/preferences.d/my-package-pin

Ajoutez ajoutez les lignes suivantes dans ce fichier:

Package: my_package
Pin: release o=Ubuntu
Pin-Priority: -10

J'empêcherai les versions du référentiel Ubuntu de remplacer celle fournie par votre dépôt local.

Pour vérifier si la version de la broche du package s'exécute:

Sudo apt-cache policy my_package

Visitez https://help.ubuntu.com/community/PinningHowto

2
Sylvain Pineau