Comment passer à la dernière version de git sur Debian 7?


14

J'ai installé git via apt-get sur debian 7 qui me donne:

# git --version
git version 1.7.10.4

Je voudrais passer à la version la plus récente de git. J'ai essayé:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git

Mais cela donne les erreurs suivantes:

Fetched 6,944 B in 0s (10.1 kB/s)
W: Failed to fetch http://ppa.launchpad.net/git-core/ppa/ubuntu/dists/wheezy/main/source/Sources  404  Not Found

W: Failed to fetch http://ppa.launchpad.net/git-core/ppa/ubuntu/dists/wheezy/main/binary-amd64/Packages  404  Not Found

J'ai également essayé de suivre ce guide:

http://backports.debian.org/Instructions/

mais je ne peux toujours pas obtenir le dernier git, des suggestions?


1
Pourquoi ne pas compiler à partir des sources (le document INSTALL contient de l'aide, si vous êtes nouveau)?
nerdwaller

Je téléchargerais l'archive directement pour le site Web obtenu si la source du tableau de bord est cassée.
Ramhound

2
En avez-vous vraiment besoin? Dans la plupart des cas, l'installation d'une version plus récente ne vaut pas la peine. Existe-t-il une fonctionnalité particulière dans la nouvelle version dont vous avez besoin? Quelle version possédez-vous et laquelle souhaitez-vous installer? De toute façon, vous ne pouvez pas utiliser les PPA avec Debian , c'est une chose Ubuntu.
terdon

Réponses:


12

Mise à jour 2016-07-27: un wheezy-backports est maintenant disponible pour Git 1.9.1. Des instructions s'appliquent toujours pour installer une version plus récente ou pour Jessie.


Lorsqu'une version plus récente d'un package de rétroportage n'est pas disponible, vous avez deux options:

  1. Demandez aux responsables du package de préparer un backport. Il n'est pas garanti de fonctionner, mais certains responsables sont positifs quant à la création de rétroportages, alors j'essaierais simplement.

    Les e-mails des responsables se trouvent .

  2. Construisez-le vous-même à partir des sources. Cela pourrait se faire de deux manières:

    • Construisez "tel quel" à partir de l'archive tar source. Si vous choisissez cette route, assurez-vous de configurer le système de construction de Git pour installer tout sous ~/gitou /opt/gitou quelque chose comme ça sinon plus tard, vous aurez un excellent PITA supprimant ce que vous avez installé.

      Le problème est que la manière conventionnelle Unix d'installer un logiciel en le répartissant sur l'ensemble du système de fichiers est raisonnable, mais uniquement lorsque vous avez une sorte de registre qui "sait" quel fichier appartient à quel paquet et vice-versa, et des systèmes de conditionnement tels que Debian. faites exactement cela. Si vous effectuez une installation "normale" d'un package construit à partir des sources, dans la plupart des cas, vous n'aurez aucun moyen de désinstaller ce logiciel plus tard (à court d'utiliser à la checkinstallplace de make install, mais c'est vraiment un dernier recours). Inversement, si vous configurez un package source pour tout installer sous un seul répertoire, vous aurez des difficultés mineures à exécuter le logiciel (ses répertoires "binaires" ne seront pas sur votre $PATH), en échange de le désinstaller plus tard sera une évidence - un seul rm -rf /path/to/that/dir.

    • Rétroportez-vous. C'est plus compliqué, mais dans des cas simples, cela pourrait bien fonctionner, alors l'OMI vaut la peine d'essayer.

      Fondamentalement, vous allez comme ça (un lien vers le .dscfichier est tiré de la page du package dans unstable ):

      # apt-get install devscripts
      $ mkdir ~/devel && cd $_
      $ dget http://ftp.de.debian.org/debian/pool/main/g/git/git_2.1.4-2.1.dsc
      $ dpkg-source -x git_2.1.4-2.1.dsc
      $ cd git
      

      Vérifiez si toutes les dépendances de génération sont satisfaites en exécutant:

      $ dpkg-checkbuilddeps
      

      Et installez tout ce que l'outil dit manque actuellement. Parfois, un package peut faire référence à une version de quelque chose de trop récent pour être disponible dans la distribution vers laquelle vous rétroportez; dans ce cas, il est normal d'essayer de tricher et de corriger la version d'un tel package dans le debian/controlfichier.

      Maintenant, corrigez la version des paquets sur le point d'être construits. La meilleure façon d'y parvenir est d'avoir un outil qui fasse ce qu'il faut:

      $ dch --bpo
      

      Il ajoutera une entrée au debian/changelogfichier et ouvrira votre éditeur de texte de choix pour le superviser. Fermez simplement l'éditeur - la version des packages à construire est tirée de l'entrée supérieure de ce fichier.

      Essayons maintenant de construire:

      $ dpkg-buildpackage -uc -us -b
      

      Si vous êtes chanceux, à ce stade, vous aurez un tas de nouveaux .debpackages Git brillants .., que vous pouvez simplement installer en utilisant dpkg -i <packagename> ....

      (Exécutez debuild cleanpour vous débarrasser du crud intégré ou supprimez simplement le gitrépertoire complètement. Vous pouvez également supprimer tout ce que vous avez installé après l'exécution dpkg-checkbuilddep.)

      Malheureusement, si la construction échoue pour une raison quelconque, il faut certaines connaissances pour tenter de corriger, mais cela est hors de portée de cette discussion.


@Dereckson, merci pour votre suggestion de modification - je l'apprécie! Mais pouvez-vous expliquer pourquoi cela dgetn'est pas nécessaire? Son but est de vous apporter tous les fichiers constituant le paquet source afin que vous ayez réellement quelque chose à décompresser, à modifier et à construire. Récupérer uniquement le .dscfichier unique fera exactement cela, mais les tarballs source et de debianisation seront manquants.
kostix

Oh, ma faute. La séquence de commande m'a trompé, car seul le fichier git_2.1.4-2.1.dsc est ensuite utilisé explicitement comme argument. Je pensais que dpkg-source récupérait les sources, mais il fallait en effet que les fichiers des packages soient physiquement là.
Dereckson

7

Vous pouvez toujours utiliser Git PPA pour Ubuntu Precise en disant à apt de construire à partir de la dernière source qu'il y trouve. Les distributions sont suffisamment similaires pour que cela fonctionne très bien.

Je l'ai utilisé avec succès sur Raspbian (qui est basé sur Wheezy) pour obtenir des packages pour armhf, mais cela devrait fonctionner pour n'importe quelle architecture.

Ajoutez d'abord la clé GPG pour le PPA:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E1DF1F24

Ajoutez l'URL des packages source à apt:

cat > /etc/apt/sources.list.d/git.list << EOF
deb-src http://ppa.launchpad.net/git-core/ppa/ubuntu precise main
EOF

Mettre à jour apt:

apt-get update

Installez les dépendances de build:

apt-get build-dep git

Téléchargez et compilez git depuis la source. Vous voudrez peut-être faire ceci est un répertoire temporaire, car le processus de construction crée un peu de cruauté:

apt-get -b source git

Installez le package que vous venez de construire et nettoyez (git-core n'est plus nécessaire):

dpkg -i git_*.deb git-man_*.deb
dpkg -P git-core

7

Si vous souhaitez mettre à niveau un paquet spécifique dans Debian 7 (Wheezy), vous avez la possibilité d'utiliser des rétroportages en ajoutant simplement à votre /etc/apt/sources.list les lignes suivantes:

deb http://cloudfront.debian.net/debian wheezy-backports main
deb-src http://cloudfront.debian.net/debian wheezy-backports main

Ensuite, pour installer / mettre à niveau git , exécutez les commandes:

$ aptitude update
$ aptitude -t wheezy-backports install git

Vous pouvez également configurer les rétroportages dans un fichier séparé dans /etc/apt/sources.list.d/. Je préfère particulièrement utiliser un fichier /etc/apt/sources.list.d/backports.list .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.