팩맨이 모든 질문에 "예"라고 대답하도록 하려면 어떻게 해야 하나요?

팩맨이 모든 질문에 "예"라고 대답하도록 하려면 어떻게 해야 하나요?

스크립트에서 팩맨을 실행하려고 합니다. 문제는 충돌하는 패키지를 설치해야 하지만 현재 설치된 패키지를 대체해서는 안 된다는 것입니다. 답변대로여기--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

관련 정보