Я обнаружил, что ситуация связана как с удаленным драйвером, так и с тем, что текущая видеокарта изначально не поддерживает OpenGL. -Hiri отображает OpenGL? логотип при запуске.
Затем я попытался восстановить удаленные пакеты, включая libgl1-mesa-dri
, но ошибка не сильно изменилась.
apt-get install libgl1-mesa-dri
Пришлось установить следующий пакет:
apt-get install libegl1-mesa-drivers
После установки приложение уже загружалось и показывало главный экран (главный экран почтового клиента ).
Однако теперь приложение во время загрузки вылетает при первом щелчке мыши и/или при открытии электронного письма со следующими ошибками:
libEGL warning: DRI2: failed to authenticate
libEGL warning: DRI2: failed to authenticate
[2106:2220:0815/191858.546603:ERROR:gl_implementation.cc(225)] Failed to load libGLESv2.so.2: libGLESv2.so.2: cannot open shared object file: No such file or directory
[2106:2220:0815/191858.885012:ERROR:gl_surface_qt.cpp(667)] Requested OpenGL implementation is not supported. Implementation: 0
./hiri.sh: line 13: 2105 Segmentation fault "$SCRIPTDIR/hirimain" $@
Погуглив, я обнаружил, что эти ошибки могут быть связаны с отсутствием libgles2-mesa
библиотеки. Странно, что его не было до (, например. это не был один из удаленных пакетов ). Затем я установил его с:
apt-get install libgles2-mesa
После установки этой последней библиотеки/пакетаприложение позволило мне использовать его.
Также удаление update-glx
и glx-diversions
и glx-alternative-mesa
окончательно избавили от сообщения libEGL warning: DRI2: failed to authenticate
.
ПС. Я просто получаю несколько последних прикладных ошибок Python при закрытии приложения , сообщил о них Хири.
ПРИМЕЧАНИЕ. :другие указали, что выбранное вами регулярное выражение для IPv4-адреса некорректно. Я не буду пытаться говорить об этом здесь, так как это хорошо описано в другом месте.
Вы можете использовать команду sed c hange для строк, которые(!
)не соответствуют вашему RE, например.
$ sed -r '/([0-9]{1,3}\.){3}[0-9]{1,3}/!c\
192.168.0.0
' file.txt
192.168.10.20
192.168.0.0
10.28.214.5
192.168.10.40
192.168.0.0
192.168.10.50
С помощью GNU sed вы можете упростить до
sed -r '/([0-9]{1,3}\.){3}[0-9]{1,3}/!c192.168.0.0' file.txt
sed '/^\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}$/!s/.*/192.168.0.0/' data
Если строка не является действительным адресом IPv4, замените текущую строку на:192.168.0.0
.
Я советую вам использовать другое значение для фиктивного адреса вместо 192.168.0.0
, но это зависит от вас и ваших потребностей.
Или то же, но сawk
:
awk '!/^([0-9]{1,3}\.){3}[0-9]{1,3}$/ {$0="192.168.0.0"}1' data
илиperl
:
perl -MNet::IP -ple '$_ = "192.168.0.0" unless new Net::IP($_)' data
Ваше регулярное выражение будет соответствовать вещам, которые не являются IPv4-адресами с точками -quad-адресами, но похожи на них (, например.256.256.256.256
-очень похоже на адрес IPv4, но не ).
Чтобы соответствовать только действительным IPv4-адресам, необходимо использовать регулярное выражение, например:
(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
или (без модификаторов perlish ?:
non -захват группы):
((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
, и это должно быть правильно закреплено, т.е. с ^
и $
, \b
на обоих концах или \<
и \>
.
См.:Поваренная книга по регулярным выражениям Яна Гойвертса и Стивена Левитана, опубликованная O'Reilly Media, Inc.
напр.
$ sed -E '/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/!s/.*/192.168.0.0/' file.txt
192.168.10.20
192.168.0.0
10.28.214.5
192.168.10.40
192.168.0.0
192.168.10.50
$ perl -p -e 's/.*/192.168.0.0/ unless m/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/' file.txt
192.168.10.20
192.168.0.0
10.28.214.5
192.168.10.40
192.168.0.0
192.168.10.50
Оба они заменяют всю строку ввода на 192.168.0.0, если только строка не соответствует действительному адресу IPv4.
Лично я бы использовал Perl-модуль Regexp ::Common , который представляет собой большой набор регулярных выражений для общих задач сопоставления шаблонов -, удобно доступных в хэше с именем %RE
.
$ perl -MRegexp::Common -p -e 's/.*/192.168.0.0/ unless m/^$RE{net}{IPv4}$/' file.txt
192.168.10.20
192.168.0.0
10.28.214.5
192.168.10.40
192.168.0.0
192.168.10.50
СPerl
:
dummy=192.168.0.0 \
perl -MList::Util=all -lpe '
$octet //= qr/(?!0\d)\d{1,3}/;
/^$octet(?:[.]$octet){3}$/ &&
all { $_<256 } split /[.]/ or
$_ = $ENV{dummy};
' file