Як встановити оновлення за допомогою командного рядка?


692

Коли я входжу на свій веб-сервер через SSH, я бачу інформацію:

88 packages can be updated.
80 updates are security updates

Я намагався apt-get updateтоді, apt-get upgradeале кожного разу, коли я ввійшов, я все ще бачу повідомлення про оновлення. Як їх встановити?


1
Ви спробували це спочатку: sudo apt-get clean це має очистити кеш.
— користувач2635584

Відповіді:


868

Використовуй це:

sudo apt update        # Fetches the list of available updates
sudo apt upgrade       # Installs some updates; does not remove packages
sudo apt full-upgrade  # Installs updates; may also remove some packages, if needed
sudo apt autoremove    # Removes any old packages that are no longer needed

Документацію щодо кожного aptваріанту можна знайти в підручниках для підходу . Вони також доступні, запустившись man aptу свій термінал.

Використання обох upgradeі full-upgradeразом зазвичай не потрібно, але це може допомогти в деяких випадках: див. Документацію Debian про оновлення з Debian 9 .


29
Чи слід завжди перезавантажуватися sudo rebootпісля нього?
— пеклобоя

1
Мені потрібно було додати -я, щоб це працювало. Ubuntu 17.10
— T04435

124

Виконайте всі команди, ввівши sudoодин раз:

sudo -- sh -c 'apt-get update; apt-get upgrade -y; apt-get dist-upgrade -y; apt-get autoremove -y; apt-get autoclean -y'

або

sudo -s -- <<EOF
apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y
apt-get autoremove -y
apt-get autoclean -y
EOF

або навіть коротше в циклі for (спасибі @dessert)

sudo bash -c 'for i in update {,dist-}upgrade auto{remove,clean}; do apt-get $i -y; done'

3
Можна комбінувати dist-upgradeі autoremoveза apt-get dist-upgrade --auto-remove.
— jarno

3
Не потрібно запускати і те, upgradeі dist-upgrade.
— jarno

3
@jarno dist-upgradeможе видалити пакунки. Використання upgradeпершої може уникнути цього, наприклад, коли нові версії пакету задовольняють залежність легше, ніж старі. Я не знаю, як часто це допомагає при оновленні пакетів у рамках стабільного випуску Ubuntu, але це рекомендується в деяких інших контекстах . Особисто я рідко використовую dist-upgradeв Ubuntu, а коли це роблю, я ніколи не проходжу -y. Але якщо один бігти dist-upgradeі проходити -y, я вважаю, що розумно виконати upgradeдію спочатку.
— Елія Каган

1
@jarno, хоча ви можете ланцюг --autoremoveразом із командою оновлення, обраної вами , це не бажано, оскільки це може призвести до нечистого стану, коли один з пакунків вийде з ладу. Краще - це використовувати autoremoveокремо в окремому рядку після завершення процесу оновлення, якщо ви хочете також очистити старі конфігураційні файли, з якими ви можете зв’язати це --purge.
— Videonauth

@Videonauth о, це залежить, як aptце реалізовано. Я думаю, що це слід реалізувати, щоб він не залишав систему в нечистому стані.
— jarno

91

Це нормальна поведінка.

Повідомлення, яке ви бачите при вході в систему, додано до статусу сервера "Message-Of-The-Day", яке оновлюється лише кожного дня календаря (або під час завантаження / запуску сервера). Подивіться на вміст, використовуючи

cat /etc/motd

Ті ж оновлення доступні після запуску

sudo apt-get update && sudo apt-get upgrade

слід очікувати. Якщо ви потім повторно запустити цю команду ви тільки будете запропоновано ввести будь-які додаткові оновлення , якщо ще більше (нові) поновлення були випущені.


Я помічаю, що будь-які зміни файлів у всій системі не відображаються до наступного календарного дня, чи є спосіб, як "оновити", щоб почати бачити зміни відразу?
— aljuaid86

Ви маєте на увазі оновлення вмісту Message-Of-The-Day чи не отримуєте те, що потрібно після запуску sudo apt-get update && sudo apt-get upgrade?
— david6

3
Це вже не вірно 16.04. Після "apt-get dist-upgrade" та перезавантаження я бачу "0 пакетів можна оновити".
— Богдан Кальмак

1
Звернення ".. або на перезавантаженні сервера .." вище стосується цього.
— david6

3
cat: / etc / motd: Немає такого файлу чи каталогу
— xApple

11

Після входу на ваш сервер, запустіть команду нижче.

sudo apt-get upgrade

Слід зробити трюк. Можливо, вам просто потрібно перезапустити сервер.


3
Дякую за вашу відповідь, але я спробував оновити sudo apt-get. Перезапуск сервера не викликає сумнівів, оскільки на ньому є сайти.
— Марлін

3
якщо ви встановили оновлення, яке безпосередньо впливає на ядро, або це оновлення драйвера або це критичне оновлення безпеки, потрібно перезапустити сервер.
— Евандро Сільва

Можливо, ви повинні врахувати помилку 503 за хвилину. Чи знаєте ви, що це за оновлення?
— NorTicUs

1
Як ви можете дати 503, якщо сервер не працює в автономному режимі?
— mcont

8

У моєму випадку у /etc/apt/sources.list у мене була неправильна або недоступна URL-адреса . Після видалення цієї URL-адреси я зміг успішно оновити всі пакунки.

Команди:

sudo vi /etc/apt/sources.list
sudo apt-get update && sudo apt-get upgrade

7

Моє (дуже пізно, мені подобаються значки некроманта :-)):

  1. Встановіть wajig (один раз):

    sudo apt-get install wajig 
    
  2. Коли ви хочете повністю оновити / оновити вашу систему

    wajig dailyupgrade
    

    (він запитає пароль, якщо потрібно, і зробить усі кроки з оновлення, оновлення, розширення та автоматичного переходу для вас).



1

цей скрипт зручний для автоматизації оновлень, включаючи видалення непотрібних пакетів та виконання перезавантаження, лише якщо ОС цього бажає

remote_user=usernamehere
remote_host=example.com

ssh -A -n -o StrictHostKeyChecking=no ${remote_user}@${remote_host} && \
sudo apt-get update && \
sudo apt-get -f install -y && \
sudo apt-get -o Dpkg::Options::="--force-confnew" -yy dist-upgrade -y && \
sudo apt-get autoremove -y && \
[ -f /var/run/reboot-required ] && \
echo "sudo reboot now" && \
sudo reboot now 

щоб запустити локальну скриньку, просто залиште цей перший рядок, виконуючи ssh

ось псевдонім, який я зберігаю в ~ / .bashrc

alias doit='echo; kill $( ps -eafww|grep update-manager|grep -v grep | grep update-manager | tr -s " " |cut -d" "  -f2 ) > /dev/null 2>&1;  echo "sudo apt-get update && sudo apt-get dist-upgrade &&  [ -f /var/run/reboot-required ] && echo && echo reboot required && echo";echo;sudo apt-get update && sudo apt-get dist-upgrade &&  [ -f /var/run/reboot-required ] && echo && echo reboot required && echo '

то на терміналі я просто видаю doit


0

Якщо ви apt-get updateзнову запустите після того, apt-get upgradeяк було завершено, ці повідомлення при вході в ssh повинні піти.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.