python i moduł dnf

0

Czy ktoś wie jak w pythonie użyć modułu dnf i coś w pythonie przez dnf zainstalować. Szukam jakiegoś poradnika i ciężko. Jeden był, ale jak czytałem to mi głowa puchła. Coś prostego, łopatologicznie: dnf.rozkaz(pakiet) i już.

W pisanym przeze mnie programie doszedłem do takiej "ściany przedstawiania efektu pracy programu" Jak się instaluje w terminalu za pomocą dnf install pakiet to dostajemy ładne paski postępu. Potrafię przechwycić linie i umieścić w gui tkinter. Nawet zabrałem się za przechwytywania znaków (read(1) w odróżnieniu od readline dla całych linii) i za chiny nie mogę wyłapać postępu w terminalu, aby przenieść go do gui. A taki wget i postęp tam wyłapuję. Co jest z postepem w dnf gdzie on idzie, ani stdout, ani errout. Nawet jak chcemy w terminalu przekierować do pliku to nic się nie pojawia (piszę o postępie nie liniach co dnf robi). Na jakim poziomie on działa - ten postęp?

Pozdrawiam

Radek Głębicki

0

Znalazłem opis tutaj:
https://dnf.readthedocs.io/en/latest/api_callback.html
Czy może ktoś mi podpowiedzieć jak to przerobić w działający kod?

Pozdrawiam

0

Udało mi się znaleźć rozwiązanie mojego problemu paska postępu przy przechwytywaniu wyjścia dnf. W komendzie pythona subprogress.Popen trzeba dodać rozkaz pv z pakietu pv. Wygląda to tak:

'sudo -S <<< "<password>" dnf --assumeyes install <pakiet> | pv -n 2>&1 | cat'

i wtedy przy odczycie stdout z Popen mamy jakiś ruch, lecą jakieś znaki, a to możemy przenieść jako progres do tkinter progressbar. Nie jest to idealny progres bo nie ma % postępu, ale przynajmniej wiadomo, że program coś robi.

Może się komuś przyda.

Pozdrawiam

Radek Głębicki

1 użytkowników online, w tym zalogowanych: 0, gości: 1