当我通过SSH登录到我的Web服务器时,我看到以下信息:

88 packages can be updated.
80 updates are security updates


我尝试了apt-get update,然后尝试了apt-get upgrade,但是每次登录时,我仍然看到有关更新的消息。如何安装它们?

评论

您是否首先尝试过此方法:sudo apt-get clean这应该清除缓存。

#1 楼

使用以下命令:易于。也可以通过在终端上运行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 来获得这些功能。 />

评论


我是否应该始终使用sudo reboot重新启动?

–地狱男爵
2015年4月9日下午5:47

我需要添加-y使其起作用。 Ubuntu 17.10

– T04435
18年2月24日在21:21

@hellboy不需要每次。它通常会通知您是否需要重新启动。

–空手道小子
6月12日2:15

只是指出apt完全升级与apt-get dist-upgrade具有相同的功能,如果像我一样,您正在将命令与该问题中的其他答案进行比较。

–kas
7月31日15:35



#2 楼

通过一次键入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'


有关更多详细信息,请参阅带有APT维护命令的软件包管理文档。

评论


您可以通过apt-get dist-upgrade --auto-remove组合dist-upgrade和autoremove。

– jarno
19年7月22日在8:01



无需同时运行升级和dist-upgrade。

– jarno
19年7月22日在8:22

@jarno dist-upgrade可以删除软件包。首先使用升级可以避免这种情况,例如当新软件包版本比旧软件包更容易满足依赖关系时。我不知道在稳定版本的Ubuntu中升级软件包时这有多大帮助,但是在其他情况下建议这样做。就个人而言,我很少在Ubuntu中使用dist-upgrade,当我这样做时,我从不通过-y。但是,如果要运行dist-upgrade并通过-y,我认为先执行升级操作是合理的。

– Eliah Kagan
19年7月22日在11:36

@jarno虽然可以将--autoremove与您选择的升级命令链接在一起,但不建议这样做,因为当其中一个软件包出现故障时,它可能以不洁的状态结束。更好的方法是在完成更新过程后在单独的一行上单独使用自动删除,如果您也想清除旧的配置文件,也可以使用--purge进行链接。

– Videonauth
19年7月22日在12:18

@Videonauth哦,这取决于apt的实现方式。我认为应该实施它,以免使系统处于不干净的状态。

– jarno
19年7月22日在12:38

#3 楼

这是正常现象。

登录时看到的消息已附加到服务器状态“ Message-Of-The-Day”,该状态仅在每个日历日(或在服务器启动/启动时更新) )。使用

cat /etc/motd

查看内容,运行后仍然看到可用的相同更新

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


是可以预期的。如果您随后重新运行此命令,则仅当发布了更多(较新的)更新时,才会提示您进行任何进一步的更新。

评论


我注意到整个系统中的任何文件更改都不会显示到下一个日历日,是否有办法像“刷新”一样立即开始查看更改?

– aljuaid86
16年2月11日在7:24

您是说要更新当天消息的内容,还是在运行sudo apt-get update && sudo apt-get upgrade之后没有得到想要的内容?

– david6
16-2-11在7:35



在16.04上不再如此。在“ apt-get dist-upgrade”和重新启动之后,我看到“可以升级0个软件包”。

– Bogdan Calmac
16年6月24日在18:27

上面的“ ..或服务器重新启动..”语句确实涵盖了这一点。

– david6
16年6月24日在20:29

cat:/ etc / motd:没有这样的文件或目录

– xApple
17年1月26日在19:17

#4 楼

登录到服务器后,请运行以下命令。

sudo apt-get upgrade


它应该可以解决问题。也许您只需要重新启动服务器即可。

评论


感谢您的回答,但我确实尝试了sudo apt-get upgrade。重新启动服务器是不可能的,因为我上面有站点。

–马林鱼
2012年10月5日14:04

如果您安装了直接影响内核的更新,驱动程序更新或重要安全更新,则需要重新启动服务器。

– Evandro Silva
2012年10月5日14:11

也许您应该考虑一分钟的错误503。您知道这是哪种更新吗?

– NorTicUs
2012年10月5日15:09

如果服务器离线,如何给出503?

–mcont
2015年1月12日下午13:58

#5 楼

就我而言,我在/etc/apt/sources.list中有一个错误或无法访问的URL。
删除此URL之后,我能够成功更新所有软件包。

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


#6 楼

我的(真的很晚,我喜欢死灵法师徽章:-))解决方案:



安装Wajig(一次):

sudo apt-get install wajig 



当您想完全更新/升级系统时,

wajig dailyupgrade


(如果需要,它将要求输入密码,并进行所有更新,升级,远程升级和自动删除步骤)。



#7 楼

您可能还需要执行此操作-

sudo touch /etc/motd.tail


来自-Ubuntu告诉我我有在不使用时可以升级的软件包

它起作用了对我来说14.04

#8 楼

如果在完成apt-get update之后再次运行apt-get upgrade,则ssh登录时的那些消息应消失。

#9 楼

该脚本非常方便,可以自动执行更新,包括删除不需要的程序包,并且仅在操作系统希望在本地计算机上运行它时才执行重新启动。


做ssh

这是我保存在〜/ .bashrc中的别名

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 


然后在终端上,我只是发出doit