Как перейти на последнюю версию git на Debian 7?

14

Я установил git через apt-get на Debian 7, который дает мне:

# git --version
git version 1.7.10.4

Я хотел бы перейти на последнюю версию git. Я пытался:

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

Но это дает следующие ошибки:

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

Я также пытался следовать этому руководству:

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

но я до сих пор не могу получить последний мерзавец, какие-либо предложения?

U123
источник
1
Почему бы не скомпилировать из исходного кода (документ INSTALL поможет вам в этом, если вы новичок)?
nerdwaller
Я бы скачал архив напрямую для полученного сайта, если исходный код панели запуска не работает.
Ramhound
2
Вам действительно нужно? В большинстве случаев установка более новой версии не стоит проблем. Есть ли какая-то особенность в новой версии, которая вам нужна? Какая версия у вас есть и какую вы хотите установить? В любом случае, вы не можете использовать PPA с Debian , это Ubuntu.
Тердон

Ответы:

12

Обновлено 2016-07-27: wheezy-backports теперь доступен для Git 1.9.1. Инструкция по-прежнему применяется для установки более новой версии или для Джесси.


Если более новая версия пакета обратного порта недоступна, у вас есть два варианта:

  1. Попросите, чтобы сопровождающие посылки подготовили бэкпорт. Работать не гарантируется, но некоторые сопровождающие положительно относятся к созданию бэкпортов, поэтому я просто попробую.

    Электронные письма сопровождающих можно найти там .

  2. Построй сам из источников. Это можно сделать двумя способами:

    • Сборка "как есть" из исходного архива. Если вы выберете этот маршрут, обязательно настройте систему сборки Git для установки всего под ~/gitили, /opt/gitили что-то подобное, иначе позже у вас будет отличная PITA, удаляющая то, что вы установили.

      Проблема в том, что обычный Unix-способ установки программного обеспечения путем распространения его по всей файловой системе является разумным, но только когда у вас есть какой-то реестр, который «знает», какому файлу принадлежит какой пакет и наоборот, и системы упаковки, такие как Debian. сделать именно это. Если вы выполняете «обычную» установку пакета, созданного из исходных кодов, в большинстве случаев у вас не будет возможности удалить этот фрагмент программного обеспечения позже (если не использовать checkinstallвместо make install, но это действительно последнее средство). И наоборот, если вы сконфигурируете пакет с исходным кодом для установки всего в одном каталоге, у вас будут небольшие проблемы с запуском программного обеспечения (его «двоичные» каталоги не будут в вашем $PATH), в обмен на удаление его позже будет легко - сингл rm -rf /path/to/that/dir.

    • Сделай бэкпорт сам. Это более сложный процесс, но в простых случаях это может сработать, поэтому стоит попробовать IMO.

      В основном вы идете так (ссылка на .dscфайл взята со страницы пакета в нестабильном ):

      # 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
      

      Проверьте, удовлетворены ли все зависимости сборки, запустив:

      $ dpkg-checkbuilddeps
      

      И установите все, что, как говорит инструмент, в настоящее время отсутствует. Иногда пакет может ссылаться на версию чего-то слишком свежего, чтобы быть доступным в дистрибутиве, к которому вы обращаетесь; в этом случае можно попытаться обмануть и исправить версию такого пакета в debian/controlфайле.

      Теперь исправьте версию пакетов, которые собираются собрать. Лучший способ добиться этого - заставить инструмент делать правильные вещи:

      $ dch --bpo
      

      Он добавит запись в debian/changelogфайл и откроет ваш текстовый редактор по вашему выбору. Просто закройте редактор - версия для сборки пакетов берется из верхней записи в этом файле.

      Теперь давайте попробуем собрать:

      $ dpkg-buildpackage -uc -us -b
      

      Если вам повезет, в этот момент у вас будет куча великолепных новых .debпакетов Git .., которые вы можете просто установить, используя dpkg -i <packagename> ....

      (Запустите, debuild cleanчтобы избавиться от встроенного crud или просто полностью удалите gitкаталог. Вы также можете удалить все, что вы установили после запуска dpkg-checkbuilddep.)

      К сожалению, если по какой-то причине сборка не удалась, для исправления требуются определенные знания, но это выходит за рамки данного обсуждения.

kostix
источник
@Dereckson, спасибо за ваше предложение по редактированию - я ценю это! Но можете ли вы уточнить, почему dgetэто не нужно? Весь смысл в том, чтобы принести вам все файлы, составляющие пакет с исходным кодом, чтобы у вас действительно было что распаковать, настроить и собрать. Выборка только одного .dscфайла будет делать именно это, но архивы исходного кода и debianization будут отсутствовать.
kostix
О, моя вина Последовательность команд обманула меня, так как только файл git_2.1.4-2.1.dsc впоследствии используется явно в качестве аргумента. Я думал, что dpkg-source извлек исходники, но для этого действительно нужны файлы пакетов, чтобы быть там физически.
Дерексон
7

Вы все еще можете использовать Git PPA для Ubuntu Precise, сказав apt собирать из последнего найденного там источника. Распределения достаточно похожи, чтобы все работало нормально.

Я успешно использовал его на Raspbian (который основан на wheezy), чтобы получить пакеты для armhf, но он должен работать для любой архитектуры.

Сначала добавьте ключ GPG для PPA:

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

Добавьте URL для исходных пакетов в apt:

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

Обновить апт:

apt-get update

Установите зависимости сборки:

apt-get build-dep git

Скачайте и соберите git из исходного кода. Возможно, вы захотите сделать это временным каталогом, так как процесс сборки создает некоторую путаницу:

apt-get -b source git

Установите только что собранный пакет и очистите его (git-core больше не нужен):

dpkg -i git_*.deb git-man_*.deb
dpkg -P git-core
emning
источник
7

Если вы хотите обновить определенный пакет в Debian 7 (Wheezy), у вас есть возможность использовать backports, просто добавив в ваш /etc/apt/sources.list следующие строки:

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

Затем для установки / обновления git выполните команды:

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

Вы также можете настроить backports в отдельном файле в /etc/apt/sources.list.d/. Я особенно предпочитаю использовать файл /etc/apt/sources.list.d/backports.list .

ramsvidor
источник