apt-get upgrade 是一个危险的命令吗?

大易归*_*易归真 10 apt 12.04

当我使用 apt-get update 和 apt-get upgrade 时,有一些软件包应该安装在最新版本中,如下所示:

The following packages will be upgraded:
  accountsservice apparmor apport apt apt-transport-https apt-utils binutils
  cloud-init cpp-4.8 dpkg fuse g++-4.8 gcc-4.8 gcc-4.8-base gdisk gnupg gpgv
  grub-common grub-legacy-ec2 grub-pc grub-pc-bin grub2-common initscripts
  isc-dhcp-client isc-dhcp-common libaccountsservice0 libapparmor-perl
  libapparmor1 libapt-inst1.5 libapt-pkg4.12 libasan0 libatomic1 libbsd0
  libcurl3-gnutls libdrm2 libedit2 libfuse2 libgcc-4.8-dev libgd3 libgomp1
  libitm1 libjson-c2 libjson0 libnuma1 libpam-systemd libpolkit-agent-1-0
  libpolkit-backend-1-0 libpolkit-gobject-1-0 libquadmath0 libstdc++-4.8-dev
  libstdc++6 libsystemd-daemon0 libsystemd-login0 libtsan0 libudev1 libxext6
  linux-libc-dev ntpdate openssl overlayroot patch policykit-1 ppp
  python-urllib3 python3-apport python3-problem-report python3-update-manager
  rsyslog systemd-services sysv-rc sysvinit-utils tcpdump tzdata udev
  update-manager-core
75 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.
Run Code Online (Sandbox Code Playgroud)

如果我不知道那里的每个包如果有最新版本的更新会发生什么。我不应该执行这个命令(apt-get upgrade)。

例如:

这个php版本是我升级之前的

yzxu@ubuntu:/tmp/git-2.1.2$ php --version
PHP 5.6.6-1+deb.sury.org~precise+1 (cli) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
Run Code Online (Sandbox Code Playgroud)

在我升级之后:

yzxu@ubuntu:/tmp/git-2.1.2$ php --version
PHP 5.6.10-1+deb.sury.org~precise+1 (cli) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
Run Code Online (Sandbox Code Playgroud)

php版本变了。如果两个版本都没有变化,是不是应该升级?会不会影响产品

小智 10

apt-get update
Run Code Online (Sandbox Code Playgroud)

刷新存储库并获取有关在线可用包的信息。

apt-get upgrade
Run Code Online (Sandbox Code Playgroud)

为所有已安装的包下载并安装更新——只要它不影响依赖关系(安装新包、删除旧包或跨仓库源(将包从一个仓库切换到另一个))。

apt-get dist-upgrade
Run Code Online (Sandbox Code Playgroud)

与“升级”相同,但在更改依赖项或源时也会升级包(您希望在服务器上避免未经进一步测试的情况)。

总而言之 - 更新可能会破坏事情,但这是必要的!因此,如果您在台式机上,通常应该执行以下操作:

sudo apt-get update && sudo apt-get dist-upgrade
Run Code Online (Sandbox Code Playgroud)

不破坏东西。

大多数时候在服务器上:

sudo apt-get update && sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)

应该足够了,并且应该自动安装安全更新(在服务器和台式机上)

更新至 16.04

同时“apt”包装器是 Ubuntu 中的标准方式,所以命令现在是:

sudo apt update        #to update the repo-information

sudo apt upgrade       #to install all security fixes and changes that doesn't harm the system or change the behaviour

sudo apt full-upgrade  #the new "dist-upgrade" that installs newer versions that can break backwards-compatibility
Run Code Online (Sandbox Code Playgroud)

特尔;博士!

是的,您应该在此示例中更新 PHP,因为它是一个安全修复程序(这可以通过 PHP 的版本控制方案看到;它也不会被推送到 Ubuntu 的“升级”频道。)


小智 1

或许。但您应该定期更新您的系统。更新可能有风险,是的。这种风险还取决于我不知道的事情,例如您可能添加或未添加哪些 PPA 或其他来源。但总的来说,让您的系统保持最新状态是个好主意。更新时,您会获得稳定性修复和安全更新。所以我想说,不更新(升级)你的系统是更危险的。


小智 -5

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
  • 这只会更新您所有已安装的软件。
  • 当您第一次安装操作系统时,这也是必要的。因为它首先需要更新,然后才允许您使用已安装的软件。

编辑: 升级用于升级未正确安装的软件包。

  • -1 这是错误的 `update` 只更新源代码,而 `upgrade` 更新软件包 (4认同)