Err*_*404 9 package-management dpkg deb
我在 Ask Ubuntu 上看到了很多关于这样的错误的问题:
foo post-installation script returned exit status 1
Run Code Online (Sandbox Code Playgroud)
到底什么是安装后脚本?安装后脚本位于哪里?
我遇到了这个有点相关的问题,但它讨论的是安装后触发器而不是安装后脚本。
Err*_*404 17
脚本的名称本身就说明了它的作用。换句话说,该脚本包含安装完成后应执行的命令。
让我们通过一个例子更好地理解它:
.deb完成后,它需要告诉 GRUB 内核已安装,以便您可以引导到它。update-grub因此,包的安装后将通过执行命令和来告诉 GRUB 内核已安装update-initramfs。有关更多信息,请参阅常见问题解答部分。一个更通用的例子可以是这样的:
假设您正在安装该软件包foo。现在假设该包需要一个被bar调用的服务来禁用。它将如何禁用它?开发人员将在软件包的安装后脚本中添加命令systemctl disable bar.service,该命令将禁用该服务。foo因此,该软件包的安装后脚本包含附加命令、更新等......
安装包括以下步骤:
提取新包的控制文件。
如果在新安装之前安装了同一软件包的另一个版本,请执行旧软件包的 prerm 脚本。
运行 preinst 脚本(如果包提供)。
解压新文件,同时备份旧文件,以便出现问题时可以恢复。
如果在新安装之前安装了同一软件包的另一个版本,请执行旧软件包的 postrm 脚本。请注意,该脚本在新包的 preinst 脚本之后执行,因为新文件是在旧文件被删除的同时写入的。
配置包。
安装后位于“配置包”下。它包括:
告诉其他应用程序包安装成功。
包的精确路径,以便用户和其他应用程序可以使用/执行它。
查找安装中的任何错误并打印错误消息。
这些脚本位于哪里?
这些脚本位于/var/lib/dpkg/info. 这些脚本有一个.postinst扩展名。您可以运行locate .postinst以查找更多此类脚本。
安装后脚本示例如下所示:
#!/bin/sh
set -e
if [ -x /usr/sbin/update-initramfs ]; then
/usr/sbin/update-initramfs -u -k all
fi
Run Code Online (Sandbox Code Playgroud)
如果安装后脚本返回 ,这意味着什么exit status 1?
通常,这意味着安装后脚本返回exit 1以指示安装后脚本内的命令由于某种原因失败。
我该如何修复exit status 1?
您可以尝试使用命令搜索错误并修复它们。如果您遇到apt和/或错误dpkg,那么您可以删除安装后脚本,并在修复命令后安全地将其移回原处。然而,这可能并不总是正确的解决方案。您可能想问一个新问题。
下表提到了一些用于修复常见安装后脚本错误的有用命令:
我提出一个关于与这些脚本相关的错误的新问题,我应该提供哪些信息?
您应该提供以下信息:
lsb_release -d)。sudo apt update。sudo apt -f install.其他详细信息应在询问时提供。
我可以更改/删除这些脚本吗?
没有!避免弄乱这些脚本。如果存在语法错误或任何命令错误,则apt该软件包的每次安装都会失败。如果偶然出现任何语法错误,那么您需要手动使用后端工具dpkg来修复所有内容。我可以删除它们吗?不!除非必要,否则不要删除它们,删除这些脚本可能会使这些包无法使用。
我如何重新执行这些脚本?
想要重新执行软件包的安装后脚本吗?正如我之前所说,运行安装后脚本位于包的“配置”下。所以,简单运行:
sudo dpkg --configure <package>
Run Code Online (Sandbox Code Playgroud)
其中<package>是您要配置的包的名称。
尝试ls使用模式运行/var/lib/dpkg/info并输出。您会发现许多类似的脚本作为其输出。其中一些是、、以及 签名文件。下表显示了每个脚本的功能:grepaptitude.postrm.preinstprerm.list
| 脚本 | 功能 |
|---|---|
删除后 ( .postrm) |
该脚本包含删除完成后运行的命令。 |
预安装 ( .preinst) |
该脚本由安装前运行的命令组成。 |
预移除 ( .prerm) |
该脚本包含在删除过程之前运行的命令 |
列出文件 ( .list) |
该文件包含该包拥有/属于的目录列表。 |
有关更多信息,请参阅联机帮助页dpkg
| 归档时间: |
|
| 查看次数: |
10531 次 |
| 最近记录: |