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/

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

3 ответа3

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
      

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

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

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

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
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 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .