Chcę skonfigurować nową maszynę wirtualną z określonymi pakietami (nazwa i wersja), które są dostarczone.
Na przykład apache2 w wersji 2.2.20-1ubuntu1
ze wszystkimi zależnościami. Nawet jeśli na serwerach znajduje się nowa wersja tego pakietu, należy go zainstalować.
Rozwiązanie musi działać / skalować z wieloma (n) „konfiguracjami”. Inna maszyna wirtualna może wymagać starszej wersji apache2.
Obecnie znam niektóre możliwości instalowania dokładnych pakietów, ale nie skaluję tak dobrze:
- Skopiuj wszystkie wymagane
*.deb
ręcznie do każdej maszyny wirtualnej i wprowadź:dpkg -i
... -> Może działać, ale jest to bardzo podatne na błędy. (Skrypty ręczne itp.) - Utwórz i używaj nowego repozytorium Ubuntu dla każdej konfiguracji. -> Nie działa, ponieważ potrzebowałbym n repozytoriów.
- Skonfiguruj maszynę raz i skopiuj maszynę wirtualną / utwórz migawkę. -> Nie działa, ponieważ musiałbym przechowywać n maszyn wirtualnych.
Mój problem można nazwać zarządzaniem łatkami, ale nie chcę aktualizować pakietów do bieżącej wersji. Moim celem jest instalacja starych pakietów.
źródło
apt
”Aby sprawdzić, które wersje są dostępne, możesz sprawdzić za pomocą:
Jeśli nie zadziała, rozważ uruchomienie
sudo apt-get update
przed aktualizacją listy pakietów.Następnie skopiuj wersję lub użyj następującej składni:
Aby sprawdzić, którą wersję zainstalowałeś, uruchom:
źródło
=2.2\*
opcji jako sposobu użycia symbolu wieloznacznego do wyboru dowolnej dostępnej subversion. Właśnie to chciałem wiedzieć, ale nie wiedziałem, jak zapytać :)dpkg -l <packageName>
numer wersji jest czasami obcinany. Aby tego uniknąć, użyjCOLUMNS=100 dpkg -l <packageName>
N: Unable to locate package ^apache2
sudo apt-get update
pierwszy. Upewnij się, że masz skonfigurowane odpowiednie źródła Apt.Rozbuduję wcześniejsze odpowiedzi innymi przydatnymi poleceniami wersjonowania w
apt
rodzinie. Aby zobaczyć, które wersje są dostępne, uruchomapt-cache policy
:Następnie, jak wspomniano w innym miejscu, zainstaluj konkretną wersję za pomocą
apt-get
:Teraz możesz zobaczyć, którą wersję zainstalowałeś, uruchamiając
apt-cache policy
ponownie:Jeśli nie chcesz, aby nowsze aktualizacje były instalowane na aktualizacjach, przypnij pakiet za pomocą
apt-mark
:Powiedzmy, że nowa wersja apache2 została dodana do indeksu pakietu i twój komputer jest zsynchronizowany
apt-get update
. Zobaczysz to przy następnym uruchomieniuapt-get upgrade
:źródło
Praktycznie rzecz biorąc, nie jest to możliwe, ponieważ stare wersje nie są przechowywane w archiwum, więc jeśli nie masz gdzieś kopii starej wersji, nie możesz jej zainstalować. Powinieneś się zastanawiać, dlaczego chcesz zainstalować starszą wersję. W wersji stabilnej głównym powodem wydania nowej wersji jest usunięcie luki w zabezpieczeniach, a nie chcesz, aby serwer był podatny na zagrożenia?
źródło
Jak wyjaśnia psusi, stare wersje nie są przechowywane w repozytorium ubuntu, ale najwyraźniej nadal można je znaleźć na starterze. Idź do (zamień zaufany i amd64 na swoją wersję i architekturę Ubuntu):
https://launchpad.net/ubuntu/trusty/amd64/apache2
i wybierz żądaną wersję. Następnie pobierasz deb jako plik i instalujesz za pomocą:
Ponownie zamień nazwę pliku na swój plik. To staje się nużące, jeśli musisz obniżyć liczbę pakietów, ale lepiej niż nic, jeśli jesteś zdesperowany.
źródło