rpm --erase 시 설치되지 않은 패키지를 무시하도록 RPM에 지시하는 방법은 무엇입니까?

rpm --erase 시 설치되지 않은 패키지를 무시하도록 RPM에 지시하는 방법은 무엇입니까?

새로 설치된 RPM 기반 Linux 시스템에서 항상 삭제/삭제/제거하는 "원치 않는" 패키지 목록이 30개 정도 있습니다.

그러나 명령을 시도하면 --erase예를 들어 (의도적으로 단축됨)

# rpm -e sos abrt abrt-libs abrt-python abrt-dbus abrt-addon-xorg abrt-tui abrt-addon-ccpp abrt-cli abrt-console-notification abrt-addon-kerneloops abrt-retrace-client abrt-addon-vmcore abrt-addon-pstoreoops abrt-addon-python
error: package abrt is not installed
error: package abrt-libs is not installed
error: package abrt-python is not installed
error: package abrt-dbus is not installed
error: package abrt-addon-xorg is not installed
error: package abrt-tui is not installed
error: package abrt-addon-ccpp is not installed
error: package abrt-cli is not installed
error: package abrt-console-notification is not installed
error: package abrt-addon-kerneloops is not installed
error: package abrt-retrace-client is not installed
error: package abrt-addon-vmcore is not installed
error: package abrt-addon-pstoreoops is not installed
error: package abrt-addon-python is not installed
Exit 14

일부 패키지( sos내 생각엔?)가 분명히 존재하지만 삭제되지는 않습니다. 당연히 이 짧은 예에서도 시간이 너무 오래 걸리기 때문에 두 패키지 목록(내 패키지 목록과 오류 메시지)을 일치시키고 명령줄을 편집하고 싶지 않습니다.

물론 나는 다음과 같이 문제를 해결하려고 노력할 수 있습니다.

echo sos abrt abrt-libs abrt-python abrt-dbus abrt-addon-xorg abrt-tui abrt-addon-ccpp abrt-cli abrt-console-notification abrt-addon-kerneloops abrt-retrace-client abrt-addon-vmcore abrt-addon-pstoreoops abrt-addon-python | xargs --max-args=1 rpm -e

하지만 존재하지 않는 패키지는 무시하고 싶습니다.

어떻게 해야 하나요? --force삭제 시 작동하지 않습니다:

# rpm -e --force sos abrt abrt-libs abrt-python abrt-dbus abrt-addon-xorg abrt-tui abrt-addon-ccpp abrt-cli abrt-console-notification abrt-addon-kerneloops abrt-retrace-client abrt-addon-vmcore abrt-addon-pstoreoops abrt-addon-python
rpm: only installation and upgrading may be forced
Exit 1

답변1

내 생각엔 이것이 당신이 찾고 있던 것 같아요. 이 버전은 설치된 것과 일치하는 패키지 목록을 출력합니다.

#- for pkg in sos abrt abrt-libs abrt-python abrt-dbus abrt-addon-xorg abrt-tui abrt-addon-ccpp abrt-cli abrt-console-notification abrt-addon-kerneloops abrt-retrace-client abrt-addon-vmcore abrt-addon-pstoreoops abrt-addon-python; do rpm --quiet -q "$pkg" && echo "$pkg"; done
abrt
abrt-libs
abrt-dbus
abrt-addon-xorg
abrt-tui
abrt-addon-ccpp
abrt-cli
abrt-console-notification
abrt-addon-kerneloops
abrt-retrace-client
abrt-addon-vmcore
abrt-addon-pstoreoops

rpm위의 내용을 사용하여 삭제(또는 제거)를 위해 다시 입력할 수 있는 패키지 이름 목록을 생성할 수 있습니다 .

#- rpm -e --nodeps $(for pkg in sos abrt abrt-libs abrt-python abrt-dbus abrt-addon-xorg abrt-tui abrt-addon-ccpp abrt-cli abrt-console-notification abrt-addon-kerneloops abrt-retrace-client abrt-addon-vmcore abrt-addon-pstoreoops abrt-addon-python; do rpm --quiet -q "$pkg" && echo "$pkg"; done)
Removed /etc/systemd/system/multi-user.target.wants/abrt-journal-core.service.
Removed /etc/systemd/system/multi-user.target.wants/abrt-xorg.service.
Removed /etc/systemd/system/multi-user.target.wants/abrt-vmcore.service.
Removed /etc/systemd/system/multi-user.target.wants/abrt-oops.service.
Removed /etc/systemd/system/multi-user.target.wants/abrtd.service.

이 간단한 버전은 종속성 처리를 처리하지 않습니다. 종속성을 처리해야 하는 경우 DNF(또는 YUM)로 전환해야 합니다. DNF(또는 YUM)가 바로 DNF(또는 YUM)를 위해 만들어진 도구이기 때문입니다.

관련 정보