Debian 7'de en son git'e nasıl yükseltilir?


14

Git bana debian 7 üzerinde apt-get yoluyla git yükledim:

# git --version
git version 1.7.10.4

Git'in en son sürümüne geçmek istiyorum. Denedim:

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

Ancak bu aşağıdaki hataları verir:

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

Ayrıca bu kılavuzu takip etmeye çalıştım:

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

ama hala en son git, herhangi bir öneri alamıyorum?


1
Neden kaynaktan derlemiyorsunuz (INSTALL belgesinde bu konuda bazı yardımlar var, eğer yeniyseniz)?
nerdwaller

Launchpad kaynağı bozulursa arşivi doğrudan got web sitesi için indiririm.
Ramhound

2
Gerçekten ihtiyacın var mı? Çoğu durumda, daha yeni bir sürüm yüklemek sorun yaratmaya değmez. Yeni sürümde ihtiyacınız olan belirli bir özellik var mı? Hangi sürüme sahipsiniz ve hangisini yüklemek istiyorsunuz? Her neyse, Debian'la PPA'ları kullanamazsınız , bunlar bir Ubuntu şeyidir.
terdon

Yanıtlar:


12

Güncelleme 2016-07-27: Git 1.9.1 için hışıltılı bir backport mevcut . Daha yeni bir sürüm yüklemek veya Jessie için talimatlar hala geçerlidir.


Bir backport paketinin daha yeni bir sürümü mevcut değilse, iki seçeneğiniz vardır:

  1. Paket koruyuculardan bir backport hazırlamalarını isteyin. Çalışması garanti edilmez, ancak bazı koruyucular backport yapma konusunda olumludur, bu yüzden denemeliyim.

    Bakıcıların e-postalarını orada bulabilirsiniz .

  2. Kaynaklardan kendiniz oluşturun. Bu iki şekilde yapılabilir:

    • Kaynak tarball'dan "olduğu gibi" oluşturun. Bu rotayı seçerseniz Git'in derleme sistemini, altındaki her şeyi veya bunun gibi bir şeyi yükleyecek şekilde yapılandırdığınızdan emin olun , aksi takdirde yüklediğinizi kaldıran harika bir PITA'ya sahip olursunuz.~/git/opt/git

      Sorun, yazılımın tüm dosya sistemine yayılarak geleneksel Unix yolunun mantıklı olması, ancak yalnızca hangi dosyanın hangi pakete ve tam tersine ait olduğunu bilen bir çeşit kayıt defteri ve Debian gibi paketleme sistemleri olduğunda tam olarak bunu yap. Kaynaklardan oluşturulmuş bir paketin "normal" kurulumunu yaparsanız, çoğu durumda bu yazılım parçasını daha sonra kaldırmanın bir yolu olmayacaktır ( checkinstallbunun yerine kullanmaktan çok uzak make install, ama bu gerçekten son çare). Buna karşılık, bir kaynak paketini her şeyi tek bir dizine yüklemek için yapılandırırsanız, yazılımı çalıştırmak için küçük zorluklarla karşılaşırsınız ("ikili" dizinleri sizin üzerinizde olmaz $PATH), daha sonra kaldırılması zahmetsiz olacaktır - bir tek rm -rf /path/to/that/dir.

    • Kendinizi backporting yapın. Bu daha kapsayıcıdır, ancak basit durumlarda sadece IMO denemeye değer olabilir.

      Temelde şu şekilde gidersiniz ( .dscdosyanın bağlantısı kararsız olarak paketin sayfasından alınır ):

      # 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
      

      Çalıştırarak tüm yapı bağımlılıklarına sahip olup olmadığınızı kontrol edin:

      $ dpkg-checkbuilddeps
      

      Ve aracın eksik olduğunu söylediği her şeyi yükleyin. Bazen bir paket, geri döndürdüğünüz dağıtımda bulunamayacak kadar yeni bir şeyin sürümüne başvurabilir; bu durumda, böyle bir paketin debian/controldosyadaki sürümünü aldatmaya ve düzeltmeye çalışmak uygundur .

      Şimdi oluşturulacak paketlerin sürümünü düzeltin. Bunu başarmanın en iyi yolu, bir aracı doğru şeyi yapmaktır:

      $ dch --bpo
      

      debian/changelogDosyaya bir giriş ekler ve denetlemek için seçtiğiniz metin düzenleyicinizi açar. Sadece editörü kapatın - oluşturulacak paketlerin sürümü bu dosyanın üst girişinden alınır.

      Şimdi aslına bakalım:

      $ dpkg-buildpackage -uc -us -b
      

      Şanslıysanız, bu noktada kullanarak yükleyebileceğiniz bir sürü parlak yeni Git .debpaketine ..sahip olacaksınız dpkg -i <packagename> ....

      ( debuild cleanYapılmış kabuktan kurtulmak veya gitdizini tamamen kaldırmak için çalıştırın . Çalıştırdıktan sonra yüklediğiniz her şeyi kaldırmak da isteyebilirsiniz dpkg-checkbuilddep.)

      Ne yazık ki, bina herhangi bir nedenden dolayı başarısız olursa, düzeltmek için bazı bilgiler gerekir, ancak bu bu tartışmanın kapsamı dışındadır.


@Derseckson, düzenleme önerileriniz için teşekkürler - Teşekkür ederim! Ama neden dgetgerekli olmadığını açıklayabilir misiniz ? Tüm mesele size kaynak paketini oluşturan tüm dosyaları getirmektir , böylece paketini açmak, değiştirmek ve oluşturmak için bir şeyleriniz olur. Sadece tek bir .dscdosyayı getirmek tam olarak bunu yapar, ancak kaynak ve debianization tarballs eksik olacaktır.
kostix

Oh, benim hatam. Yalnızca git_2.1.4-2.1.dsc dosyası daha sonra açıkça argüman olarak kullanıldığından komut dizisi beni kandırdı. Ben dpkg-kaynak kaynakları getirmişti düşündüm, ama gerçekten paket dosyaları fiziksel olarak orada olmasını gerektirir.
Dereckson

7

Hala orada bulduğu en son kaynaktan inşa etmesini söyleyerek Ubuntu Precise için Git PPA'yı kullanabilirsiniz. Dağılımlar, bunun iyi çalışması için yeterince benzerdir.

Ben armhf için paketleri almak için Raspbian (ki wheezy dayalı) başarı ile kullandım, ama herhangi bir mimari için çalışması gerekir.

İlk önce PPA için GPG anahtarını ekleyin:

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

Kaynak paketlerin URL'sini apt öğesine ekleyin:

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

Güncelleme uygun:

apt-get update

Derleme bağımlılıklarını yükleyin:

apt-get build-dep git

Git'i kaynaktan indirin ve oluşturun. Bu işlem geçici bir dizin yapmak isteyebilirsiniz, çünkü derleme işlemi bir parça hamilelik yaratır:

apt-get -b source git

Yeni oluşturduğunuz paketi temizleyin ve temizleyin (git-core artık gerekli değildir):

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

7

Debian 7'de (Wheezy) belirli bir paketi yükseltmek istiyorsanız, sadece /etc/apt/sources.listinize aşağıdaki satırları ekleyerek backport kullanma seçeneğiniz vardır :

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

Ardından git'i yüklemek / yükseltmek için komutları çalıştırın:

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

Ayrıca backport'ları /etc/apt/sources.list.d/ içinde ayrı bir dosyada yapılandırabilirsiniz. Özellikle /etc/apt/sources.list.d/backports.list dosyasını kullanmayı tercih ederim .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.