Bagaimana cara meningkatkan ke git terbaru pada debian 7?

14

Saya telah menginstal git melalui apt-get on debian 7 yang memberi saya:

# git --version
git version 1.7.10.4

Saya ingin ugrade ke git versi terbaru. Saya telah mencoba:

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

Tapi itu memberikan kesalahan berikut:

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

Saya juga mencoba mengikuti panduan ini:

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

tapi saya masih tidak bisa mendapatkan git terbaru, ada saran?

u123
sumber
1
Mengapa tidak mengkompilasi dari sumber (dokumen INSTALL memiliki bantuan tentang itu, jika Anda baru mengenalnya)?
nerdwaller
Saya akan mengunduh arsip langsung untuk situs web yang didapat jika sumber launchpad rusak.
Ramhound
2
Apakah Anda benar-benar perlu? Dalam kebanyakan kasus, menginstal versi yang lebih baru tidak sebanding dengan masalahnya. Apakah ada fitur khusus dalam versi baru yang Anda butuhkan? Versi mana yang Anda miliki dan yang mana yang ingin Anda instal? Bagaimanapun, Anda tidak dapat menggunakan PPA dengan Debian , itu adalah hal Ubuntu.
terdon

Jawaban:

12

Diperbarui 2016-07-27: wheezy -backports sekarang tersedia untuk Git 1.9.1. Instruksi masih berlaku untuk menginstal versi yang lebih baru atau untuk Jessie.


Ketika versi yang lebih baru dari paket backport tidak tersedia, Anda memiliki dua opsi:

  1. Minta pengelola paket untuk menyiapkan backport. Ini tidak dijamin berhasil, tetapi beberapa pengelola positif membuat backport, jadi saya coba saja.

    Email pengelola dapat ditemukan di sana .

  2. Bangun sendiri dari sumbernya. Ini bisa dilakukan dengan dua cara:

    • Bangun "apa adanya" dari tarball sumber. Jika Anda memilih rute ini, pastikan untuk mengkonfigurasi sistem build Git untuk menginstal semuanya di bawah ~/gitatau /opt/gitatau sesuatu seperti ini jika tidak nanti Anda akan memiliki PITA yang bagus menghapus apa yang Anda instal.

      Masalahnya adalah bahwa cara Unix konvensional menginstal perangkat lunak dengan menyebarkannya di seluruh sistem file masuk akal tetapi hanya ketika Anda memiliki semacam registri yang "tahu" file mana milik paket dan sebaliknya, dan sistem pengemasan seperti Debian's lakukan persis ini. Jika Anda melakukan "normal" install dari paket yang dibangun dari sumber, Anda dalam kebanyakan kasus tidak akan memiliki cara untuk uninstall software ini kemudian (singkat menggunakan checkinstallbukan make install, tapi ini benar-benar adalah pilihan terakhir). Sebaliknya, jika Anda mengonfigurasi paket sumber untuk menginstal semuanya di bawah satu direktori, Anda akan mengalami sedikit kesulitan menjalankan perangkat lunak (direktori "biner" tidak akan ada di Anda $PATH), sebagai gantinya menguninstall itu nanti akan menjadi no-brainer - satu rm -rf /path/to/that/dir.

    • Lakukan backport sendiri. Ini lebih terlibat tetapi dalam kasus-kasus sederhana ini mungkin hanya berfungsi sehingga IMO layak untuk dicoba.

      Pada dasarnya Anda pergi seperti ini (tautan ke .dscfile diambil dari halaman paket tidak stabil ):

      # 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
      

      Periksa apakah semua dependensi build Anda puas dengan menjalankan:

      $ dpkg-checkbuilddeps
      

      Dan instal semua yang dikatakan alat saat ini tidak ada. Terkadang sebuah paket mungkin merujuk ke versi sesuatu yang terlalu segar untuk tersedia di distro yang Anda backport; dalam hal ini tidak apa-apa untuk mencoba menipu dan memperbaiki versi paket seperti itu di debian/controlfile.

      Sekarang perbaiki versi paket yang akan dibangun. Cara terbaik untuk mencapai ini adalah memiliki alat melakukan hal yang benar:

      $ dch --bpo
      

      Ini akan menambah entri ke debian/changelogfile dan membuka editor teks pilihan Anda untuk mengawasinya. Tutup saja editor - versi untuk paket yang akan dibuat diambil dari entri teratas dalam file ini.

      Sekarang mari kita benar-benar berusaha membangun:

      $ dpkg-buildpackage -uc -us -b
      

      Jika Anda beruntung, pada titik ini Anda akan memiliki banyak .debpaket Git mengkilap .., yang dapat Anda instal menggunakan dpkg -i <packagename> ....

      (Jalankan debuild cleanuntuk menyingkirkan crud yang dibangun atau hanya menghapus gitdirektori sepenuhnya. Anda mungkin juga ingin menghapus apa pun yang Anda instal setelah menjalankan dpkg-checkbuilddep.)

      Sayangnya, jika bangunan gagal karena suatu alasan, dibutuhkan pengetahuan tertentu untuk berusaha memperbaikinya tetapi ini di luar cakupan diskusi ini.

Kostix
sumber
@ Dereckson, terima kasih atas saran edit Anda - Saya menghargainya! Tetapi bisakah Anda menjelaskan mengapa dgettidak dibutuhkan? Intinya adalah untuk membawa Anda semua file yang merupakan paket sumber sehingga Anda benar-benar memiliki sesuatu untuk membongkar, mengubah dan membangun. Hanya mengambil .dscfile tunggal akan melakukan hal itu tetapi tarball sumber dan debianisasi akan hilang.
kostix
Oh, salahku. Urutan perintah menipu saya, karena hanya file git_2.1.4-2.1.dsc yang digunakan kemudian secara eksplisit sebagai argumen. Saya pikir dpkg-source mengambil sumbernya, tetapi memang membutuhkan paket file secara fisik ada di sana.
Dereckson
7

Anda masih dapat menggunakan Git PPA untuk Ubuntu Precise dengan meminta apt untuk membangun dari sumber terbaru yang ditemukan di sana. Distribusi cukup mirip sehingga ini akan berfungsi dengan baik.

Saya menggunakannya dengan sukses pada Raspbian (yang didasarkan pada wheezy) untuk mendapatkan paket untuk armhf, tetapi seharusnya bisa digunakan untuk arsitektur apa pun.

Pertama-tama tambahkan kunci GPG untuk PPA:

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

Tambahkan URL untuk paket sumber ke apt:

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

Perbarui apt:

apt-get update

Instal dependensi build:

apt-get build-dep git

Unduh dan bangun git dari sumber. Anda mungkin ingin melakukan ini sebagai direktori sementara, karena proses build membuat sedikit kesalahan:

apt-get -b source git

Instal paket yang baru saja Anda bangun dan bersihkan (git-core tidak lagi diperlukan):

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

Jika Anda ingin memutakhirkan paket tertentu di Debian 7 (Wheezy), Anda memiliki opsi untuk menggunakan backports dengan hanya menambahkan ke /etc/apt/sources.list baris berikut:

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

Kemudian, untuk menginstal / memutakhirkan git , jalankan perintah:

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

Anda juga dapat mengonfigurasi backports dalam file terpisah di /etc/apt/sources.list.d/. Saya khususnya lebih suka menggunakan file /etc/apt/sources.list.d/backports.list .

ramsvidor
sumber