Назад | Перейти на главную страницу

Обновление apt-get будет запускаться из командной строки, но не из сценария cron bash

Выполнение следующих команд в командной строке отлично работает

$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]?  

Но запуск этого скрипта с помощью 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  

производит следующий вывод:

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.  

Почему пакет linux-libc-dev не устанавливается из сценария bash, но его можно установить из командной строки? Обратите внимание, что сценарий настроен на запуск от имени суперпользователя.

Скрипт был проверен по [1] и онлайн-источникам.

В вопросах, которые я прочитал о serverfault, упоминались автоматические обновления, но я хочу понимать, что эта проблема не использует альтернативу.

В [1] я читал, что такого рода проблемы могут быть вызваны переменными среды. Вот почему я добавил в сценарий исходную строку /home/adm/.profile. Это не имело значения.

[1] Справочник системного администрирования Unix и Linux, 4ed, 0-13-148005-7

Вы не первый, кто столкнулся с этой проблемой и обнаружил, что она в значительной степени неработоспособна. Вот почему у Debian уже много лет есть пакет для этой цели. Это названо cron-apt.

Установите этот пакет, а затем настройте его, отредактировав файл конфигурации в /etc/cron-apt каталог. В файл конфигурации по умолчанию очень хорошо документирован, и все варианты должны быть достаточно хорошо объяснены.

Обратите внимание, что пока вы жестяная банка настроить его на автоматическое обновление системы, вы, вероятно, не должны, так как это в конечном итоге сломает что-то важное. Лучше просто настроить его для отправки вам по электронной почте, когда будут доступны обновления.