pkg: wrong architecture

На днях в портах FreeBSD у одного порта, а именно, у ports-mgmt/pkg-devel, прописали "abi":"FreeBSD:12.0:i386" вместо "abi":"FreeBSD:12:i386". Аналогично сделали на архитектуре amd64 и на других ветках, не только 12. При попытке обновить порты выпадает следующая ошибка:

~ ~> pkg update -f
Updating FreeBSD repository catalogue...
Fetching meta.conf: 100%    163 B   0.2kB/s    00:01
Fetching packagesite.txz: 100%    6 MiB   1.6MB/s    00:04
Processing entries:  64%
pkg: wrong architecture: FreeBSD:12.0:i386 instead of FreeBSD:12:i386
pkg: repository FreeBSD contains packages with wrong ABI: FreeBSD:12.0:i386
Processing entries: 100%
Unable to update repository FreeBSD
Error updating repositories!

В amd64, соответственно, ошибка:

pkg: wrong architecture: FreeBSD:12.0:amd64 instead of FreeBSD:12:amd64

В качестве workaround, можно прописать в файл /usr/local/etc/pkg.conf:

ABI = "FreeBSD:12:i386";
ALTABI = "FreeBSD:12.0:i386"

Только поправить под свою архитектуру. Проверить используемые ABI можно так:

~> pkg -vv | grep ABI
ABI = "FreeBSD:12:i386";
ALTABI = "FreeBSD:12.0:i386";

А проверить наличие проблемного пакета так:

fetch -qo - https://pkg.freebsd.org/FreeBSD:12:i386/latest/packagesite.txz | tar -xzOf - | grep -a "FreeBSD:12.0"

И, на всякий случай, сделайте пометку в motd, что файл /usr/local/etc/pkg.conf изменен.


Теги: , , , , , ,

Windows Subsystem for Linux

neofetch

Если вы не в курсе, что такое Windows Subsystem for Linux или WSL (или WSL 2), то воспользуйтесь Гуглом. Вкратце, это Linux, работающий внутри OS Windows. Устанавливать эмулятор, вроде Virtual Box или VMWare не нужно, несколько готовых сборок можно установить из магазина Microsoft как обычные  программы. После запуска у вас будет консоль, внешне, естественно, похожая на консоль командной строки, но почти такая же удобная и гибкая, как PuTTY или другой терминал.

Мне эта штука понравилась тем, что у пользователя есть доступ ко всем дискам и разделам операционной системы и можно писать практически любые скрипты для задач по работе с файлами. Поиск файлов, поиск текста внутри файлов, поиск и обработка файлов, чтение файлов в реальном времени (tail –F) и т.д. производится так же, как на обычном Линуксе. Огромное количество удобных утилит доступны практически просто из коробки.

Сегодня мне понадобилось конвертировать несколько flac-файлов в mp3. Я набросал простой скрипт, несколько минут – и все готово. Не нужно устанавливать программы, да еще и зачастую платные, достаточно установить одну или несколько консольных утилит и запустить скрипт.

У меня установлена сборка Debian, для работы с аудиофайлами я использовал ffmpeg, для этого нужно сначала его установить:

sudo apt install ffmpeg -y

Затем нужно перейти в каталог с файлами, которые нужно конвертировать (cd /mnt/c/folder, где “c” – буква  раздела, а folder – каталог с музыкой), создать файл (выполнить nano re.sh) и вставить туда скрипт (правой клавишей, как в обычной командной строке):

#!/bin/sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin

for f in *.flac
do
 ffmpeg -i "$f" -ab 320k -map_metadata 0 -id3v2_version 3 "$f".mp3
done

CTRL+X Y ENTER. Всё, файл сохранен. Запускаем командой sh re.sh и смотрим за процессом выполнения.

Упомянутый выше поиск текста в файлах выглядит примерно так:

find . -name "*.*htm*" -exec grep -i "iframe" {} \; -print

Точка – это текущий каталог, можно указать путь к каталогу. Данный однострочник найдет в текущем каталоге все файлы с расширением, содержащим htm, т.е. .html, .htm, .shtml и т.д. и если внутри файла содержится текст iframe – выведется имя файла и строка в файле с этим словом.

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


Теги: , , , , , , ,

WiFi на Raspberry Pi Zero W

pi-zero-w-1

После длительного использования нулевой Малинки, вылезла проблема со связью через WiFi. На форумах пишут, что это связано с ПО, в итоге, вместо экономии электричества, получаем не доступную по сети Raspberry Pi.

Как это лечить? Сначала я попробовал использовать внешний “свисток”, Edimax EW-7811Un, но и он отваливался от сети. Для лечения внутреннего чипа нужно отключить управление питанием, в файле /etc/rc.local добавьте строчку:

iwconfig wlan0 power off

Это должно отключить управление питанием чипа и он просто будет работать все время, без (неудачных) переходов в спящий режим. При запуске данной команлы из консоли, управление питанием будет отключено без перезагрузки системы.

С внешним WiFi-адаптером от Edimax все сложнее, нужно создать (если не существует) файл /etc/modprobe.d/8192cu.conf и добавить в него строчку:

options 8192cu rtw_power_mgnt=0 rtw_enusbss=0

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

cat /sys/module/8192cu/parameters/rtw_enusbss
cat /sys/module/8192cu/parameters/rtw_power_mgnt

Чтобы настройки вступили в силу, нужно перезагрузить вашу плату.

Также, при использовании внешнего WiFi-адаптера, можно (и нужно) отключать внутренний, для этого добавьте в файл /boot/config.txt следующую строчку:

dtoverlay=disable-wifi

Еще будет полезным отключить IPv6, который наверняка вам не нужен, для этого в файле /etc/sysctl.conf добавьте строчки:

# to disable IPv6 on all interfaces system wide
net.ipv6.conf.all.disable_ipv6 = 1

И вишенка на торте – это скрипт, который проверяет есть ли подключение к сети и пытается её перезапустить:

https://github.com/VBaczynski/WiFi_Check

Поставьте на файл права на исполнение и добавьте его в крон:

chmod 755 /usr/local/bin/WiFi_Check
env EDITOR=nano crontab -e

-- в кроне добавьте запись --
# WiFi check
*/5 * * * * /usr/local/bin/WiFi_Check >/dev/null 2>/dev/null

Надеюсь, это поможет и вам.

P.S.
Все команды выполняются из-под пользователя root, если запускаете из-под обычного пользователя, используйте sudo.


Теги: , , , , , , , ,

Обновить все Ryby gem’ы

Обновить сразу все установленные gem’ы одной строчкой:

gem update `gem list | cut -d ' ' -f 1`

Теги: , , , ,

Глюки в OS X App Store

На моем MacBook Pro установлено две OS X – El Capitan и Mavericks. Последняя была установлена при покупке и я решил ее оставить. В El Capitan в App Store у меня зависло одно обновление – El Capitan Recovery Update 1.0. Каким только боком я ни пытался его установить – ни в какую. При чем в списке обновлений оно числится установленным уже раз пять. Раньше я особо не парился, но в итоге надоело и я нагуглил тред с якобы решением данной проблемы. Автор поста рекомендует просто удалить следующий каталог:

/var/folders/zz

Ну, я так и сделал. Хотя нет, я же умный типа 🙂 , я не удалил, а переименовал его. И убил OS X El Capitan. Она перестала загружаться.

Дальше я полез сюда:

Читать остальную часть заметки »

Теги: , , , , , , ,

PythonDialogBug на FreeBSD в Letsencrypt

Многие наверняка слышали об инициативе по выдаче бесплатных сертификатов Let’s Encrypt (которую скоро переименуют и она будет жить на EFF). Выдаются они всего на 3 месяца, но обновление можно автоматизировать. Я тоже решил попробовать этого зверя, установил из портов и… обломался. Получил ошибку PythonDialogBug (полный лог см. ниже). Быстро найти решение не удалось, поэтому я забросил это дело на несколько месяцев. Когда снова “дошли руки”, начал гуглить информацию по питону. На одном форуме нашел предложение попробовать маленький скрипт:

Читать остальную часть заметки »

Теги: , , , , , , , , , , ,

Rsync и двоеточие

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

~> rsync -av 2015-07-31_01:32:46/ newdir/
ssh: Could not resolve hostname 2015-07-31_01: hostname nor servname provided, or not known
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.1]

Все, что находится до двоеточия считается именем или адресом хоста и не резолвится.

Решить проблему можно тремя способами:

— указать полный путь к файлу или каталогу;
— добавить перед файлом или каталогом точку-слеш (./);
— добавить перед файлом или каталогом в одинарных кавычках pwd и слеш (`pwd`/).

~> rsync -av /home/username/2015-07-31_01:32:46/ newdir/
~> rsync -av ./2015-07-31_01:32:46/ newdir/
~> rsync -av `pwd`/2015-07-31_01:32:46/ newdir/

То же самое относится и к scp.


Теги: , , , , , ,