Выполнение следующих команд в командной строке отлично работает
$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
каталог. В файл конфигурации по умолчанию очень хорошо документирован, и все варианты должны быть достаточно хорошо объяснены.
Обратите внимание, что пока вы жестяная банка настроить его на автоматическое обновление системы, вы, вероятно, не должны, так как это в конечном итоге сломает что-то важное. Лучше просто настроить его для отправки вам по электронной почте, когда будут доступны обновления.