Como atualizar para o último git no debian 7?

14

Eu instalei o git através do apt-get no debian 7, o que me dá:

# git --version
git version 1.7.10.4

Gostaria de atualizar para a versão mais recente do git. Eu tentei:

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

Mas isso dá os seguintes erros:

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

Eu também tentei seguir este guia:

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

mas ainda não consigo obter o último git, alguma sugestão?

u123
fonte
1
Por que não compilar a partir do código-fonte (o documento INSTALAR tem alguma ajuda nisso, se você é novo nele)?
Nerdwaller 12/09
Eu faria o download do arquivo diretamente para o site obtido se a fonte da barra de ativação estiver quebrada.
Ramhound 12/09
2
Você realmente precisa? Na maioria dos casos, a instalação de uma versão mais recente não vale a pena. Existe um recurso específico na nova versão que você precisa? Qual versão você possui e qual você deseja instalar? De qualquer forma, você não pode usar PPAs com o Debian , eles são uma coisa do Ubuntu.
terdon 12/09

Respostas:

12

Atualizado 27/07/2016: um wheezy -backports está agora disponível para o Git 1.9.1. As instruções ainda se aplicam para instalar uma versão mais recente ou para Jessie.


Quando uma versão mais recente de um pacote de backport não está disponível, você tem duas opções:

  1. Peça aos mantenedores do pacote que preparem um backport. Não é garantido que funcione, mas alguns mantenedores são positivos em criar backports, então eu tentaria.

    Os e-mails dos mantenedores podem ser encontrados .

  2. Crie você mesmo a partir das fontes. Isso pode ser feito de duas maneiras:

    • Crie "como está" a partir do tarball de origem. Se você escolher esse caminho, certifique-se de configurar o sistema de compilação do Git para instalar tudo sob ~/gitou /opt/gitou algo parecido com isso de outra forma mais tarde você vai ter um grande PITA removendo o que você instalou.

      O problema é que a maneira convencional do Unix de instalar software, espalhando-o por todo o sistema de arquivos, é sensata, mas somente quando você tem algum tipo de registro que "sabe" qual arquivo pertence a qual pacote e vice-versa e sistemas de empacotamento como o Debian faça exatamente isso. Se você instalar "normalmente" um pacote criado a partir das fontes, na maioria dos casos não terá como desinstalar esse software mais tarde (sem usar em checkinstallvez de make install, mas esse é realmente o último recurso). Por outro lado, se você configurar um pacote de origem para instalar tudo em um único diretório, terá pequenas dificuldades em executar o software (seus diretórios "binários" não estarão no seu $PATH), em troca, desinstalá-lo posteriormente será um acéfalo - um único rm -rf /path/to/that/dir.

    • Faça backporting você mesmo. Isso está mais envolvido, mas, em casos simples, pode funcionar tão IMO que vale a pena tentar.

      Basicamente, você segue assim (um link para o .dscarquivo é retirado da página do pacote em instável ):

      # 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
      

      Verifique se você tem todas as dependências de construção satisfeitas executando:

      $ dpkg-checkbuilddeps
      

      E instale tudo o que a ferramenta diz que está faltando no momento. Às vezes, um pacote pode se referir a uma versão de algo novo demais para estar disponível na distribuição para a qual você está suportando; Nesse caso, não há problema em tentar trapacear e corrigir a versão desse pacote no debian/controlarquivo.

      Agora conserte a versão dos pacotes a serem construídos. A melhor maneira de conseguir isso é fazer com que uma ferramenta faça a coisa certa:

      $ dch --bpo
      

      Ele adicionará uma entrada ao debian/changelogarquivo e abrirá o editor de texto de sua escolha para supervisioná-lo. Apenas feche o editor - a versão dos pacotes a serem construídos é retirada da entrada superior deste arquivo.

      Agora vamos realmente tentar construir:

      $ dpkg-buildpackage -uc -us -b
      

      Se você tiver sorte, nesse momento você terá vários .debpacotes brilhantes e novos do Git .., que você pode instalar usando dpkg -i <packagename> ....

      (Execute debuild cleanpara se livrar do crud construído ou apenas remova o gitdiretório completamente. Você também pode remover o que instalou após a execução dpkg-checkbuilddep.)

      Infelizmente, se a construção falhar por algum motivo, é necessário algum conhecimento para tentar corrigir, mas isso está fora do escopo desta discussão.

kostix
fonte
@ Dereckson, obrigado pela sua sugestão de edição - agradeço! Mas você pode explicar por que dgetnão é necessário? Seu objetivo é trazer a você todos os arquivos que constituem o pacote fonte, para que você realmente tenha algo para descompactar, ajustar e construir. A busca apenas do .dscarquivo único fará exatamente isso, mas os tarballs de origem e de debianização estarão ausentes.
Kostix 27/07/16
Oh, minha culpa. A sequência de comando me enganou, pois apenas o arquivo git_2.1.4-2.1.dsc é usado posteriormente explicitamente como argumento. Eu pensei que o dpkg-source buscava os fontes, mas realmente exige que os arquivos dos pacotes estejam fisicamente lá.
Dereckson 27/07
7

Você ainda pode usar o Git PPA para Ubuntu Precise dizendo ao apt para construir a partir da fonte mais recente encontrada lá. As distribuições são semelhantes o suficiente para que isso funcione perfeitamente.

Usei-o com sucesso no Raspbian (que é baseado no wheezy) para obter pacotes para o armhf, mas deve funcionar para qualquer arquitetura.

Primeiro adicione a chave GPG para o PPA:

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

Adicione a URL para os pacotes de origem ao apt:

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

Atualize o apt:

apt-get update

Instale dependências de construção:

apt-get build-dep git

Faça o download e construa o git a partir do código-fonte. Você pode querer fazer isso como um diretório temporário, pois o processo de criação cria um pouco de sujeira:

apt-get -b source git

Instale o pacote que você acabou de criar e limpar (o git-core não é mais necessário):

dpkg -i git_*.deb git-man_*.deb
dpkg -P git-core
emning
fonte
7

Se você deseja atualizar um pacote específico no Debian 7 (Wheezy), você tem a opção de usar backports simplesmente adicionando ao seu /etc/apt/sources.list as seguintes linhas:

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

Em seguida, para instalar / atualizar o git , execute os comandos:

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

Você também pode configurar os backports em um arquivo separado em /etc/apt/sources.list.d/. Eu particularmente prefiro usar um arquivo /etc/apt/sources.list.d/backports.list .

ramsvidor
fonte