스크립트에서 팩맨을 실행하려고 합니다. 문제는 충돌하는 패키지를 설치해야 하지만 현재 설치된 패키지를 대체해서는 안 된다는 것입니다. 답변대로여기--noconfirm 옵션을 전달했는데 pacman의 stdin이 tty를 가리키지 않기 때문에 기본 대답은 "no"라고 가정합니다. 팩맨이 모든 질문에 "예"라고 대답하도록 하려면 어떻게 해야 하나요? pacman에 어떤 입력도 전달할 수 없으므로(makechrootpkg를 통해 실행됨) yes
제안된 명령이나 이와 유사한 명령을 사용할 수 없습니다.여기.
이것은 팩맨의 출력입니다:
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)
답변1
기본 답변( 테스트에 사용됨) --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;
패키지를 자동으로 교체하려면 다음을 사용하세요.
sudo pacman -S PKGNAME --ask 4
답변2
이를 달성할 수 있는 옵션이 없는 것 같아서 팩맨 소스 코드를 조사하고 --yes
팩맨에 옵션을 추가하는 패치를 만들었습니다.https://bugs.archlinux.org/task/48835