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


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.