[Stable Update] 2020-05-03 - Kernels, LXQt 0.15, Vulkan, VLC 3.0.10, Mesa 20.0.6, AMDVLK 20.Q2.2

https://forum.manjaro.org/t/stable-update-2020-05-03-kernels-lxqt-0-15-vulkan-vlc-3-0-10-mesa-20-0-6-amdvlk-20-q2-2/140102

1 polubienie

Po aktualizacji nie działa nakładka na gufw (nakładka na ufw). Przy uruchamianiu wyrzuca błąd:

Cytat
/usr/bin/gufw: linia 2: [: =: oczekiwano operatora jednoargumentowego

Faktycznie, nie działa. Ale wystarczy przywrócić gufw do poprzedniej wersji i znów działa.
Cóż, błędy się zdarzają tak jak w Windows, ale mam wrażenie, że ich naprawa jest dużo prostsza właśnie pod GNU/Linuksem.

Co prawda nie używam filtra pakietów u siebie bo nie widzę najmniejszego sensu, ale zainstalowałem z ciekawości żeby zobaczyć cóż to za błąd jest w tej drugiej linii skryptu.
I cały ten skrypt służy tylko do tego aby wykryć czy działamy na Waylandzie czy na X-ach:

[napcok@mabox ~]$ cat /usr/bin/gufw
#!/bin/bash
if [ $(loginctl show-session $(loginctl|grep $(whoami)|sort -n|tail -n 1 |awk '{print $1}') -p Type) = "Type=wayland" ]; then
    xhost +si:localuser:root
fi
c_user=$(whoami)
pkexec gufw-pkexec $c_user

Z ciekawości… @Manonfire @maciekz - może ktoś z was wkleić ten plik po przywróceniu do poprzedniej, działającej wersji?

Zainstalowałem wersję 19.10.0-2. Działa, ale przy uruchamianiu wyskakuje w konsoli ten sam błąd, a zamiana plików nic nie daje. W starszej wersji /usr/bin/gufw wygląda tak:

#!/bin/sh
if [ $(loginctl show-session $(loginctl|grep $(whoami)|sort -n|tail -n 1 |awk '{print $1}') -p Type) = "Type=wayland" ]; then
    xhost +si:localuser:root
fi
c_user=$(whoami)
pkexec gufw-pkexec $c_user
if [ $(loginctl show-session $(loginctl|grep $(whoami)|sort -n|tail -n 1 |awk '{print $1}') -p Type) = "Type=wayland" ]; then
    xhost -si:localuser:root
fi

U mnie wygląda tak samo. Tylko działa. Natomiast ta nowa, nie działająca wersja nie generowała żadnego komunikatu. Po prostu się nie uruchamiała. Skrypt gufw uruchamia kolejny skrypt gufw-pkexec, który z kolei wywołuje skrypty w Pythonie. Za skomplikowane jak dla mnie.

Jeśli nie działacie na Waylandzie, a z tego co widzę to nie - to można usunąć całego tego if-a.
Tak czy siak dziwne dla mnie jest to, że nie ma zgłoszenia błędu pod ogłoszeniem o aktualizacji na oficjalnym forum, nie znalazłem też nigdzie na stronie gufw.
Czyżby nikt nie używał tego?

Może nikt nie używa :smiley: Ja użyłem, bo się nudziłem, zresztą jak to bezrobotny człowiek. Najdziwniejsze jest to, że przy starej wersji wywala ten sam błąd, ale działa dobrze

Usunięcie if-a nic nie daje. Najwyraźniej tego programu używa go tylko @maciekz oraz ja. Mam zainstalowane Manjaro na VirtualBoksie (staram się zachować w miarę podobną konfigurację jak na fizycznej maszynie) i tam też nowy gufw się nie odpala.

Bardzo to wszystko dziwne… znalazłem jeszcze wątęk o gufw na starym forum - Wątek: [SOLVED] GUFW nie uruchamia się | manjaro.pl
tam też nic konkretnego nie udało się ustalić :slight_smile:

Myślę, że gufw używany jest nieczęsto - ja go uruchamiam, usuwam zbędne profile, zmieniam dwa ustawienia i … najczęściej zapominam o sprawie. Mógłbym zrobić, to w terminalu, ale cóż, tak wygodniej.

Działa komenda:

$ sudo python3 /usr/lib/python3.8/site-packages/gufw/gufw.py

Twoje rozwiązanie sugeruje ustawienie python3 na defaultowy co powinno rozwiązać problem. Nie korzystam gufw ale może ktoś spróbować.

Problem leży w pliku gufw-pkexec. Słabo się znam na skryptach czy to w BASH’u czy czymkolwiek innym, ale to są zupełnie inne skrypty w kwestii odwołań do ścieżki dostępu skryptów Pythona. Jak ktoś obeznany sobie porówna te skrypty to z pewnością znajdzie błąd nie pozwalający na uruchomienie gufw. Podmiana gufw-pkexec z wersji 19.10.0-2 rozwiązuje sprawę.
Parafrazując Diunę Franka Herberta: “skrypty wewnątrz skryptów w skryptach”.

Moje rozwiązanie jest, o czym wcześniej nie wspomniałem, tylko obejściem na daną chwilę. Jest uciskiem na uszkodzoną tętnicę - na chwilę, może godzinę, da radę, ale w dłuższej perspektywie może być kłopotliwe, bo choćby za chwilę zmieni się wersja Python’a z 3.8 na powiedzmy 4.0.
To tylko szybkie obejście na już.

Wystarczy w pliku /usr/bin/gufw-pkexec zmienić w drugiej linijce “print $9” na “print $8” i działa :slight_smile:

Jako, że nie jestem programistą to chciałbym się dowiedzieć, co to zmienia. Prócz tego, że gufw działa.

Rozwiązanie znalazłem gdzieś w necie. Ogólnie chyba chodzi o numer wiersza w pliku, a wiersz nr 9 jest pusty.

U mnie działa, choć wyrzuca komunikat błędu (w konsoli) - taki sam, jak przed modyfikacją:
/usr/bin/gufw: linia 2: [: =: oczekiwano operatora jednoargumentowego
Ale program uruchamia się.

Inne rozwiązanie, również sprawdzone, również u mnie działa, również sieje takim samym błędem, ale chodzi:

Wygląda na to, że problem występuje w wersjach innych niż angielskie (patrz: link powyżej), wiąże się z odmiennym formatem daty (dlaczego ‘świat’ przyjmuje standard ISO, po czym stosuje dalej swoje lokalne tradycje?), i że nie należy przejmować się komunikatem błędu pojawiającym się w konsoli, który nie ma praktycznego znaczenia (na to wygląda), a dotyczy wiersza:

/bin/gufw
--------------------------------------------
if [ $(loginctl show-session $(loginctl|grep $(whoami)|sort -n|tail -n 1 |awk '{print $1}') -p Type) = "Type=wayland" ]; then

Błąd został zgłoszony:

1 polubienie

Jeszcze kilka takich tematów i zostanem programistom :sunglasses:

Programista, to nie zajęcie, tylko stan umysłu :wink: