Czy istnieje polecenie apt, aby pobrać plik deb z repozytoriów do bieżącego katalogu?


46

Często interesują mnie wyzwalacze instalacji (postinst, postrm) lub niektóre części pakietów (jak /usr/sharei /etc). Obecnie uruchamiam następne polecenie, aby pobrać kod źródłowy:

apt-get source [package-name]

Minusem jest to, że plik ten jest często znacznie większy niż pakiet binarny i nie odzwierciedla drzewa instalacji.

W tej chwili pobieram pakiety za pośrednictwem http://packages.ubuntu.com/ :

  1. Szukaj [package-name]
  2. Wybierz pakiet
  3. Kliknij amd64 / i386, aby pobrać
  4. Pobierz aktualny plik

Trwa to dla mnie zbyt długo i jako ktoś, kto naprawdę lubi powłokę, chciałbym zrobić coś takiego jak następne ( wyobrażone ) polecenie:

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

Nie mogłem znaleźć czegoś takiego na stronie podręcznika apt-get . Najbliżej znalazłem --download-onlyprzełącznik, ale umieszcza on pakiet /var/cache/apt/archives(który wymaga uprawnień roota), a nie w bieżącym katalogu.


Różnice na komputerach bez zapisywania plików: ssh debianmachine1 "dpkg --get-selections" | diff - <(dpkg --get-selections)
— Scott Robert Schreckengaust

Możesz użyć debgetz pakietu debian-goodies.
— Shayan

Odpowiedzi:


59

Można użyć downloadsub-dowodzenie apt, apt-getalbo aptitude. Na przykład, jeśli $ PKG jest pakietem, który chcesz, którykolwiek z nich zrobi:

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

Nie wymaga to uprawnień roota. To samo można również oszacować za pomocą apt-geti wget:

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

Spowoduje to jednak pobranie wszystkich pakietów wymaganych do zainstalowania pakietu, dlatego możesz spróbować go ograniczyć:

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

Możesz także wstawić wiersz funkcji do wget, aby móc go używać jako polecenia apt-download z nazwą pakietu jako parametrem:

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

Zwróć uwagę na modyfikacje: $ PKG zostaje zastąpione 1 $, a parametr -c umożliwia kontynuowanie przerwanych pobierania.


1
Doskonale, właśnie tego szukam. Innym powodem, aby zachować umiejętności w moim systemie, drugi przydatna komenda, która nie jest dostarczana przez aptto aptitude changelog $PKG.
— Lekensteyn,

4
Aktualizacja: od Natty (apt wersja 0.8.11 być precyzyjne), przy czym aptitude downloadfunkcja jest dostępna w apttakże: apt-get download $PKG.
— Lekensteyn

słodko, działa pomimo mojego starożytnego apt v0.8.10
— rogerdpack 12.12.2013

wygląda na to, że zrezygnowali z opcji
— --print

Opcja
— --print

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

Uwaga:

Musisz utworzyć folder o nazwie częściowy w folderze docelowym.


Nie brzmi tak źle. Opcje wydają się być opisane przez man apt.conf. Chciałbym uniknąć tworzenia folderu.
— Lekensteyn,

Jestem tylko ciekawy, dlaczego miałbyś unikać tworzenia folderu?
— mount.cifs

Nie muszę przechowywać paczki na zawsze i unikanie tworzenia folderu również oszczędza czas.
— Lekensteyn,

Chciałem tylko zauważyć, że to rozwiązanie będzie również nalegało na usunięcie pakietu (np. Jeśli zmienisz wersję /etc/apt/sources.listna nowszą, z zamiarem pobrania późniejszych pakietów) - w takim przypadku wgetpowyższa metoda może być bardziej przydatna, jeśli nie nie chcę niczego usuwać ...
— sdaau

5

W Ubuntu 14.04 ( aptwersja pakietu 1.0.1ubuntu2, jak sądzę), apt-getzawiera downloadpolecenie pobrania danego pakietu jako .debw bieżącym katalogu.

Załóżmy na przykład, że chcemy pobrać menedżera plików Ranger:

$ apt-get download ranger

Prowadzi do:

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

To jest doskonałe. Wszystkie inne rozwiązania, które wypróbowałem, nie działają, jeśli apt installnie spełniają wszystkich wymagań dotyczących zależności. Chciałem tylko plik .deb do majsterkowania!
— Raziel

3

Jeśli chcesz pobrać wszystkie pakiety deb z listy, możesz to zrobić:

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

Wystarczy umieścić jedną nazwę pakietu w wierszu. Jak w pliku wymagania.txt. Na przykład z takimi treściami:

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

Mam nadzieję że to pomoże. ;)


2

sudo apt-get install devscripts

dget [package-name]


To nie daje odpowiedzi na pytanie. Aby skrytykować lub poprosić autora o wyjaśnienia, zostaw komentarz pod postem.
— s3lph

Jak nie zapewnia odpowiedzi? Spowoduje to pobranie deb z archiwum do bieżącego katalogu. Czy to nie jest dokładnie to pytanie?
— Michael Terry

Przydaje się nieco więcej szczegółów. Chociaż technicznie kwalifikuje się to jako odpowiedź, nadal możesz chcieć podać więcej niż dwa polecenia.
— s3lph 14.04.15

:: wzruszenie ramionami :: W przeciwieństwie do innych odpowiedzi tutaj, ta nie ma żadnych zastrzeżeń ani zastrzeżeń. To prosta odpowiedź na proste pytanie.
— Michael Terry

0

/var/cache/apt/archivesjest czytelny na całym świecie. Następnie apt-get -dpo prostu wypakuj go stamtąd do katalogu domowego. Uruchom dpkg -e /var/cache/apt/archives/foo_version.deb foow swoim katalogu domowym, a pliki kontrolne zostaną zrzucone foo/.


Myślę, że problem z tą metodą polega na tym, że pobieranie nadal wymaga uprawnień administratora. Głupotą jest przechodzenie do takich ekstremów tylko po to, aby pobrać plik do katalogu domowego.
— ændrük

Otwarcie .debs nie stanowi problemu, pobieranie jest. Może to być błąd lub nie, ale na pakiety w / var / cache / apt / archives` również wpływa umask. Ustawiłem umask na 027 i dlatego /var/cache/apt/archivesnie mogę odczytać pakietów w . Ponieważ muszę tylko zbadać zawartość pakietu, muszę go tylko raz pobrać: do /tmp.
— Lekensteyn,

0

Możesz użyć polecenia debgetzawartego w pakiecie debian-goodies.

Zainstaluj z:

sudo apt install debian-goodies

Pobierz pakiety za pomocą:

debget <package_name>

Na przykład:

debget debian-goodies

Które pobiorą debian-goodies_0.79_all.debw twoim bieżącym katalogu (zrobić, pwdaby wydrukować bieżący katalog roboczy).


debian-goodieszawiera wiele przydatnych poleceń, patrz także: askubuntu.com/a/1170001/777279
— Shayan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.