tinyproxy 通过 apt-get 安装无法创建配置文件

tinyproxy 通过 apt-get 安装无法创建配置文件

几周前我组装了一个 ubuntu 12.04 服务器,直到今天早上一切似乎都很好。

突然,我在安装新软件包时遇到了麻烦 - 起初我以为是 tinyproxy 出了问题,所以我尝试安装 squid。但是,我得到了类似的结果:

Starting tinyproxy: tinyproxy: Could not open config file "/etc/tinyproxy.conf".\
...
/var/lib/dpkg/info/squid3.postinst: 1: /var/lib/dpkg/info/squid3.postinst: cannot open /etc/squid3/squid.conf: No such file

apt-get 似乎没有创建这些程序所需的配置文件。

自上次成功更新/安装软件包以来,我没有修改任何配置或用户组。

/etc 已存在,并填充了健康的配置文件树。它由 root 拥有和分组,并具有以下属性drwxr-xr-x- 据我所知,里面的所有文件和文件夹似乎都很好。我甚至能够以 sudo 身份编辑/保存几个文件和文件夹。

安装 tinyproxy 的完整输出:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
 tinyproxy
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/61.6 kB of archives.
After this operation, 201 kB of additional disk space will be used.
Selecting previously unselected package tinyproxy.
(Reading database ... 58916 files and directories currently installed.)
Unpacking tinyproxy (from .../tinyproxy_1.8.3-1_amd64.deb) ...
Processing triggers for ureadahead ...
Processing triggers for man-db ...
Setting up tinyproxy (1.8.3-1) ...
Starting tinyproxy: tinyproxy: Could not open config file "/etc/tinyproxy.conf".
invoke-rc.d: initscript tinyproxy, action "start" failed.
dpkg: error processing tinyproxy (--configure):
 subprocess installed post-installation script returned error exit status 70
Errors were encountered while processing:
 tinyproxy
E: Sub-process /usr/bin/dpkg returned an error code (1)

一位朋友建议将下载的软件包签入/var/cache/apt/archives。其中有一个条目/etc/tinyproxy.conf

运行sudo touch /etc/tinyproxy.conf将生成一个由 root 拥有且可写入的空文件。

安装后strace的结果:

18467 open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
18467 open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
18467 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\30\2\0\0\0\0\0"..., 832) = 832
18467 open("/etc/tinyproxy.conf", O_RDONLY) = -1 ENOENT (No such file or directory)

我可以通过从另一台服务器复制配置并将其设置为新服务器来解决该问题 - 但这并不理想。

答案1

对于您应该检查的事项,我有一些建议。

  • /etc/ 是否与 '/' (rootfs) 位于不同的分区上?请提供 的输出mount
  • 你能以 root 身份在 /etc/ 下创建目录和/或文件吗?你验证过了吗?

每个已安装的软件包都有一些元数据文件存储在 /var/lib/dpkg/info/PKGNAME.* 下。例如,软件包的安装adduser会创建以下文件:

adduser.conffiles
adduser.config
adduser.list
adduser.md5sums
adduser.postinst
adduser.postrm
adduser.templates

这里有趣的是以 preinst|postinst|prerm|postrm 结尾的文件。它们在安装或删除之前/之后执行。查看它们里面的内容并尝试手动运行它们 - 您可以echo向它们添加一些语句以查看它们在哪里以及如何失败等。它们通常只是 Bash 脚本。

答案2

目录中所有文件的权限如何?这些文件正常吗(也可能有 HW 错误)?您是否尝试过通过触摸或其他基本命令访问这些文件以验证其状态?最快的方法是:

ls -la /etc/

检查权限、inode 和链接,如果只有链接,则这些文件可能会在其他地方损坏。但最后最蹩脚的问题是。。您是否尝试过以 sudo 身份运行它?

相关内容