Fedora 26부터 Dnf repoquery
부속 명령은 모든 사용자 설치 패키지를 나열하는 새로운 옵션을 제공합니다.
$ dnf repoquery --qf '%{name}' --userinstalled \
| grep -v -- '-debuginfo$' \
| grep -v '^\(kernel-modules\|kernel\|kernel-core\|kernel-devel\)$' > pkgs_a.lst
다른 방법과 달리 모든 debuginfo 패키지도 나열됩니다. 위의 예제에서 추가 grep은 걸러냅니다.
호스트 B에 목록을 설치하려면 다음을 수행하십시오.
$ < pkgs_a.lst xargs dnf -y install
Dnf API
최신 Dnf 버전 (예 : Fedora> = 23)을 사용하면 Dnf Python API를 통해 사용자 설치 패키지 이름을 패키지 데이터베이스에서 쿼리 할 수 있습니다.
$ python3 -c 'import dnf; b = dnf.Base(); b.fill_sack(); \
l = sorted(set(x.name for x in b.iter_userinstalled() \
if not x.name.endswith("-debuginfo") \
and x.name not in \
["kernel-modules", "kernel", "kernel-core", "kernel-devel"] )); \
print("\n".join(l)) ' > pkgs_a.lst
# dnf install $(cat pkgs_a.lst) # on host_b
dnf install
하나 이상의 패키지를 더 이상 사용할 수 없으면 기본적으로 중단됩니다. 또는 dnf 는 나머지 모든 것을 강제 로 설치할 수 있습니다 .
# dnf install --setopt=strict=0 $(cat pkgs_a.lst) # on host_b
추신 : 위의 코드와 user-installed.py
다른 배포판을 지원하는 코드를 넣으십시오 .
히스토리 사용자 설치
Fedora 23 이상에서 Dnf는
# dnf history userinstalled
모든 사용자 설치 패키지를 나열하는 명령입니다. 2016-11 현재, 출력을 제어 할 수있는 방법이 없기 때문에 그 유용성은 제한적 이며 완전한 버전의 패키지를 인쇄합니다 (예 : 버전 정보 포함).
사용자 설치 제한
사용자 설치로 패키지를 표시하는 것은 일부 Fedora 버전에 일부 제한이 있으며, Fedora 23 시대 시스템 (2015-11 년경)의 경우 다음 문제가 관련됩니다.
리포 쿼리
Dnf, Dnf API를 dnf history userinstalled
사용할 수없고 사용할 수없는 구형 Fedora 시스템에서는 다음과 같이 repoquery 를 사용할 수 있습니다 .
$ repoquery --installed \
--qf '%{n} | %{yumdb_info.reason} | %{yumdb_info.installed_by}' --all \
| awk -F'|' ' $2 ~ /user/ && ($3 != 4294967295) { print $1 }' \
| sort -u > pkgs_a.lst
두 번째 awk 조건은 설치 프로그램이 설치 한 패키지를 제외하는 데 사용됩니다. 설치 프로그램의 사용자 ID는 4294967295로 저장되어 있습니다 ($3 == 0 || $3 == your-user-id)
. 또는 이와 비슷한 것을 쓸 수 있습니다 .
이 명령은 페도라까지 작동합니다 (21)을 해제 -하지만 명령이 있기 때문에, 출시 23에없는 예 repoquery
로 대체되었습니다 dnf repoquery
. 그리고 태그를 dnf repoquery
이해하지 못합니다 %{yumdb_info.reason}
.
repoquery ...
. "설치된 pkg에 대해 잘못된 yumdb querytag '이유': HandBrake-cli-0.9.5-1.fc14.x86_64"