使用
sudo apt-get upgrade
命令可以安装所有更新,而不仅仅是安全更新。我知道可以使用更新管理器来选择只安装重要的安全更新,但是有没有办法通过命令行来实现这个功能呢?sudo apt-get upgrade
命令可以安装所有更新,而不仅仅是安全更新。我知道可以使用更新管理器来选择只安装重要的安全更新,但是有没有办法通过命令行来实现这个功能呢?软件包 unattended-upgrades 提供了自动安装安全更新的功能。
你可以使用这个软件包,但是你也可以手动调用它,而不是配置自动部分:
sudo unattended-upgrade -d --dry-run
sudo unattended-upgrade -d # Idem --debug
sudo unattended-upgrade
sudo apt install unattended-upgrades
/usr/share/doc/unattended-upgrades/README.md
}}。unattended-upgrade
的自动执行,您可能需要修改/etc/cron.daily/apt
,但不确定这样做是否“正确”。 - Jaime Hablutzelunattended-upgrades
。 - Raptorunattended-upgrades
的东西。谢谢! - Randy Lgzip -dc /usr/share/doc/unattended-upgrades/README.md.gz | less
命令。 - Gogowitschzless /usr/share/doc/unattended-upgrades/README.md.gz
(https://www.thegeekstuff.com/2009/05/zcat-zless-zgrep-zdiff-zcmp-zmore-gzip-file-operations-on-the-compressed-files/) - mwfearnley注意事项:
有时Ubuntu会将安全更新显示为来自$release-updates存储库。据我所知,这是因为Ubuntu开发人员也会将安全更新推送到$release-updates存储库,以加快其可用性。grep -i securi
的搜索似乎从来都不起作用。包似乎没有被标记为那样的方式。 - vcardilloapt-get | grep | xargs apt-get
命令会改变系统认为你必须安装的软件包。虽然 apt-get upgrade
命令会升级所有东西,但它不会将某些随机的依赖项列为通过此方式"必需"的软件包,而运行 apt-get install <pkg>
命令则会这样做。 - Christopher Schultzgrep "^Inst.*securi.*"
也就是说,以Inst开头并包含securi(ty)的内容。 - Steven the Easily Amusedxargs apt install -y
。 - ctpenrose/etc/apt/preferences
为以下内容:Package: *
Pin: release a=lucid-security
Pin-Priority: 500
Package: *
Pin: release o=Ubuntu
Pin-Priority: 50
apt-get -o Dir::Etc::Preferences=/path/to/preferences_file upgrade
apt-cache policy
轻松确定所需的固定键。apt-cache policy packagename
命令。这将列出各个版本的优先级。你应该能看到不同的行和不同的优先级。如果没有优先级为50的行,那么由于某种原因,固定版本并没有影响到相关的软件包。 - Ressuunattended-upgrade
软件包。/etc/apt/apt.conf.d/50unattended-upgrades
。顶部应该有一个部分:// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
// "${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
};
/etc/apt/apt.conf.d/10periodic
:APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";
sudo unattended-upgrade
。sudo unattended-upgrade --dry-run
。APT::Periodic::Unattended-Upgrade "30";
会实现这个目的——每30天一次。 - vcardillosudo apt list --upgradable | grep security |cut -d\/ -f1|xargs sudo apt-get install -y
--only-upgrade
确保不会安装新的软件包。我刚刚用apt
进行了测试,它有效果。 - int_uasudo apt list
前先运行 sudo apt update
,以确保查找到所有新内容。 - mjbeyeler|xargs sudo ...
部分,只列出软件包,这样您可以逐个安装它们(假设没有太多软件包)。 - joeapt-get install -y --only-upgrade $( apt-get --just-print upgrade | awk 'tolower($4) ~ /.*security.*/ || tolower($5) ~ /.*security.*/ {print $2}' | sort | uniq )
linux-*
软件包的安全更新也来自安全存储库。但我没有检查过。 - keypresssudo apt-get update && sudo apt-get upgrade
sudo apt-get update && sudo apt-get upgrade
(在执行任何升级之前取消)。然后我重新启用了所有的仓库,运行了sudo apt-get updatee
,并打开了更新管理器。标记为安全更新的软件包与apt-get upgrade
找到的不完全相同,但它们非常接近--对我来说足够接近了。我仍然希望知道更新管理器是如何做到这一点以及如何从命令行执行相同的操作,但这已经足够了。谢谢! - crenshaw-devapt-get update
: 只是根据现有列表读取存储库中的条目。需要检查有什么新内容。apt-get upgrade
: 安装包的所有更新,不包括内核模块。没有发布更新。apt-get dist-upgrade
: 安装包的所有更新,包括内核模块。没有发布更新。apt-get
参数 -s
: 仅进行测试,不执行任何更改。#!/usr/bin/env bash
set -e
# List upgradable packages
apt-get update
apt list --upgradable 2>/dev/null
# List security upgrades
test "$(apt-get upgrade -s -y)" && (apt-get upgrade -s -y)
# List upgradable apt packages then upgrade
apt-get update && apt-get upgrade -y -V | grep '=>' | awk '{print$1}' && test "$(apt-get upgrade -y)"
Check and adjust /etc/apt/apt.conf.d/50unattended-upgrade.
Did you replace 'karmic' with the code name of your Ubuntu?
linux-image-generic
包的软件包,根据当前的镜像,例如linux-image-3.x.y-zz-generic
(每个版本都是一个单独的包名),dist-upgrade(允许安装新软件包以满足依赖关系)将执行此升级,而upgrade将显示内核包被保留。 - chronitisapt-get
的答案,考虑到它在每台服务器上都有如此重要的地位。 - Karthik Tsudo apt-get install <name>
来升级这些软件包。这样可以确保只升级那些存在安全问题的软件包。 - Alexis Wilke