Comment conserver mon système Debian avec les derniers paquets?

9

La plupart des "logiciels" que j'installe sur mon serveur doivent être la dernière version (Java, Tomcat, MySQL-Cluster). Donc je n'ai jamais la chance qu'il y ait des paquets Debian pré-construits (dans la distribution) disponibles. Par conséquent, tous les logiciels sont téléchargés à partir de la page Web du projet et construits à partir des sources.

Maintenant ma question est, quelle est la bonne façon de les installer sur mon système Debian?

Mon principal problème est que lors de leur installation directement depuis la source, ils ne sont pas inclus dans la gestion des packages (avec aptitude). Checkinstall ne semble pas vraiment être utilisé et equiv présente également des inconvénients. Est-ce la seule façon correcte de gérer cela en créant mes propres packages avec dh_make et dpkg-buildpackage?

Que faites-vous si vous avez toujours besoin de la dernière version?

Braiam
la source

Réponses:

10

La recherche de packages plus récents est un problème courant sur n'importe quel système d'exploitation. Le cycle de publication de Debian a duré en moyenne 2 ans ces dernières années, donc vers la fin de ce cycle, c'est peut-être un problème plus urgent. Une façon d'atténuer cela est de passer aux tests vers la fin du cycle de publication stable, lorsque la prochaine version sera presque stable. Il ne ressort pas clairement de la question de savoir s'il s'agit de stable ou plus généralement de test et / ou instable. Quoi qu'il en soit, avoir la version la plus récente peut être un problème même si elle est instable, car la version la plus récente peut ne pas être encore packagée. Les développeurs / packagers Debian sont des volontaires, donc ils peuvent s'ennuyer ou s'occuper d'autres choses, avec pour conséquence que le paquet languit.

Pour plus de simplicité et de concrétisation, je suppose dans ce qui suit que le plan consiste à rétroporter un package vers stable, mais il s'applique plus généralement. Donc, voici ce que je fais si je veux une version plus récente d'un logiciel qui n'est pas présent dans stable, dans un ordre approximatif.

  1. Recherchez le paquet dans Debian Backports . Parfois, vous pouvez trouver un package suffisamment récent pour répondre à vos besoins. Cependant, il arrive souvent que ces packages soient obsolètes par rapport à la version instable ou expérimentale ou en amont.

  2. Essayez d'installer le package directement depuis testing, unstable ou experimental. Si stable n'a pas beaucoup divergé de la version à partir de laquelle vous essayez d'installer, cela peut fonctionner. Vous saurez que cette approche est mauvaise si le système commence à essayer d'installer ou de mettre à niveau des packages de base à partir de la version la plus récente. Supposons que vous essayez d'installer depuis instable, puis

    apt-get install packagename/unstable
    

    est la première chose à essayer. Avec les versions d'apt dans stable, cela échouera souvent, car cela nécessite d'autres packages de unstable, et cette incantation ne fait qu'augmenter la préférence de packagenamesuffisamment élevé pour qu'il soit installé dans unstable. Si vous ne comprenez pas ce que cela signifie, partez et lisez man apt_preferences. Continuez à ajouter des dépendances à partir d'instable, en vous assurant qu'il n'essaie pas de mettre à niveau les packages de base. Par exemple, s'il commence à essayer de mettre à niveau libc6 ou X ou KDE ou Gnome, abandonnez immédiatement. C'est généralement bien s'il essaie de mettre à niveau d'autres packages à partir du même package source, car ceux-ci sont généralement étroitement couplés. Pour voir de quel paquet source dépend un paquet binaire, faites

    apt-cache showsrc packagename
    

    Comme beaucoup de choses dépendent de la bibliothèque GNU C (libc6), cela était un problème. Plus récemment, l'API semble s'être stabilisée, il est donc plus souvent possible de s'en tirer sans avoir à la mettre à niveau. Si un package satisfait ses dépendances d'exécution sur stable, mais ne fonctionne toujours pas correctement, signalez un bogue. Si le packager vous dit que ce n'est pas un bug, ils ont tort. :-)

  3. Rétroportez vous-même le package des tests, instable ou expérimental.

    Comme mentionné ci-dessus, les rétroportages sont une option, mais souvent ces packages sont obsolètes par rapport à la version instable ou expérimentale ou en amont.

    Cela peut souvent nécessiter une chose de type boucle de génération de dépendance récursive. Vous devez d'abord obtenir les dépendances de construction avec

    apt-get build-dep packagename    
    

    Si cela échoue car l'une des dépendances n'est pas assez récente, vous devrez d'abord rétroporter cette dépendance. Cela peut spriral hors de contrôle. J'abandonne généralement si je dois faire face à plus de 2 niveaux de récursivité. Notez cependant que les dépendances réelles ne sont pas nécessairement aussi étroites que celles citées, c'est-à-dire. une ancienne version peut fonctionner. Souvent, le packager n'essaie pas de trouver la version la plus ancienne d'une dépendance de build (ou, en fait, d'exécution) qui fonctionnera.

  4. Vérifiez la disponibilité des packages à partir de l'amont correspondant. Idéalement, ceux-ci correspondraient à votre version de distribution, mais vous pourriez également être en mesure de les reconstruire si nécessaire.

  5. Créez des packages pour la version du logiciel plus récente que les packages les plus récents dans testing / unstable / experimental. Cela peut être relativement difficile, mais toujours étonnamment réalisable. La première chose à noter est que si vous essayez de mettre en paquet une version plus récente d'un paquet qui est déjà dans Debian, vous commencez déjà avec un gros avantage, à savoir que vous avez le paquet existant avec lequel travailler. Fais juste

    apt-get source packagename
    

    et apt-gettéléchargera le paquet source correspondant, y compris le sous-répertoire debian où se trouve le paquet. Notez en outre que ces jours-ci, ce paquetage vit souvent à l'intérieur d'un référentiel de contrôle de verson (git semble populaire avec Debian) et stable apt (actuellement 0.8.10.3 ) vous indique utilement où cela se trouve lorsque vous l'invoquez apt-get source. Vous devriez regarder cela, car les emballeurs peuvent avoir des versions plus récentes de l'emballage que ce qui correspond à n'importe quel paquet publié. Par exemple.

    $ apt-get source mercurial
      Reading package lists... Done
      Building dependency tree       
      Reading state information... Done
      NOTICE: 'mercurial' packaging is maintained in the 'Svn' version control system at:
      svn://svn.debian.org/python-apps/packages/mercurial/trunk
    

    Alternativement, vous pouvez simplement utiliser

    apt-cache showsrc mercurial | grep Vcs
    

    pour répertorier le référentiel.

    Si le package n'est pas à jour, vous devrez peut-être apporter des modifications au
    package, actualiser les correctifs appliqués, mais c'est généralement un bon
    point de départ . Debian semble être en train de standardiser la gestion des paquets sur
    quilt au format dpkg-source 3.0 (quilt) , ce qui aide à rafraîchir les correctifs.

    Je conclurai par un exemple concret de la manière dont j'ai rétroporté le paquet Debian de pgf . La dernière version packagée de pgf était 2.00 en 2008, et depuis lors, 2.10 avait été publiée. Voir la discussion dans Veuillez mettre à jour vers la dernière version stable de pgf (2.10) , et mon bogue de suivi avec un patch, pgf: patches contre l'empaquetage Debian 2.0 . En fait, le paquetage Debian de pgf était très simple, et je n'ai eu qu'à changer une ligne dans le paquetage 2.10 pour le faire fonctionner. J'ai fini par réprimer toutes les plaintes lintiennes également, mais c'était strictement facultatif.

Faheem Mitha
la source
La dernière phrase du premier paragraphe peut être trompeuse. Veuillez indiquer clairement que le problème ne se produit que parfois . La façon dont vous le dites donne l'impression que les DD sont généralement comme ça.
tshepang
@Tshepang: Bon point. C'est bon maintenant?
Faheem Mitha
Ouais, bien mieux.
tshepang
5

Vous pouvez certainement créer vos propres packages, et cela fonctionnera. Cependant, je recommanderais d'utiliser les rétroportages d' abord si ce que vous voulez est disponible là-bas.

Les rétroportages sont maintenus par Debian et vous obtenez des mises à jour de sécurité pour eux.

bahamat
la source
3

La construction de vos propres packages est la voie à suivre (à mon humble avis). Selon l'âge de la version Debian d'un paquet et ce qui a changé, cela peut être aussi simple que de remplacer le nom de fichier de l'archive tar source dans la description du paquet et dans le pire des cas, vous pouvez toujours l'utiliser comme modèle pour votre propre version.

Sven
la source
1

Que faites-vous si vous avez toujours besoin de la dernière version?

  1. Comme déjà mentionné , utilisez les rétroportages.

  2. Seul un petit sous-ensemble de paquets Debian est rétroporté, donc je vous suggère d'utiliser Debian Testing . Il offre un bel équilibre entre stabilité et récence, et est dans un sens, comme une distribution roulante.

  3. Si vous êtes un peu plus audacieux, utilisez Debian Unstable . Il est censé être raisonnablement stable. Certains vont même jusqu'à prétendre qu'il est plus stable que d'autres versions "stables" de la distribution. Quoi qu'il en soit, Unstable est l'endroit où les nouvelles versions de packages atterrissent normalement. Ils restent normalement assis pendant environ 10 jours, pour permettre le test, avant de migrer vers le test.

  4. Même en utilisant ces deux, vous pourriez toujours vous retrouver sans les dernières versions. Dans ce cas, jetez un œil à Debian Experimental . Il est normalement utilisé lorsque les nouveaux packages sont trop perturbateurs pour les archives normales (Unstable et Testing).

  5. Si Experimental n'a toujours pas assez de nouvelles versions logicielles, allez voir les PPA d'Ubuntu . J'ai vu des versions de logiciels plus récentes que ce que manquent toutes les archives ci-dessus. Utilisez-le avec prudence, car Ubuntu n'est pas 100% compatible avec Debian (mais dans la plupart des cas, il ne devrait pas y avoir de problème).

  6. Si ce qui précède échoue, je suppose qu'il suffit de créer vos propres packages, comme mentionné .

tshepang
la source
Les gens qui disent que l'instable de Debian est plus stable que les autres distributions stables plaisantent au mieux. Changements instables tous les jours, stable est un référentiel fixe. Unstable ne signifie pas qu'il va planter, mais cela signifie que les développeurs apportent de nombreuses modifications aux packages. Stable signifie qu'il est publié, et seuls les correctifs de sécurité seront ajoutés. Je n'ai jamais eu de crashs étranges fonctionnant de manière instable. J'ai vu des paquets se briser et des problèmes de dépendance après la mise à niveau, méfiez-vous ;-) Comment tout cela se compare aux autres versions "stables" de la distribution me dépasse. Il n'y a pas de "plus stable" dans ce contexte. Ça change ou ça ne change pas.
Arjan Drieman
@ArjanDrieman: en fait, ces gens ne plaisantent pas, et dans ce contexte, ils se réfèrent à ce qu'il soit plus résistant aux chocs.
tshepang
Ils plaisantent toujours au mieux. J'ai vraiment vu des gens en plaisanter. Une flamme de micro-distribution ;-) J'ai utilisé quelques distributions au fil du temps, et je n'ai jamais eu de crashs bizarres non plus, les gens qui disent que sérieusement ne peuvent pas le sauvegarder avec des recherches ou des statistiques. Cela peut être de l'ignorance, de l'arrogance, des préjugés, n'importe quoi ... mais est-ce mieux qu'une blague? Pouvez-vous me dire qui sont ces mystérieux "Certains"?, Afin que je puisse leur demander leurs recherches? "Certains vont même aussi loin" ... ce sont des mots de belette. Qu'aimeriez-vous dans une réponse, des faits ou une opinion populaire et des affirmations ambiguës?
Arjan Drieman
1
@Arjan Drieman: Je suis d'accord sur le fait que instable, peut «parfois» être à la hauteur de son nom. Vous échangez la stabilité pour vous rapprocher du bord, quiconque prétend que ce n'est pas le cas est au mieux malhonnête. Dans l'ensemble, il est étonnamment stable, mais la stabilité n'est pas la priorité absolue pour instable. J'ai également tendance à être d'accord avec vous en ce qui concerne les mots «glissants». C'est presque un mécanisme de défense ici, car toute déclaration absolue / directe est immédiatement attaquée.
JM Becker