Jak zaktualizować do najnowszej wersji git na Debian 7?

14

Zainstalowałem git poprzez apt-get na Debianie 7, co daje mi:

# git --version
git version 1.7.10.4

Chciałbym uaktualnić do najnowszej wersji git. Próbowałem:

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

Ale to daje następujące błędy:

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

Próbowałem także postępować zgodnie z tym przewodnikiem:

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

ale nadal nie mogę uzyskać najnowszego gita, jakieś sugestie?

u123
źródło
1
Dlaczego nie skompilować ze źródła (dokument INSTALL ma w tym trochę pomocy, jeśli jesteś nowy)?
nerdwaller
Pobrałbym archiwum bezpośrednio dla gotowej strony, jeśli źródło startera jest uszkodzone.
Ramhound,
2
Czy naprawdę potrzebujesz? W większości przypadków instalowanie nowszej wersji nie jest warte kłopotów. Czy potrzebujesz nowej funkcji w nowej wersji? Którą wersję posiadasz i którą chcesz zainstalować? W każdym razie nie możesz używać PPA z Debianem , są one rzeczą Ubuntu.
terdon

Odpowiedzi:

12

Zaktualizowany 27.07.2016: dla Git 1.9.1 dostępna jest teraz wheezy-backports . Nadal obowiązują instrukcje instalacji nowszej wersji lub dla Jessie.


Gdy nowsza wersja pakietu backport nie jest dostępna, masz dwie opcje:

  1. Poproś opiekunów pakietów o przygotowanie backportu. Nie ma gwarancji, że zadziała, ale niektórzy opiekunowie są pozytywnie nastawieni do tworzenia backportów, więc po prostu spróbuję.

    Można tam znaleźć e-maile opiekunów .

  2. Zbuduj go sam ze źródeł. Można to zrobić na dwa sposoby:

    • Zbuduj „jak jest” ze źródłowego archiwum. Należy wybrać tę drogę, upewnij się , aby skonfigurować system budowania GIT, aby zainstalować wszystko pod ~/gitlub /opt/gitczy coś takiego inaczej później będziesz miał wielki PITA usuwania czego zainstalowany.

      Problem polega na tym, że konwencjonalny uniksowy sposób instalowania oprogramowania poprzez rozpowszechnianie go w całym systemie plików jest sensowny, ale tylko wtedy, gdy masz jakiś rejestr, który „wie”, który plik należy do którego pakietu i odwrotnie, oraz systemy pakowania, takie jak Debian rób dokładnie to. Jeśli wykonasz „normalną” instalację pakietu zbudowanego ze źródeł, w większości przypadków później nie będziesz mógł odinstalować tego oprogramowania (nie używasz go checkinstallzamiast make install, ale tak naprawdę jest to ostateczność). I odwrotnie, jeśli skonfigurujesz pakiet źródłowy, aby zainstalować wszystko w jednym katalogu, będziesz miał niewielkie trudności z uruchomieniem oprogramowania (jego katalogów „binarnych” nie będzie w twoim katalogu $PATH), w zamian odinstalowanie go później nie będzie stanowiło problemu - singiel rm -rf /path/to/that/dir.

    • Zrób backportowanie się. Jest to bardziej zaangażowane, ale w prostych przypadkach może po prostu działać, więc IMO warto spróbować.

      Zasadniczo wyglądasz tak (link do .dscpliku jest pobierany ze strony pakietu w trybie niestabilnym ):

      # 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
      

      Sprawdź, czy masz spełnione wszystkie zależności kompilacji, uruchamiając:

      $ dpkg-checkbuilddeps
      

      I zainstaluj wszystko, czego według tego narzędzia brakuje. Czasami pakiet może odnosić się do wersji czegoś zbyt świeżego, aby był dostępny w dystrybucji, do której backportujesz; w takim przypadku można spróbować oszukać i naprawić wersję takiego pakietu w debian/controlpliku.

      Teraz napraw wersję pakietów, które mają zostać zbudowane. Najlepszym sposobem na osiągnięcie tego jest posiadanie odpowiedniego narzędzia:

      $ dch --bpo
      

      Dodaje wpis do debian/changelogpliku i otwiera wybrany edytor tekstu, aby go nadzorować. Po prostu zamknij edytor - wersja pakietów, które mają zostać zbudowane, pochodzi z najwyższego wpisu w tym pliku.

      Teraz spróbujmy zbudować:

      $ dpkg-buildpackage -uc -us -b
      

      Jeśli masz szczęście, w tym momencie będziesz mieć mnóstwo nowych błyszczących .debpakietów Git .., które możesz po prostu zainstalować za pomocą dpkg -i <packagename> ....

      (Uruchom, debuild cleanaby pozbyć się wbudowanego narzędzia lub po prostu gitcałkowicie usuń katalog. Możesz również usunąć wszystko, co zainstalowałeś po uruchomieniu dpkg-checkbuilddep).

      Niestety, jeśli z jakiegoś powodu kompilacja się nie powiedzie, próba naprawy wymaga pewnej wiedzy, ale nie wchodzi to w zakres tej dyskusji.

kostix
źródło
@Dereckson, dziękuję za sugestię edycji - doceniam to! Ale czy możesz wyjaśnić, dlaczego dgetnie jest potrzebny? Chodzi o to, aby dostarczyć ci wszystkie pliki stanowiące pakiet źródłowy, abyś miał coś do rozpakowania, ulepszenia i skompilowania. Pobranie tylko jednego .dscpliku wystarczy, ale brak będzie archiwów źródłowych i debianizacyjnych.
kostix
Och, moja wina. Sekwencja poleceń mnie oszukała, ponieważ tylko plik git_2.1.4-2.1.dsc jest później jawnie używany jako argument. Myślałem, że dpkg-source pobiera źródła, ale rzeczywiście wymaga to, aby pliki pakietów były tam fizycznie.
Dereckson,
7

Nadal możesz używać Git PPA dla Ubuntu Precise, informując apt, aby budował z najnowszego znalezionego tam źródła. Rozkłady są na tyle podobne, że powinno to działać dobrze.

Użyłem go z powodzeniem na Raspbian (który jest oparty na wheezy), aby uzyskać pakiety dla armhf, ale powinno działać dla każdej architektury.

Najpierw dodaj klucz GPG dla PPA:

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

Dodaj adres URL pakietów źródłowych do apt:

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

Zaktualizuj apt:

apt-get update

Zainstaluj zależności kompilacji:

apt-get build-dep git

Pobierz i skompiluj git ze źródła. Możesz to zrobić jako katalog tymczasowy, ponieważ proces kompilacji tworzy trochę cruft:

apt-get -b source git

Zainstaluj właśnie utworzony pakiet i wyczyść go (git-core nie jest już potrzebny):

dpkg -i git_*.deb git-man_*.deb
dpkg -P git-core
emning
źródło
7

Jeśli chcesz zaktualizować konkretny pakiet w Debianie 7 (Wheezy), możesz skorzystać z backportów, po prostu dodając do /etc/apt/sources.list następujące linie:

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

Następnie, aby zainstalować / zaktualizować git , uruchom następujące polecenia:

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

Możesz także skonfigurować backporty w osobnym pliku w /etc/apt/sources.list.d/. Szczególnie wolę używać pliku /etc/apt/sources.list.d/backports.list .

ramsvidor
źródło