我正在尝试从脚本运行 pacman。问题是应该安装一个冲突的包,但不能替换当前安装的包。正如这里所回答的,我通过了 --noconfirm 选项,并且由于 pacman 的 stdin 没有指向 tty,所以它假定默认答案是否定的。如何强制 pacman 对所有问题都回答“是”?请注意,我无法将任何输入传递给 pacman(它通过 makechrootpkg 运行),因此我无法使用此处yes
建议的命令或类似命令。
这是 pacman 的输出:
loading packages...
resolving dependencies...
looking for conflicting packages...
:: libinput-ubuntu and libinput are in conflict. Remove libinput? [y/N]
error: unresolvable package conflicts detected
error: failed to prepare transaction (conflicting dependencies)
Run Code Online (Sandbox Code Playgroud)
小智 8
有一个未记录的选项 ( --ask BITMASK
) 可以反转默认答案(在pacman
测试中使用)。定义了以下位枚举 ( alpm.h
):
typedef enum _alpm_question_type_t {
ALPM_QUESTION_INSTALL_IGNOREPKG = (1 << 0),
ALPM_QUESTION_REPLACE_PKG = (1 << 1),
ALPM_QUESTION_CONFLICT_PKG = (1 << 2),
ALPM_QUESTION_CORRUPTED_PKG = (1 << 3),
ALPM_QUESTION_REMOVE_PKGS = (1 << 4),
ALPM_QUESTION_SELECT_PROVIDER = (1 << 5),
ALPM_QUESTION_IMPORT_KEY = (1 << 6)
} alpm_question_type_t;
Run Code Online (Sandbox Code Playgroud)
要自动替换包,请使用:
typedef enum _alpm_question_type_t {
ALPM_QUESTION_INSTALL_IGNOREPKG = (1 << 0),
ALPM_QUESTION_REPLACE_PKG = (1 << 1),
ALPM_QUESTION_CONFLICT_PKG = (1 << 2),
ALPM_QUESTION_CORRUPTED_PKG = (1 << 3),
ALPM_QUESTION_REMOVE_PKGS = (1 << 4),
ALPM_QUESTION_SELECT_PROVIDER = (1 << 5),
ALPM_QUESTION_IMPORT_KEY = (1 << 6)
} alpm_question_type_t;
Run Code Online (Sandbox Code Playgroud)