Скрипт обновления системы

Автор dolb, 24 августа 2024, 18:44:14

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

dolb

Помогите сделать скрипт обновления системы. Чтобы с иконкой на рабочем столе. Кликнул - и пошло обновление.
По инструкции в данной статье https://pingvinus.ru/note/script-apt-auto-update у меня не сработало... Показывается терминал, пишет "Обновлений нет", хотя обновления есть...

И еще пишет: "WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
/home/l/.local/bin/new_updater/upd_ceck.sh: строка 10: [: отсутствует символ «]»"

Aalexeey

Цитата: dolb от 24 августа 2024, 18:44:14Чтобы с иконкой на рабочем столе. Кликнул - и пошло обновление
Есть такая штука в LMDE - MINT Update, из совместимого LMDE можно установить, с прописанными только дебиано репами, оттуда и будет предупреждать и обновлять, и вручную тоже.
https://debianforum.ru/index.php?topic=6879 100% защиты от "Ааааа у меня всё поломалось"

Лия

Или можно использовать unattended-upgrades :)

Насчёт скрипта - в нём много ошибок:
if [ -n "$a"]
забыт пробел перед ]
export DISPLAY=:0 && xterm -e 'sh/home/user/.local/bin/new_updater/upd_exec.sh'
забыт пробел после sh
ну и хранить пароль в открытом виде как-то такое себе...

Проще сделать такой скрипт:
#!/usr/bin/sh
sudo apt update
sudo apt upgrade
:)

ChubaDuba

update:
#!/bin/bash

HOLDS=2
sudo apt-get update
UPDATES=$(aptitude search "~U" | wc -l)
PKGS=$(($UPDATES-$HOLDS))

if [ $PKGS == 0 ]; then
   echo "Обновлений нет. Система в актуальном состоянии!"
else  
   sudo apt-get upgrade -y
   echo "Система обновлена!"
fi
Чтобы скрипт работал, нужно установить aptitude
Если вы не запрещали обновление отдельных пакектов, то значение HOLDS нужно выставить в ноль.
Для запуска скрипта в терминале по хоткею использую команду:
xterm -uc -hold -title "Обновление системы" -e update
У вас это будет как-то по-другому (зависит от эмулятора терминала).


Лия

#4

ogost

Цитата: Лия от 24 августа 2024, 21:39:31Или можно использовать unattended-upgrades :)
Самый правильный ответ

sveta13

Зачем писать костыль, проще в терминале:
sudo apt update
sudo aptitude upgrade
Если нет то:
sudo apt install aptitude
Удачи :)
Debian 12 bookworm. MX Linux 23xfce

ek-nfn

#7
Цитата: Лия от 24 августа 2024, 21:39:31Проще сделать такой скрипт:
Код Выделить Развернуть
#!/usr/bin/sh
sudo apt update
sudo apt upgrade
Проблема (для обычного пользователя) "apt upgrade" в том, что эта команда не обновляет пакеты с измененными зависимостями.
Поэтому предпочитаю такой вариант "apt full-upgrade". И удобней использовать в виде алиаса, типа такого:
alias upg='sudo apt update && sudo apt full-upgrade'

На серверах да, лучше проверенное временем старое, чем непонятное новое. Чтоб потом не прыгать вокруг рухнувшей сети
Debian 12  -> Devuan 5 xfce -> MX Linux 23

Лия

#8
Цитата: ek-nfn от 02 сентября 2024, 02:57:50Проблема (для обычного пользователя) "apt upgrade" в том, что эта команда не обновляет пакеты с измененными зависимостями.
$ man apt
Цитироватьupgrade
          upgrade is used to install available upgrades of all packages currently installed on the system from the sources configured via sources.list(5). New packages will be installed if required to satisfy dependencies, but existing packages will never be removed. If an upgrade for a package requires
          the removal of an installed package the upgrade for this package isn't performed.


full-upgrade

          full-upgrade performs the function of upgrade but will remove currently installed packages if this is needed to upgrade the system as a whole.
Для обычного обновления пакетов upgrade достаточно
А вот для обновления Debian (например с bullseye (11) на bookworm (12)) нужно уже:
apt upgrade --without-new-pkgs
apt full-upgrade
https://www.debian.org/releases/stable/amd64/release-notes/ch-upgrading.en.html

И ещё https://wiki.debian.org/DebianPackageManagement#Upgrading_your_system
ЦитироватьUpgrading your system

You should upgrade you system everyday, this gives you security and bug fixes:

# apt upgrade

Sometimes it is helpful to use "full-upgrade". It performs the function of the upgrade but will remove currently installed packages if that is essential to upgrade the system as a whole. This command is usually issued while doing system upgrades.

# apt full-upgrade