Fedora: сборка пакетов из src.rpm

2018-05-19-12:35:39_1076x631Чаще всего то не требуется обычному пользователю. Но бывает ситуации, когда пакет собран с поддержкой библиотеки исключенной из дистрибутива.

Недавно это случилось с chromium в centos, а с драйверами от epson случается постоянно.

$ cd imagescan-bundle-fedora-27-1.3.23.x64.rpm/
$ ./install.sh
[sudo] пароль для penguin:
Последняя проверка окончания срока действия метаданных: 2:53:00 назад, Сб 19 мая 2018 09:42:23.
Ошибка:
 Проблема 1: conflicting requests
 - nothing provides libboost_filesystem.so.1.64.0()(64bit) needed by imagescan-3.33.0-1epson4fedora27.x86_64
 Проблема 2: package imagescan-plugin-networkscan-1.1.1-1epson4fedora27.x86_64 requires imagescan >= 3.9.0, but none of the providers can be installed
 - conflicting requests
 - nothing provides libboost_filesystem.so.1.64.0()(64bit) needed by imagescan-3.33.0-1epson4fedora27.x86_64
 Проблема 3: package imagescan-plugin-gt-s650-1.0.0-1epson4fedora27.x86_64 requires imagescan >= 3.28.0, but none of the providers can be installed
 - conflicting requests
 - nothing provides libboost_filesystem.so.1.64.0()(64bit) needed by imagescan-3.33.0-1epson4fedora27.x86_64
 Проблема 4: package imagescan-plugin-ocr-engine-1.0.0-1epson4fedora27.x86_64 requires imagescan >= 3.14.0, but none of the providers can be installed
 - conflicting requests
 - nothing provides libboost_filesystem.so.1.64.0()(64bit) needed by imagescan-3.33.0-1epson4fedora27.x86_64

А еще это может потребоваться если мы хотим поставить пакет, который распространяется только в src.rpm.

Продолжить чтение «Fedora: сборка пакетов из src.rpm»

Garmin в Linux: загрузка карт OSM

2018-05-12-15:21:02_1485x851Долгое время считалось, что загрузка карт в гарминовские навигаторы — это очень сложный процесс (на самом деле так и есть, особенно если вы подготавливаете карты вручную).

Но оказалось, что загружать карты все же возможно и можно делать это достаточно быстро. Нам потребуется wine, mapsource и дампы карты проекта gis-lab.

Продолжить чтение «Garmin в Linux: загрузка карт OSM»

Android Studio: на устройстве не осталось свободного места

2018-05-09-13:48:05_911x394Кто из вас не сталкивался с этим сообщением при обновлении студии под linux? Пожалуй каждый, кому доводилось с ней работать эту ошибку уже видел хотя бы раз и спешно шел в гугель для поиска ответа на вопрос что же ей не нравится и как это фиксить.

java.io.IOException: На устройстве не осталось свободного места
java.io.IOException: No space left on device

И так каждый раз. А вся проблема в том, что студия использует /tmp для распаковки установочных архивов перед копированием.

И чаще всего места там катастрофически недостает.

$ df -h |grep \/tmp
tmpfs 3,9G 455M 3,4G 12% /tmp

Во многих дистрибутивах размер раздела выставляется равным половине объема озу. Решений несколько и каждый применяет то, которое ему нравится больше.

Продолжить чтение «Android Studio: на устройстве не осталось свободного места»

Fedora/CentOS: Не работает vpn подключение по pptp

How_to_vpn_workИногда нам нужно подключится по протоколу PPTP к рабочему vpn (корпоративная сеть). А соединения не происходит и система показывается, что произошел сбой при попытке подключиться.

В логах наблюдается что-то подобное.

май 06 17:45:37 localhost.localdomain pppd[17294]: Connection terminated.
май 06 17:45:37 localhost.localdomain pppd[17294]: LCP: timeout sending Config-Requests

Можно запустить wireshark и посмотреть, что на каждый lcp-запрос есть lcp-ответ.

2018-05-06-19:10:05_358x148

Можно просто попробовать включить данный протокол поскольку firewalld не имеет правила по-умолчанию, которое позволяет системе принимать нужные пакеты. А именно в gre инкапсулируются пакеты lcp, которые отвечают за настройку соединения).

В интернетах часто рекомендуют делать нативное правило как-то так.

$ sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p gre -j ACCEPT
$ sudo firewall-cmd --direct --add-rule ipv6 filter INPUT 0 -p gre -j ACCEPT
$ sudo firewall-cmd --reload

Не делайте так — потом этими правилами сложнее управлять.

Попробуем разрешить подключения более элегантно, используя имеющиеся абстракции.

Сначала добавим временные правила чтобы проверить работоспособность и проверим, что протокол добавился в нужную зону.

$ sudo firewall-cmd --zone=home --add-protocol=gre
$ sudo firewall-cmd --zone=home --query-protocol=gre

Система должна сказать yes. Если попытка подключения прошла успешно, то стоит добавить правила на постоянной основе.

Не забудьте указать нужную зону через параметр —zone как в первом, так и во втором случае.

$ sudo firewall-cmd --permanent --zone=home --add-protocol=gre
$ sudo firewall-cmd --permanent --zone=home --query-protocol=gre
$ sudo firewall-cmd --reload

Дальше могут быть проблемы с авторизацией, но это совсем другая история.

Литература

Управление цветом в Linux

01-introЕсть такая штука под названием «уветовые профили». Казалось бы все о них слышали, но немногие умеют их использовать и понимают, зачем это вообще надо.

То, что мы воспринимаем как свет — это лишь электромагнитные колебания с длиной волны от 380-400 нм до 760-780 нм. В этом диапазоне смешались все цвета от красного к филетовому.

02-spectrum
https://ru.wikipedia.org/wiki/Свет

Когда мы видим радугу, то мы видим весь спектр цветов. А вот несовершенные электронные приборы могут отобразить лишь определенные цвета радуги. Называется это цветовым охватом — множество доступных для восприятия человеческим глазом цветов, которые способно воспроизвести устройство. У всей техники разные диаграммы цветопередачи.

Именно поэтому для каждого устройства в системе нужно задать цветовой профиль, который как раз и описывает диапазон цветового охвата.

Почему это важно? Можно пояснить на примере двух инженеров у одного из которых линейка метрическая, а у второго дюймовая. Если один другому скажет, что нужно начертить линию длиной два, то случится нечто странное: линия будет иметь длину два, но в той системе измерений, в которой работает человек.

То же самое с техникой. Если для нас цвето RGB(200, 0, 0) — это красный с каким-то уровнем насыщенности, то для принтера он может быть совершенно другим. Поэтому перед печатью все должно быть сконвертировано с учетом цветового профили устройства.

Подводя итог: цветовой профиль — это правила конвертации цвета из общепризнанной цветовой модели в ту, с которой работает ваша техника.

Когда мы просто печатаем текст на компьютере, то нас не сильно волнует, как это се конвертируется, но когда при печати фотографии мы получим цвета, которых на экране не видели, то пора что-то менять. 🙂

Продолжить чтение «Управление цветом в Linux»

PHP: Отлаживаем скрипты командной строки на удаленной машине

01-ПревьюОтладка бекенда на PHP уже ни у кого не вызывает проблем: достаточно правильно настроить расширение xdebug (или zend debugger), поставить  расширение в свой браузер и можно отлаживать, трассировать или профилировать бекенд.

Но что делать, когда нам требуется отладить консольную утилиту на удаленном сервере? В браузере выбрать пункте enable xdebug нельзя, а если у нас и получится передать IDE_KEY, то оно не знает, где располагается среда разработки и куда делать connect_back.

Это все легко решается одним маленьким скриптом (Важно сделать замечание: это будет работать только когда мы подключены по SSH).

#!/usr/bin/env bash
IP=`echo $SSH_CLIENT | awk "{print $1}"​`
PHP='/usr/bin/php -d 'xdebug.remote_host=${IP}' -d 'xdebug.remote_autostart=1''
$PHP $@

Теперь достаточно скомандовать

$ php-debug.sh yii

И на рабочей машине мы сразу увидим запрос на подключение.

02-Запрос на настройку путей

VirtualBox: получение адреса гостевой машины

vboxmanage guestproperty get <machine name > "/VirtualBox/GuestInfo/Net/<network id>/V4/IP

Например получить адрес в публичной сети, который был роздан при помощи встроенного dhcp.

vboxmanage guestproperty get machine "/VirtualBox/GuestInfo/Net/1/V4/IP"

Подробности: https://www.virtualbox.org/manual/ch08.html

Fedora: гибернация

Вы закрываете крышку ноутбука и он выключается. «Но то не то что я ожидаю!» — воскликните вы. Да. Так и есть. Потому что уже много времени подряд гибернация работает из рук вон плохо. Эдакое бедствие в линупсе.

Сначала рассмотрим теорию, а после — практику сна базе дистрибутива Fedora 26.

Основные режимы энергосбережения, которые чаще всего упоминаются пользователями::

  • ждущий режим — это когда отключается питание внешних устройств, но при этом сохраняется питание памяти, что позволяет относительно быстро восстанавливать рабочее состояние системы  В спецификации аппаратного обеспечения указано пять уровней энергосохранения. И разработчики различных операционных систем часто выбирают различающиеся между собой уровни.
  • Спящий режим — это особая разновидность выключения компьютера при котором слепок содержимого оперативной памяти сохраняется на диске. При повторной загрузке ОС проверяет, есть ли слепок памяти. И если да, то восстанавливает слепок в оперативную память и начинает с того места, на котором вы остановились ранее.
  • гибридный спящий режим — это тот же ждущий режим при котором содержимое оперативной памяти сохраняется в энергонезависимой памяти на случай отключения питания (windows-only)

И если со ждущим режимом все более-менее понятно и он работает в большинстве современных дистрибутивов, то со спящим режимом не все так гладко. Попытавшись увести систему в спячку и нажав на кнопку питания для пробуждения вы просто заново загрузите систему.

Предупреждение: все описанные ниже манипуляции требуют физической перезагрузки компьютера для того, чтобы ядро восприняло новые параметры.

Продолжить чтение «Fedora: гибернация»

No Bootable Device после обновления дистрибутива

1 - no bootable deviceИменно таким неприятным сообщением может встретить вас ноутбук или стационарный компьютер после казалось бы удачно прошедшего обновления дистрибутива.

Почему? Потому что обновился grub-efi, а скрипт, который добавит запись о новом образе для загрузки не записал должным образом.

$ efibootmgr -v
BootCurrent: 0001
Timeout: 0 seconds
BootOrder: 0001,2001,2002,2003
Boot0001* Linux	PciRoot(0x0)/Pci(0x1c,0x4)/Pci(0x0,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)/HD(1,GPT,f627bf87-5440-4997-8310-aa80dba7e383,0x800,0x64000)/File(\EFI\fedora\shimx64-fedora.efi)A01 ..
Boot0002* Unknown Device: 	HD(1,GPT,f627bf87-5440-4997-8310-aa80dba7e383,0x800,0x64000)/File(\EFI\fedora\shim.efi)RC
Boot2001* EFI USB Device	RC
Boot2002* EFI DVD/CDROM	RC
Boot2003* EFI Network	RC

Увы, снять показания я смог только после восстановления работоспособности системы, поэтому на листинге, который приведен выше, мы видим корректный образ под меткой Boot0001 и тот, который был перед обновлением под меткой Boot0002. На разных системах это может выглядеть совершенно различным образом.

Что делать в случае, когда система совершенно не хочет загружаться?

Следует сделать несколько шагов для восстановления работоспособности (не стоит забывать, что для возможности расширенной работы с uefi на многих биосах должен быть установлен административный пароль — только тогда будут видны все элементы меню).

  • зайти в BIOS
  • найти пункт выбора доверенного uefi-файла
  • указать нужный файл на диске (в случае с fedora — это shimx64-fedora.efi)

 

Печать в Chrome без подтверждения

Снимок экрана от 2017-10-28 01-07-21Существует задача для pos-систем печатать что-либо автоматически: чеки, квитанции и т.п. Хочется, чтобы печать можно было инициировать из скриптов, но по дефолту все браузеры показывают диалог печати или предварительный просмотр.

Это неудобно при создании киосков.

Казалось бы уже неоднократно с таким сталкивались и должны были придумать подходящее решение. Но, увы, решение есть, а все советы о том, как его использовать даже на официальных форумах браузеров некорректны.

Что нам предлагают:

  • Использовать опцию —disable-print-preview (или включать аналогичную настройку в about:flags)
  • Вместе с ней включать опцию —kiosk-printing, которая в теории должна избавить нас от диалога выбора принтера.

А вот и нет. Эти опции нельзя использовать совместно. В чем суть: —disable-print-preview передает управление на диалог выбора принтера в системе, а это лишает нас контроля над выбором пользователя. Во многих (во всех) конфигурациях windows и linux нельзя избавиться от шага выбора принтера, а предварительный просмотр в хроме подменяет диалог выбора принтера.

Опция —kiosk-printing воздействует только на диалог предварительного просмотра chrome сразу печатая просматриваемый документ, а если мы его отключим, то и смысла в установке этого параметра нет.

Отсюда вывод: если вы хотите делать автоматическую печать, то используйте только —kiosk-printing.

Из минусов стоит отметить, что окошко предварительного просмотра все же на некоторое мгновение появляется на экране.

<!DOCTYPE html>
<html>
<head>
<title>autoprint</title>
</head>
<body>
data
<script>
    window.addEventListener('load', function() {
      window.print()
    })
  </script>
</body>
</html>

И это сработает — принтер начнет печатать.

UPD:

Chromium, issue 169004: баг с окном предварительного просмотра в режиме kiosk-printing (непофикшено)