Muszę użyć, apt-get download
aby pobrać określoną wersję .deb
pliku, ale niekoniecznie dokładną wersję. .deb
zależności mogą używać wyrażeń takich jak >=0.3.0
i chciałbym apt-get download
pobrać tę samą wersję, która byłaby pobrana przy użyciu takiej zależności.
Podsumowując, chcę pracować:
$ apt-get download package='>=0.3.0'
Masz pomysł, jak mogę uzyskać tę funkcjonalność?
Odpowiedzi:
Możesz to zrobić, najpierw sprawdzając, która wersja jest najnowszą wersją, która jest większa lub równa pożądanej wersji minimalnej. Następnie pobierasz dokładnie tę wersję za pomocą
apt-get download
. Oto skrypt, który to robi (jest trochę brzydki, ale masz pomysł):Musisz dodać sprawdzanie błędów na wypadek, gdyby pakiet nie istniał itp., Ale zawiera podstawowe rozwiązanie. Przyjąłem również, że chcesz mieć najnowszą dostępną paczkę, która jest przynajmniej pewną wersją. Jeśli zamiast tego chciałbyś, aby najstarszy dostępny pakiet, który jest co najmniej pewną wersją, musisz dostosować skrypt, aby przestał wyszukiwać, gdy tylko znajdzie coś, co najmniej żądaną wersję.
źródło
Ponieważ chcesz dokładnie tego, co
apt-get install
by Ci dało, warto uruchomićapt-get install
w trybie „tylko do pobrania”, korzystając z niestandardowego katalogu archiwów:Jak zmienić katalog archiwów? To jest opcja konfiguracji:
Można je tymczasowo zmienić za pomocą
--option
parametru:Podsumowując:
To polecenie pobierze (i tylko pobierze, a nie zainstaluje) odpowiednie
.deb
pliki<package>
do/some/cache/dir
. Katalog będzie zawierał.deb
pliki pakietu, jego zależności, plik blokady i katalog „częściowy” (który powinien być pusty). Filtrowanie dokładnie tego.deb
, czego potrzebujesz, powinno być trywialne.źródło
apt-get install
wymaga dostępu administratora.apt-get download
umożliwia także ustawienie docelowego wydania. Czy to nie pomogłoby?Komentarz do nr 1 (nie można używać komentarzy) - dodanie parametru
--print-uris
doapt-get install
nie wymaga uprawnień roota (ale musisz go pobrać sam - najlepiej z wget -i FILE_LIST).źródło
Bez uprawnień SU nadal możesz uruchomić apt-cache i połączyć z filtrowaniem, aby uzyskać te informacje. Użyj czegoś takiego:
W systemie Debian 5:
Na 6 możesz użyć:
Wygląda na to, że apt-cache zmienił zachowanie w kolejności listy między 5 a 6, więc na 6 najnowsza jest ostatnia.
Jednym słowem jest to, że jeśli używasz tego wyjścia, jak mówisz „aby pobrać tę samą wersję, co ta, która zostałaby pobrana przy takiej zależności”, dostępna wersja pakietu może ulec zmianie, jeśli uruchomisz aktualizację apt-get (z su privs oczywiście), lub jeśli zostało to ustawione na automatyczne uruchamianie i dzieje się to między momentem zebrania wersji a uruchomieniem skryptu, który instaluje rzeczy oczekujące, że będzie to wersja.
źródło