Come aggiornare all'ultimo git su debian 7?


14

Ho installato git tramite apt-get su debian 7 che mi dà:

# git --version
git version 1.7.10.4

Vorrei passare alla versione latest di git. Ho provato:

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

Ma questo dà i seguenti errori:

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

Ho anche provato a seguire questa guida:

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

ma non riesco ancora a ottenere l'ultimo git, qualche suggerimento?


1
Perché non compilare dal sorgente (il documento INSTALL ha qualche aiuto a riguardo, se non si è esperti)?
nerdwaller,

Vorrei scaricare l'archivio direttamente per il sito Web ottenuto se l'origine del launchpad è rotta.
Ramhound,

2
Ne hai davvero bisogno? Nella maggior parte dei casi, l'installazione di una versione più recente non vale la pena. C'è una caratteristica particolare nella nuova versione di cui hai bisogno? Quale versione hai e quale vuoi installare? Comunque, non puoi usare i PPA con Debian , sono una cosa di Ubuntu.
terdon,

Risposte:


12

Aggiornato il 27/07/2016: un backhe wheezy è ora disponibile per Git 1.9.1. Le istruzioni si applicano ancora per installare una versione più recente o per Jessie.


Quando non è disponibile una versione più recente di un pacchetto backport, sono disponibili due opzioni:

  1. Chiedere ai manutentori del pacchetto di preparare un backport. Non è garantito che funzioni, ma alcuni manutentori sono positivi nel creare backport, quindi proverei.

    Le e-mail dei manutentori possono essere trovate qui .

  2. Costruisci te stesso dalle fonti. Questo potrebbe essere fatto in due modi:

    • Crea "così com'è" dal tarball di origine. Se scegli questa strada, assicurati di configurare il sistema di build di Git per installare tutto sotto ~/gito /opt/gito qualcosa del genere, altrimenti in seguito avrai un ottimo PITA che rimuove ciò che hai installato.

      Il problema è che il modo convenzionale Unix di installare software diffondendolo su tutto il filesystem è sensato, ma solo quando si dispone di una sorta di registro che "conosce" quale file appartiene a quale pacchetto e viceversa, e sistemi di packaging come Debian fai esattamente questo. Se esegui un'installazione "normale" di un pacchetto creato dai sorgenti, nella maggior parte dei casi non avrai modo di disinstallare questo software in un secondo momento (a meno di usarlo checkinstallinvece di make install, ma questa è davvero l'ultima risorsa). Al contrario, se configuri un pacchetto sorgente per installare tutto in una singola directory, avrai piccole difficoltà nell'esecuzione del software (le sue directory "binarie" non saranno sul tuo $PATH), in cambio disinstallarlo in seguito sarà un gioco da ragazzi - un singolo rm -rf /path/to/that/dir.

    • Fai il backport te stesso. Questo è più complicato, ma in casi semplici potrebbe funzionare, quindi vale la pena provare l'IMO.

      Fondamentalmente vai così (un link al .dscfile è preso dalla pagina del pacchetto in 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
      

      Verifica se tutte le dipendenze di build sono soddisfatte eseguendo:

      $ dpkg-checkbuilddeps
      

      E installa tutto ciò che lo strumento dice che al momento manca. A volte un pacchetto può fare riferimento a una versione di qualcosa di troppo recente per essere disponibile nella distro a cui stai eseguendo il backport; in questo caso va bene provare a imbrogliare e correggere la versione di tale pacchetto nel debian/controlfile.

      Ora aggiusta la versione dei pacchetti che stanno per essere compilati. Il modo migliore per raggiungere questo obiettivo è fare in modo che uno strumento faccia la cosa giusta:

      $ dch --bpo
      

      Aggiungerà una voce al debian/changelogfile e aprirà l'editor di testo preferito per sovrintenderlo. Basta chiudere l'editor: la versione per i pacchetti da compilare è presa dalla prima voce di questo file.

      Ora proviamo effettivamente a costruire:

      $ dpkg-buildpackage -uc -us -b
      

      Se sei fortunato, a questo punto avrai un mucchio di nuovi splendidi .debpacchetti Git .., che puoi semplicemente installare usando dpkg -i <packagename> ....

      (Esegui debuild cleanper eliminare il crud incorporato o semplicemente rimuovere gitcompletamente la directory. Potresti anche voler rimuovere tutto ciò che hai installato dopo l'esecuzione dpkg-checkbuilddep.)

      Sfortunatamente, se la costruzione non riesce per qualche motivo, ci vogliono alcune conoscenze per tentare di risolvere, ma questo non rientra nell'ambito di questa discussione.


@Dereckson, grazie per il tuo suggerimento di modifica - Lo apprezzo! Ma puoi approfondire perché dgetnon è necessario? Il suo punto è portare tutti i file che costituiscono il pacchetto sorgente in modo da avere effettivamente qualcosa da decomprimere, modificare e costruire. Recuperare solo il singolo .dscfile farà esattamente questo, ma mancheranno i tarball di origine e di debianizzazione.
kostix,

Oh, colpa mia. La sequenza di comandi mi ha ingannato, poiché solo il file git_2.1.4-2.1.dsc viene usato in seguito esplicitamente come argomento. Ho pensato che dpkg-source ha recuperato i sorgenti, ma in effetti richiede che i file dei pacchetti siano fisicamente presenti.
Dereckson,

7

Puoi ancora usare Git PPA per Ubuntu Precise dicendo a apt di compilare dall'ultima fonte che trova lì. Le distribuzioni sono abbastanza simili che dovrebbe funzionare bene.

L'ho usato con successo su Raspbian (che si basa su wheezy) per ottenere pacchetti per armhf, ma dovrebbe funzionare per qualsiasi architettura.

Aggiungi prima la chiave GPG per il PPA:

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

Aggiungi l'URL per i pacchetti di origine in apt:

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

Aggiornamento apt:

apt-get update

Installa dipendenze build:

apt-get build-dep git

Scarica e costruisci git dalla fonte. Potresti voler fare questo è una directory temporanea, poiché il processo di creazione crea un po 'di cruft:

apt-get -b source git

Installa il pacchetto che hai appena creato e ripulito (git-core non è più necessario):

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

7

Se vuoi aggiornare un pacchetto specifico in Debian 7 (Wheezy), hai la possibilità di usare i backport semplicemente aggiungendo al tuo /etc/apt/sources.list le seguenti righe:

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

Quindi, per installare / aggiornare git , esegui i comandi:

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

Puoi anche configurare backport in un file separato in /etc/apt/sources.list.d/. In particolare, preferisco usare un file /etc/apt/sources.list.d/backports.list .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.