今天早上我安装了一些更新,询问我是否要替换配置文件:
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
我接受老年怪人的答案,因为它有效并且似乎是最普遍适用的,而不需要太多的劳动。 沃尔蒂纳托的回答在我看来似乎是可行的,但我对重新安装持怀疑态度。
不过,我确实想出了另外两种方法来解决这个问题。
我在 Virtualbox VM 中运行我的服务器的克隆。我拍摄了快照,应用了更新(选择软件包维护者的版本),将这些版本复制到共享驱动器,然后删除了快照,并进行了真正的更新。
缺点:通常我会先在虚拟机中进行更新,然后再在真实机器中进行更新,所以我必须先知道要拍摄快照。在应用任何 apache2 更新之前,这也许是个好习惯?我必须考虑一下。
这是最简单的答案,但我不知道它是否普遍适用。我正在使用
aptitude
和更新apache2
,在/etc/apache2/
文件夹中,我发现了我拒绝的软件包维护者的配置文件的副本!它们被命名为apache2.conf.dkpg-dist
和envvars.dpkg-dist
!这有多酷?
缺点:我不知道这是否只发生在aptitude
and\or 上apache2
,这可能不普遍适用。
答案3
您可以重新创建该条件并做出不同的选择。
首先,将其复制到/etc/apache2/envvars
安全的地方,这样,在最坏的情况下,您也可以恢复它。
dpkg -S /etc/apache2/envvars
告诉我们这/etc/apache2/envvars
是软件包的一部分apache2
,因此您可以通过以下方式重新安装它:
sudo apt-get install --reinstall apache2