apt 的“买家后悔了”

apt 的“买家后悔了”

今天早上我安装了一些更新,询问我是否要替换配置文件:

Configuration file '/etc/apache2/envvars'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** envvars (Y/I/N/O/D/Z) [default=N] ? N

我保留了当前的配置,但之后我开始怀疑:

有没有办法在事后查看新的配置文件是什么样子的?

答案1

我没有测试过这一点,但逻辑决定了你可以查看更新包中包含的文件。我假设你当前发行版的 apache2 包可以从这一页(您可以通过检查 dpkg.log 来确认)

DEB 文件是档案文件,它始终包含三个文件 - debian-binary、control.tar.gz 和 data.tar.gz。我们可以使用 dpkg-deb 和 tar 命令从 deb 包中提取和查看文件,如下所示。

只需将包中的文件提取到临时位置即可。例如: dpkg-deb -x packagename.deb /tmp根据需要调整包名称和目标位置。

提取包的内容后,接下来使用以下命令提取包含的 data.tar.gz 组件的内容tar -xvzf data.tar.gz

找到包含的 envvars 文件(您可以find ./ -name envvars从提取 data.tar.gz 文件的位置使用)。

找到文件后,导航到该目录并使用 diff envvars /etc/apache2/envvars显示当前配置文件和建议配置文件之间的差异。来源:

http://www.thegeekstuff.com/2010/04/view-and-extract-packages/

man dpkg

man dpkg-deb

man diff

答案2

我接受老年怪人的答案,因为它有效并且似乎是最普遍适用的,而不需要太多的劳动。 沃尔蒂纳托的回答在我看来似乎是可行的,但我对重新安装持怀疑态度。

不过,我确实想出了另外两种方法来解决这个问题。

  1. 我在 Virtualbox VM 中运行我的服务器的克隆。我拍摄了快照,应用了更新(选择软件包维护者的版本),将这些版本复制到共享驱动器,然后删除了快照,并进行了真正的更新。

    缺点:通常我会先在虚拟机中进行更新,然后再在真实机器中进行更新,所以我必须先知道要拍摄快照。在应用任何 apache2 更新之前,这也许是个好习惯?我必须考虑一下。

  2. 这是最简单的答案,但我不知道它是否普遍适用。我正在使用aptitude和更新apache2,在/etc/apache2/文件夹中,我发现了我拒绝的软件包维护者的配置文件的副本!它们被命名为apache2.conf.dkpg-distenvvars.dpkg-dist!这有多酷?

缺点:我不知道这是否只发生在aptitudeand\or 上apache2,这可能不普遍适用。

答案3

您可以重新创建该条件并做出不同的选择。

首先,将其复制到/etc/apache2/envvars安全的地方,这样,在最坏的情况下,您也可以恢复它。

dpkg -S /etc/apache2/envvars告诉我们这/etc/apache2/envvars是软件包的一部分apache2,因此您可以通过以下方式重新安装它:

sudo apt-get install --reinstall apache2

相关内容