我通常apt-get update && apt-get upgrade
用来运行我的更新和升级而不是 GUI,因为它似乎运行得更快。
但是,我最近注意到我经常收到一条消息,说我的一个升级被阻止了。然后我通常运行dist-upgrade
它通过它并且它工作正常。据我所知,在阅读这个问题及其答案后,会dist-upgrade
做所有相同的事情,然后做一些事情。
所以,我的问题是:为什么要使用apt-get upgrade
?为什么不一直使用apt-get dist-upgrade
?为什么apt-get upgrade
还要存在?
我有一个最新的 Ubuntu 安装 (13.10)。
当我运行/usr/lib/update-notifier/apt-check
它时返回7:0
,即 7 个可用更新,但没有一个是安全的。
但是,当我尝试升级时,我得到以下信息:
sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have been kept back:
linux-generic linux-headers-generic linux-image-generic
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Run Code Online (Sandbox Code Playgroud)
谁能解释为什么以及如何让 apt-check 返回正确的值?如果 apt-check 返回,3:0
那么这似乎是有道理的,但是 7 是从哪里来的?
顺便说一句,apt-check 是随sudo apt-get install update-notifier
.
我正在尝试使用 apt-get 创建仅适用于 Ubuntu 系统的安全更新列表。
我非常了解这篇文章如何仅从命令行检查安全更新?但这似乎只有在 /etc/apt/sources.list.d/ 中不存在任何源列表的情况下才有效
到目前为止我的代码看起来像这样
#!/bin/bash
set -x
setup(){
APTSRC="/etc/apt/sources.list"
SECSRC="/etc/apt/secsource.list"
}
cleanup(){
rm ${SECSRC}
}
get_updates(){
grep trusty-security ${APTSRC} > ${SECSRC}
apt-get -o Dir::Etc::sourcelist="${SECSRC##/*/}" -o Dir::Etc:sourceparts="." update && apt-get --assume-no upgrade
}
setup
get_updates
cleanup
Run Code Online (Sandbox Code Playgroud)
它在大多数情况下都有效,但因为我在 /etc/apt/sources.list.d/ 中有一些源列表,它会将它们拉进来。有没有办法通过命令行选项来避免这种情况?
我想补充一点,我们不会设置自动更新。我们只想要一个更新列表。