apt-get upgrade será executado na linha de comando, mas não no script cron bash

1

A execução dos seguintes comandos na linha de comando funciona bem

$sudo apt-get update 

$sudo apt-get upgrade  
Reading package lists... Done  
Building dependency tree         
Reading state information... Done  
The following packages will be upgraded:  
  linux-libc-dev  
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.  
Need to get 0B/864kB of archives.  
After this operation, 0B of additional disk space will be used.  
Do you want to continue [Y/n]?  

Mas executando este script usando cron ...

#!/bin/bash  
source  /home/adm/.profile  
apt-get update >> /home/adm/update_detailed.log  
apt-get --yes upgrade >> /home/adm/update_detailed.log  
echo "Update_successful $(date)" >> /home/adm/update.log  

produz a seguinte saída:

Reading package lists...  
Building dependency tree...  
Reading state information...  
The following packages will be upgraded:  
  linux-libc-dev  
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.  
Need to get 0B/864kB of archives.  
After this operation, 0B of additional disk space will be used.  

Por que o pacote linux-libc-dev não é instalado a partir do script bash, mas pode ser instalado a partir da linha de comando? Observe que o script está configurado para ser executado como o superusuário.

O script foi verificado em relação a [1] e fontes on-line.

As perguntas que li no serverfault mencionaram atualizações autônomas, mas quero entender esse problema e não usar uma alternativa.

Em [1] eu li que esse tipo de problema pode ser causado pelas variáveis de ambiente. É por isso que adicionei a linha /home/adm/.profile de origem ao script. Não fez diferença.

[1] Manual de administração do sistema Unix e Linux, 4ed, 0- 13-148005-7

    
por AJ Dhaliwal 18.02.2013 / 05:44

1 resposta

3

Você não é o primeiro a encontrar esse problema e acha que ele é praticamente inviável. É por isso que o Debian tem um pacote para este propósito há muitos anos. Tem o nome cron-apt .

Instale este pacote e configure-o editando o arquivo de configuração no diretório /etc/cron-apt . O arquivo de configuração padrão está muito bem documentado e todas as opções devem ser bem explicadas.

Note bem que, enquanto você pode configurá-lo para atualizar automaticamente o sistema, você provavelmente deveria não, pois acabará por quebrar algo importante . É melhor configurá-lo para enviar um e-mail quando houver atualizações disponíveis.

    
por 18.02.2013 / 06:25