Depolardan mevcut dizine bir deb dosyası indirmek için apt komutu var mı?


46

Kurulum tetikleyicileri (postinst, postrm) veya paketlerin belirli kısımları ( /usr/shareve benzeri /etc) ile sık sık ilgilenirim . Şu anda, kaynak kodu almak için bir sonraki komutu çalıştırıyorum:

apt-get source [package-name]

Olumsuz tarafı, bu dosya genellikle ikili paketten çok daha büyüktür ve kurulum ağacını yansıtmaz.

Şu anda paketleri http://packages.ubuntu.com/ adresinden indiriyorum :

  1. Aramak [package-name]
  2. Paketi seç
  3. İndirmek için amd64 / i386 üzerine tıklayın.
  4. Gerçek dosyayı indirin

Bu benim için çok uzun sürüyor ve kabuğu çok seven biri olarak, bir sonraki ( hayali ) komut gibi bir şey yapmak istiyorum :

apt-get get-deb-file [package-name]

Apt-get manual sayfasında böyle bir şey bulamadım . Bulduğum en yakın --download-onlyanahtar, ancak bu paketi /var/cache/apt/archivesgeçerli dizine değil (kök izinleri gerektirir) içeriyor.


Dosya kaydetmeden makinelerde farklılıklar: ssh debianmachine1 "dpkg --get-choices" | diff - <(dpkg --get-seçimleri)
— Scott Robert Schreckengaust

debgetPaketten kullanabilirsiniz debian-goodies.
— Shayan

Yanıtlar:


59

Sen kullanabilirsiniz downloadalt komutu apt, apt-getveya aptitude. Örneğin, $ PKG istediğiniz paketse , bunlardan herhangi biri:

apt-get download $PKG
apt download $PKG
aptitude download $PKG

Bu kök ayrıcalıkları gerektirmez. Aynı apt-getve kullanarak aşağıdakiler de kullanılabilir wget:

wget $(apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2)

Bununla birlikte, bu, paketi yüklemek için gereken tüm paketleri getirir; böylece, onu sınırlandırmayı deneyebilirsiniz:

wget $(apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2 | grep "/${PKG}_")

Bir wget satırını, bir fonksiyon olarak paket ismiyle apt-download komutu olarak kullanabilmek için bir parametre olarak da kullanabilirsiniz:

function apt-download { wget -c $(apt-get install --reinstall --print-uris -qq $1 | cut -d"'" -f2); }

Değişikliklere dikkat edin: $ PKG $ 1 ile değiştirildi ve -c parametresi kesintisiz indirmeye devam etmeyi sağlıyor.


1
Mükemmel, aradığım şey bu. Başka neden sistemimde yetenek tutmak, tarafından sağlanmıyorsa diğer yararlı komut aptolduğunu aptitude changelog $PKG.
— Lekensteyn

4
Güncelleme: Natty dan (apt versiyonu 0.8.11 kesin olarak), aptitude downloadözellik mevcuttur aptyanı: apt-get download $PKG.
— Lekensteyn

tatlı, benim eski apt v0.8.10 rağmen çalışır
— rogerdpack

görünüşte --print-urls seçeneğiyle
— yaptılar

Print-URL'ler seçenek hala orada
— kumarharsh

8
sudo apt-get -o dir::cache::archives="/path/to/folder/" -d install package

Not:

Hedef klasörde kısmi adlı bir klasör oluşturmanız gerekir.


O kadar da kötü gelmiyor. Seçenekler tarafından tarif edilmiş gibi görünüyor man apt.conf. Klasörün oluşturulmasından kaçınmak istiyorum.
— Lekensteyn

Sadece merak ediyorum, neden klasörü oluşturmaktan kaçındın?
— mount.cif, 16:11

Paketi sonsuza kadar saklamama gerek yok ve klasör oluşturmaktan kaçınmak da zaman kazandırıyor.
— Lekensteyn

Sadece bu çözümün paketin kaldırılması konusunda da ısrar edeceğini belirtmek istedim (örneğin /etc/apt/sources.list, daha sonraki paketleri indirmek niyetiyle sürümü yeni bir sürümle değiştirirseniz ) - böyle bir durumda, wgetyukarıdaki yöntem daha yararlı olabilir. hiçbir şeyi kaldırmak istemiyorum ...
— sdaau

5

Ubuntu 14.04'te ( aptpaket sürümü 1.0.1ubuntu2, inanıyorum), verilen paketi mevcut dizinde olduğu gibi indirme komutunu apt-getiçerir .download.deb

Örneğin, dosya yöneticisini indirmek istediğimizi varsayalım Ranger:

$ apt-get download ranger

Sonuçlar:

$ ls . | grep ranger
ranger_1.6.0-1_all.deb

Bu harika. Çalıştığım diğer tüm çözümler apt install, tüm bağımlılık gereksinimlerini karşılayamıyorsa işe yaramaz . Ben sadece incelemek için .deb dosyasını istedim!
— Raziel

3

Tüm deb paketlerini bir listeden indirmek istiyorsanız, bunu yapabilirsiniz:

cat path/to/text/file.txt | xargs apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2 | xargs wget

Her satıra bir paket adı girin. Needs.txt dosyasındaki gibi. Örneğin, bunun gibi içeriklerle:

apache2-mpm-event
curl
dmidecode
ethtool
libapache2-mod-wsgi
libapache2-mod-python

Bu yardımcı olur umarım. ;)


2

sudo apt-get install devscripts

dget [package-name]


Bu soruya bir cevap vermiyor. Bir yazarın açıklamasını eleştirmek veya talep etmek için yazının altına bir yorum bırakın.
— s3lph

Nasıl bir cevap vermiyor? Bu, arşivden geçerli dizine bir deb indirir. Sorunun tam olarak bu değil miydi?
— Michael Terry,

Biraz daha fazla ayrıntı faydalı olabilir. Bu teknik olarak bir cevap olarak nitelendirilse de, hala ikiden fazla komut vermek isteyebilirsiniz.
— s3lph

:: shrug :: Buradaki diğer cevapların aksine, bunun hiçbir şartı ya da uyarısı yoktur. Basit bir soruya basit bir cevap.
— Michael Terry

0

/var/cache/apt/archivesdünya okunabilir. Sonra apt-get -d, oradan ana dizininize çıkartın. dpkg -e /var/cache/apt/archives/foo_version.deb fooAna dizininizdeyken çalıştırın ve kontrol dosyaları içine atılacak foo/.


Bence bu yöntemle ilgili sorun indirme işleminin hala idari ayrıcalıklar gerektiriyor. Sadece ev dizinine dosya almak için bu uç noktalara gitmek aptalca görünüyor.
— ændrük

.Debs'i açmak sorun değil, indirmektir. Hata olabilir veya olmayabilir, ancak / var / cache / apt / archives `içindeki paketler de umask'tan etkilenir. 027 umask ayarladım ve bu nedenle, içindeki paketler /var/cache/apt/archivesbenim tarafımdan okunamıyor. Sadece paket içeriğini incelemeye ihtiyaç duyduğum için bir kere indirmem gerekiyor: to /tmp.
— Lekensteyn

0

debgetPakete dahil olan komutu kullanabilirsiniz debian-goodies.

Şununla yükleyin:

sudo apt install debian-goodies

Paketleri kullanarak indir:

debget <package_name>

Örneğin:

debget debian-goodies

debian-goodies_0.79_all.debMevcut dizininizde hangi indirilecek ( pwdmevcut çalışma dizininizi yazdırmak için yapın).


debian-goodiesbirçok yararlı komutla birlikte gelir, ayrıca bkz: askubuntu.com/a/1170001/777279
— Shayan
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.