Desejo configurar uma nova máquina virtual com alguns pacotes especificados (nome e versão), que são fornecidos.
Por exemplo, apache2 na versão 2.2.20-1ubuntu1
com todas as dependências. Mesmo se houver uma nova versão deste pacote nos servidores, esta deverá ser instalada.
A solução precisa funcionar / escalar com várias (n) "configurações". Outra máquina virtual pode precisar de uma versão mais antiga do apache2.
Atualmente, conheço algumas possibilidades que instalam os pacotes exatos, mas não são tão boas assim:
- Copie
*.deb
manualmente todos os requisitos necessários para todas as máquinas virtuais e digite:dpkg -i
... -> Pode funcionar, mas é propenso a erros. (Scripts manuais etc.) - Crie e use um novo repositório Ubuntu para cada configuração. -> Não funciona porque eu precisaria de n repositórios.
- Configure a máquina uma vez e copie a VM / crie um instantâneo. -> Não funciona porque eu precisaria armazenar n VMs.
Meu problema pode ser rotulado como gerenciamento de patches, mas não quero atualizar meus pacotes para a versão atual. Meu objetivo é instalar pacotes antigos.
fonte
apt
"Para verificar quais versões estão disponíveis, você pode verificar via:
Se não funcionar, considere executar
sudo apt-get update
antes para atualizar a lista de pacotes.Em seguida, copie a versão ou use a seguinte sintaxe:
Para verificar qual versão você instalou, execute:
fonte
=2.2\*
opção como forma de usar um curinga para selecionar qualquer subversão disponível. Isso é o que eu queria saber, mas não sabia como pedir :)dpkg -l <packageName>
, o número da versão às vezes é truncado. Para evitar isso, useCOLUMNS=100 dpkg -l <packageName>
N: Unable to locate package ^apache2
sudo apt-get update
primeiro. Verifique se você tem as fontes adequadas do Apt configuradas.Expandirei as respostas anteriores com outros comandos úteis de controle de versão da
apt
família. Para ver quais versões estão disponíveis, executeapt-cache policy
:Em seguida, como mencionado em outro lugar, instale uma versão específica com
apt-get
:Agora você pode ver qual versão instalou executando
apt-cache policy
novamente:Se você não deseja que versões mais recentes sejam instaladas nas atualizações, fixe o pacote com
apt-mark
:Digamos que uma nova versão do apache2 seja adicionada ao índice do pacote e sua máquina esteja sincronizada
apt-get update
. Você verá isso na próxima execuçãoapt-get upgrade
:fonte
Na prática, isso não é possível porque as versões antigas não são mantidas no arquivo, portanto, a menos que você tenha uma cópia da versão antiga em algum lugar, não poderá instalá-la. Você deve se perguntar por que deseja instalar uma versão mais antiga. Em uma versão estável, o principal motivo para o lançamento de uma nova versão é corrigir uma vulnerabilidade de segurança e você não deseja executar um servidor vulnerável, não é?
fonte
Como psusi explica, as versões antigas não são mantidas no repositório do ubuntu, mas aparentemente você ainda pode encontrá-las na barra de lançamento. Então, você vai (substitua trusty e amd64 pela sua versão e arquitetura do ubuntu):
https://launchpad.net/ubuntu/trusty/amd64/apache2
e selecione a versão que você deseja. Então você baixa o deb como um arquivo e instala com:
Mais uma vez, substitua o nome do arquivo no seu arquivo. Isso fica entediante se você precisar fazer o downgrade de muitos pacotes, mas é melhor que nada se estiver desesperado.
fonte