LINUX.ORG.RU

Сообщения hobbit

 

Хочу Live Flash с двумя разделами

Привет, ЛОР.

Я вот о чём задумался. Часто, загружаясь с лайва, надо иметь возможность что-то записать с компа на сменный носитель. Понятно, можно воткнуть две флешки в разные порты и смонтировать вторую руками.

А ведь, наверное, можно было бы сделать готовый лайв с двумя разделами: с одного грузится система, другой автомонтируется при входе как rw. И телодвижений меньше, и экономится один порт USB (ситуация, когда доступно только одно гнездо, не самая частая, но иногда бывает).

Интересно, такое кто-нибудь уже сделал?

 ,

hobbit
()

А как комфортно работать со строками в современном C++?

Привет, ЛОР.

Старый добрый std::string, как мы знаем, это по сути char* на стероидах. А во многих случаях надо работать со строками именно как со строками текста.

К примеру, в библиотеке QtCore, входящей во фреймворк Qt, есть класс QString. Её часто ругают за изобретение велосипедов. Но именно благодаря этой «фабрике велосипедов» я могу написать, например, так:

QString s;
QStringList sl;
...
if (sl.contains(s, Qt::CaseInsensitive)) {
    ...
}

И оно мне проверит наличие строки в списке, причём регистронечувствительным (второй параметр) способом. И не только для латинских символов. То есть если в списке есть «Капибара», в строке подойдёт как «Капибара», так и «капибара». Ещё есть split(), join() и дофига полезного.

А как такое сделать без QtCore, на голом STL? В C++20 появился некий std::u8string, он мне поможет, например?

 , ,

hobbit
()

Как распарсить версию ffmpeg из программы

Привет, ЛОР.

Не секрет, что в библиотеках ffmpeg неоднократно ломали API. Поэтому важно проверять их версию на этапе компиляции.

В libavutil есть ffversion.h. Однако вместо понятных XXX_VER_MAJOR и XXX_VER_MINOR там определяется строка. Например, для старенького ffmpeg 3.2 написано:

#define FFMPEG_VERSION "3.2

А для более новых, так и вообще с буковками:

#define FFMPEG_VERSION "n4.4.5"

или

#define FFMPEG_VERSION "n7.1"

Как вы думаете, как в таких условиях написать #if для препроцессора, что код ниже действителен, например, для ffmpeg 4 и выше? Например, в совсем древних ffmpeg-ах была функция avcodec_register_all(), потом её выкинули, а потом выкинули и av_register_all(). И это только одна из «мутаций».

Обновление: всем спасибо за ответы, видимо, самый надёжный метод – проверять версию не FFMPEG в целом, а библиотек из его состава. Для этого соответствующие определения есть, см. комментарий ниже.

FFMPEG API changes log

 ,

hobbit
()

Фиксированное число знаков после запятой

Проблема решена, дело было в моей невнимательности (см. ниже)

Привет, ЛОР.

Встала казалось бы, банальная задача – выводить по результатам SQL-запроса числа, где число знаков после запятой всегда фиксировано, даже если это нули.

В официальной доке SQLite написано:

The format(FORMAT,…) SQL function works like the sqlite3_mprintf() C-language function and the printf() function from the standard C library.

Но при этом в сишечке я могу написать:

    printf("%0.2f\n", 33.35);
    printf("%0.2f\n", 44.);

И первое число выведется как 33.35, а второе как 44.00. Такой результат меня устраивает, и что-то подобное я хотел получить в SQLite.

Авотфиг.

select format(magicnumber/100.00, '%0.2f') from magictable;

(где magicnumber имеет тип integer) возвращает результат с ОДНИМ нулём. Т.е. если magicnumber равен 3845, то всё в порядке, в выводе будет 38.45. А вот если он равен 4200, то вывод даст 42.0 (один нуль вместо двух).

Ради справедливости надо отметить, что эксперимент у меня не совсем чистый, я SQLite дёргаю через QtSql. Но поскольку результатом format() уже является строка, я полагаю, что на результат это влиять не должно. Совсем чистым экспериментом было бы написать тестовую программу на голом libsqlite3-dev, но боюсь, чем колхозить такой тест, я скорее плюну и сделаю форматирование не в SQL а уже на стороне плюсов, в своём наследнике QSqlQueryModel – там понятно, как это делать, и там всё работает.

Но хочется всё-таки попробовать на стороне SQL… Куда копать?

lib32-sqlite 3.47.2-1
sqlite 3.47.2-1

Обновление Спасибо, оказалось, я тупо перепутал местами аргументы функции.

 ,

hobbit
()

Можно ли задать компилятор при сборке через qmake?

Привет, ЛОР.

Есть проект на основе qmake, который должен уметь собираться как в clang, так и в g++.

По умолчанию qmake генерирует Makefile для g++, в дебиане, на котором идёт сборка, оба компилятора присутствуют. При сборке в Qt Creator я могу выбрать «комплект» из версии Qt и компилятора. Это работает.

Но хотелось бы получить такую же гибкость и при сборке из командной строки. Версия Qt определяется самим запускаемым qmake, тут понятно. А вот как задать компилятор? Может, ключом qmake (я такого не нашёл, но возможно, плохо искал)? Или конфиг какой надо править?..

 , ,

hobbit
()

Драма со шрифтами из 2020 года: было ли продолжение?

Наткнулся тут на тему из 2020 года «Библиотека Pango отказалась от мягкого сглаживания шрифтов (hintfull)». На опеннете тоже обсуждали.

Кто-нибудь следил за дальнейшем развитием темы? Чем кончилось? Мониторы с 1920x1080 надо закапывать или?..

 

hobbit
()

Как собрать сторонний Kotlin-проект для Андроида

Привет, ЛОР.

На гитхабе есть программа Simple-Contacts. Написана на Котлине. Инструкция по сборке отсутствует. Ну или слепой я её не нашёл.

Насколько я понимаю, для сборки нужны как минимум gradle и компилятор самого Kotlin. Что ещё, какие-то библиотеки? Какие телодвижения надо предпринять, чтобы получить из этого APK-файл? Как узнать диапазон поддерживаемых версий Андроида?

 , ,

hobbit
()

Импорт файлов mbox в Thunderbird

Привет, ЛОР.

Вчера понадобилось прочитать файл mbox от Roundcube на локальной машине. Ну я беззаботно запустил Thunderbird, сейчас, думаю, загружу.

Ищу и не нахожу. Адресные книги можно, календари можно, чужие профили от того же Thunderbird можно, даже зазипованные. А наистандартнейший юниксовый мейлбокс – хренушки.

Минут 20 с этим воевал, потом решил таки загуглить. И даже результат гуглинга правильно трактовал не сразу. Оказывается, чтобы в заслуженном и в целом очень хорошем почтовом клиенте в 2024 году прочитать mailbox-файл, формату которого фиг знает сколько лет, надо УСТАНАВЛИВАТЬ РАСШИРЕНИЕ.

У меня нет слов.

Впрочем, после того, как я это осознал, всё остальное прошло как по маслу. Для тех, кто будет прыгать по тем же граблям – расширение называется ImportExportTools NG (для сильно старых версий Thunderbird то же самое, но без NG), есть в базе addons.thunderbird.net.

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

 , , ,

hobbit
()

Статическая сборка Qt5 и шрифты

Привет, ЛОР.

Я сейчас осваиваю статическую сборку Qt5 для линукса. (Для Windows я эту задачу решил давно, в линуксе лично меня устраивает Qt из репозиториев, но понятно, что для пользователей произвольного дистрибутива, хотя бы в рамках x86_64, нужна универсальная сборка.)

Сборку веду из тарболла qt-everywhere-src-5.12.12.tar.xz под старенькой Ubuntu 18.04. Почему именно 5.12, а не 5.15 – в 5.15 поменялись ключи для включения libxcb в сборку (если её не включать, Qt при запуске прикладной программы будет искать xcb-плагин и разумеется, обломается), и новые ключи у меня пока не заработали.

Кроме очевидного build-essential, я доустановил (как раз для xcb) пакеты libx11-*, libxcb-*, libxkbcommon-dev и libxkbcommon-x11-dev, а также (на будущее, для OpenSSL) libssl-dev. Из конфига исключены QtWebEngine, QML и openGL (но QML и openGL я планирую вернуть потом).

Мой текущий configure для Qt:

QTDIR=/opt/Qt/5.12.12.st

sudo mkdir -p ${QTDIR}

./configure -opensource -confirm-license -platform linux-g++ -static -release \
 -skip qtwebengine -no-opengl \
 -qt-xcb -I /usr/include/xcb/ -L /usr/lib/x86_64-linux/gnu/ \
 -qt-zlib -qt-libpng -qt-libjpeg -openssl-linked -nomake examples -prefix ${QTDIR}

Далее понятно, make и sudo make install. Сборка прошла успешно. Далее собираю с этим Qt DoubleContact (пришлось немного пропатчить исходники, чтобы алгоритм прицепливания встроенного в Qt zlib-а работал). Полученный бинарник я вытаскиваю из виртуалки на хост (Manjaro KDE), запускаю. Открывается окно с табличками без единого символа. При этом видно, что логика программы работает, окна вызываются (если помнишь, куда тыкать).

В konsole ругань следующая:

QFontDatabase: Cannot find font directory /opt/Qt/5.12.12.st/lib/fonts.
Note that Qt no longer ships fonts. Deploy some (from https://dejavu-fonts.github.io/ for example) or switch to fontconfig.

Вопрос 1. Я правильно понимаю, что Qt именно в этом каталоге и собирается шрифты искать во время выполнения (судя по тому, что путь оказывается захардкожен в бинарник уже моей программы)? Если так, то это не то, что мне надо.

Исходя из этого предположения, я поискал другие пути. В принципе, через QFontDatabase::addApplicationFont() и QApplication::setFont() можно добавить любой нужный шрифт и даже добавить его в ресурсы программы. Программа при этом начинает показывать строки нормально… если ограничиваться одним шрифтом. Но у меня, например, в программе есть ещё и кутешный диалог выбора шрифтов для таблиц, и он при таком решении показывает только один шрифт – именно тот, который я добавил.

Вопрос 2. Можно ли как-то заставить программу искать шрифты уже в той системе, на которой он запускается? В том же QFontDatabase я вижу только методы добавления шрифтов по одному, я так понимаю, работе QFontDialog это не сильно поможет.

Вопрос 3. Формулировку «switch to fontconfig» я не очень понял, fontconfig – это ведь библиотека? И что мне с ней делать?

Интересно, что со статической сборкой под винду этой проблемы нет. Правда, виндовые сборки, которые я раньше распространял, основаны на более ранних версиях Qt (4.8 и 5.10).

Обновление. Проблема решилась по наводке анонимуса. Я поставил пакеты libfreetype6-dev и libfontconfig1-dev и в ./configure дополнительно к указанному выше написал:

-fontconfig -feature-freetype -system-freetype FREETYPE_INCDIR=/usr/include/freetype2

После этого при переносе бинарника со сборочной виртуалки на хостовую систему программа запускается с отображением текста без плясок с QFontDatabase. Диалог шрифтов для таблицы в настройках также отображает все доступные шрифты.

Отмечаю тему решённой. Но если у кого есть рабочий комплект ключей к Qt 5.15 (особенно в части libxcb) – будет интересно почитать и скорее всего, не только мне.

 ,

hobbit
()

Чёрный экран по выходе из кед

Привет, ЛОР.

Система Manjaro KDE, кеды шестые, sddm, обновляюсь регулярно. Видеокарта нвидия 1030, драйвер блоб, сеанс X11.

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

По описанию похоже на первый пункт отсюда, но у меня сама система при этом вполне работает, можно по Ctrl+Alt+F3 переключиться на консоль и перезапустить sddm через systemctl или просто перезагрузить операционку. Но хочется, чтобы при выходе из кед отображался экран sddm, как у людей. Тем более комп многопользовательский, жена и сын на нём тоже работают.

Пару дней назад обсуждали блокировку сайта нвидии для России, думаю, что это здесь не при чём, поскольку моя проблема началась раньше.

Куда копать?

Обновлено: Всем спасибо за советы, особенно @spal, @hargard. Судя по этому багрепорту, сломано восстановление сеансов (Session Restore), заявлено, что проблема решена в Плазме 6.2.0.

Временное решение для более ранних версий: для всех пользователей, которые запускают KDE на компьютере, нужно в настройках сессий (systemsettings / сессии или «Управление сеансами») поставить «Начинать с пустой сессии/сеанса».

 , , ,

hobbit
()

Пользователи Sylpheed, поделитесь, пожалуйста, файлом контактов

Привет, ЛОР.

После недавнего обсуждения я решил добавить в DoubleContact поддержку CSV-файлов от Sylpheed и даже начал это делать. Только сейчас я в дороге, исходники взял, а контрольный файл от Sylpheed 3.7 нет. И Sylpheed ставить особо некуда, под рукой только древняя макось. Да и под макось предлагают сборку Sylpheed только 3.41, где CSV ещё не было. Мне сейчас проще всего этот вопрос отложить на несколько дней.

Но может, кто-нибудь придёт на помощь и сделает в Sylpheed CSV буквально на 3-4 контакта типа Иван Петров и John Doe? Желательно, чтоб хотя бы в одном контакте были заполнены все поля и хотя бы в одном – не менее 2 емейлов.

Поскольку CSV – текстовый файл, результат можнл выложить прямо в комментариях, оформив как код. Начинаться он, как я предполагаю, будет с заголовка, приведённого здесь. Если нет – это тоже интересно.

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

 , ,

hobbit
()

QSqlQueryModel, сортировка и фильтрация

Привет, ЛОР.

Как целесообразнее прикручивать сортировку и фильтрацию к связке QTableView и QSqlQueryModel, если я собираюсь выводить информацию из таблиц SQLite и ориентировочное количество записей – от 40000 до 100000? Без сортировки на моём железе эта связка выводит 40 тыс. записей менее, чем за секунду, что меня вполне устраивает.

Справится ли с этим обычный QSortFilterProxyModel, вставленный между моделью и представлением, или он может «потонуть в данных» и целесообразно модифицировать SQL (колхозить в этом случае, конечно, придётся куда больше)? Или, может, для баз данных есть отдельное готовое решение? Можно, конечно, сказать «попробуй сам», но может, здесь есть люди с более богатым опытом? Вопросы быстродействия они ведь такие – на одной машине/системе может сработать по-одному, а на второй совсем по-другому, поэтому и хочется послушать форумчан, которые шишки, возможно, уже набивали.

Если руками вставлять допусловия в SQL, как сделать, чтобы работа была похожа на сортировку через прокси-модель, щелчками по заголовкам таблиц - это придётся колхозить самостоятельную обработку? Или есть готовое решение? Понятно, что можно отдельную формочку сделать, со списком критериев…

Кто-то на форуме, я смотрю, несколько лет назнад даже свои классы мастерил, правда, на вопросы отвечать не стал…

P.S. Если у кого-то по прочтении моего вопроса возникло дежавю, могу успокоить: это не дежавю. Точно такой же вопрос я задавал на prog.org.ru. И даже автор класса по ссылке там тоже когда-то отметился :))) с тем же результатом :)))

 , , ,

hobbit
()

SDDM запущен, но ничего не кажет (+ про nvidia, dkms и заголовочные файлы разных ядер)

Привет, ЛОР.

Извиняюсь, если разметка поедет, я сейчас пишу из links и не могу проверить, как отправленное ОП будет выглядеть в графическом браузере. Впрочем, нет худа без добра, я наконец-то настроил шрифты и раскладку в /etc/vconsole.conf. :)

В общем, некоторое время назад у меня перестала грузиться система с любыми ядрами из линейки 6.*. Загрузка останавливается (ну по крайней мере, мне так казалось) со словами Finished TLP system startup/shutdown. Я отсиживался на стареньком ядро 5.4. Однако после последнего обновления оно таки сломалось и спамит сообщениями Failed to start Journal Service.

Решил чинить современное ядро (на данный момент это 6.2). Как оказалось, линукс-то у меня загрузился. По крайней мере, я могу нажатием Alt+F2 переключиться на соседнюю консоль, запускать mc и другие консольные программы. Стало быть, она просто графический сервер запустить не может.

В системе стоят 6-е кеды, запускались через sddm. Запускаю ps -A. SDDM висит в процессах. Запускаю sudo systemctl status sddm. Пишет active (running). Выгружаю SDDM, пишу руками по старинке startx. Отваливается с криками No screens found. Похоже на драйверопроблемы. Но с ядром 5.4 всё работало. Нвидия 1030, блоб.

Куда копать?

P.S. А что, Shift+PgUp в ядерной консоли таки починили? Вроде бы Линус это выкидывал в ядре 5.9 по соображениям безопасности…

 , ,

hobbit
()

Приснилась программа для восстановления линуксового загрузчика из винды

Привет, ЛОР.

Недавно я откопал старый ноутбук выпуска середины нулевых. Вполне работоспособный. Когда-то на нём стояли Windows XP и какой-то древний линукс. Потом винду то ли переустанавливали, то ли восстанавливали после какого-то её виндового катаклизма… короче, вы поняли. Линуксовый загрузчик погиб. Но раздел виден и даже вполне себе читается виндовым Ext2fsd.

Ну, думаю, сейчас займёмся прокачкой археологии. Сделал загрузочную флешку. Но к моему вящему удивлению, биос её не видит. При том, что на более современных компах она работает как загрузочная. Ноутбук я пока отложил, возможно, нарежу лайв-сиди на болванку. Вертушка на аппарате есть, вот насколько рабочая — надо проверять.

Но вот о чём я задумался. Наверное, было бы вполне реально написать для горе-дуалбутчиков виндовую программу, которая восстанавливает линуксовый загрузчик прямо из винды. Понятное дело, что ей нужны права админа и всё такое. Понятное дело, мой случай крайне специфический. Но я могу себе представить человека, который только-только осваивает линукс, и тут бац — винда взяла и подложила свинью. Мне кажется, такому человеку было бы куда проще скачать виндовое приложение, чем возиться с лайвами. По крайней мере, на первых порах.

Гуглинг показал, что у убунты давным-давно был некий Wubi, который позволял из винды аж вообще рабочий линукс поставить, правда, на общий с виндой раздел — но это всё же несколько другое.

Как считаете, была бы такая программа полезной?

 , ,

hobbit
()

А есть ли live-образ для проверки ноутбуков?

Привет, ЛОР.

Я тут задумался: а есть ли готовый liveCD/USB, чтобы, например, в магазине воткнуть флешку и проверить, насколько хорошо машинка дружит с линуксом?

Что, на мой взгляд, туда должно входить:

  • утилита, выводящая список оборудования (в компактном, но полном виде) - понятно, зачем;
  • аудиоплеер из коробки + пара мелодий к нему;
  • видеоплеер из коробки + пара роликов к нему;
  • тестилка 3D (наверно, традиционный glxgears вполне подойдёт… хотя есть мнение, что шестерёнки современные процессоры и программно хорошо качают, и для проверки, работает ли аппаратный openGL, нужно что-то посолиднее, но не настаиваю, самому интересно);
  • что-нибудь для проверки сети (ну тут, наверное, достаточно, чтобы NM карту распознал и ping сработал);
  • Upd: сборка должна тащить максимум драйверов в принципе поддерживаемого линуксом железа и грузить всё нужное по умолчанию, чтобы не вызывать, как написали в комментариях, смех показывающих на тебя пальцем продавцов.

То, что традиционно пихают в Live-дистрибутивы, те же менеджеры разделов диска — помешать не помешают, но обязательными не являются. Переразбивать диск в магазине, да ещё и до покупки, я не буду. А вот проверить, играет ли музыка и работает ли Wi-Fi — надо.

 , , ,

hobbit
()

Ищу ПО управления и напоминания для ПЕРСОНАЛЬНЫХ задач

Привет, ЛОР.

Хочу найти программу управления персональными задачами и делами (не обязательно по работе). Чтобы отслеживалась история состояния задачи, чтобы задачи можно было объединить в проекты и подпроекты (например «Мои публикации» -> «Статьи для Петрова», задача «до 15 апреля отправить авторский договор в редакцию»), чтобы были напоминалки. Желательно на основе файла (файлов), а не сайта с БД, даже если он self-hosted (менеджер нужен и там, где интернета нет вообще).

Наверное, я совсем разучился гуглить, но попытка погуглить «opensource персональный менеджер задач» всё равно подсовывает мне Redmine и прочие решения не для людей, но для работодателей команд.

Линукс здесь при том, что разумеется, нужен вменяемый формат файлов, а также клиенты как минимум под десктопный линукс и андроид. Под другие системы — приветствуется, опционально. В самом крайнем случае сойдёт и Android-only решение при условии опенсорсности и читаемого формата файла, попробую десктопный клиент написать сам (если альтернативных решений не найдётся).

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

Есть такое, или придётся как в прошлый раз?

P.S. Многопользовательская работа не нужна.

 , ,

hobbit
()

ARDOR GAMING NEO G16-R5ND312

Привет, ЛОР.

Вот такой симпатичный приборчик продаётся в DNS. Лично меня привлекла клавиатура и относительно неплохие характеристики.

Кто-нибудь ковырял это или похожее чудо под линуксом либо может дать экспертную оценку по опубликованным данным? Интересует, в частности, следующее:

Bluetooth 5.2, WI-FI 6E (802.11ax)
Подсветка клавиш – RGB
Поддержка TPM – есть (само по себе оно мне нафиг не упёрлось, но не помешает ли оно поставить линукс/*BSD)

 

hobbit
()

Чем пленяет Chrome

Привет, ЛОР.

К фактической монополии Хрома и Хромоподобных, разумеется, много вопросов (хотя эта монополия далеко не такая тотальная, как была когда-то с IE6, например). Но есть и вещи, которые вызывают к нему очень сильную симпатию.

Есть комп, за которым работает сильно больше одного человека. На нём стоит Chrome. И как-то повадился он всплывающими окнами бомбить. Поскольку бормоталось там что-то про капчу и «я-не-робот», обратили внимание на это далеко не сразу. Потом позвали меня. Пригляделся — стало понятно, что это уведомления от мусорного сайта (re-captha-version-3-27.fun, если кому интересно). Название сайта, конечно, мелким шрифтом.

Поскольку Хром у меня не основной браузер, я полез в поиск по настройкам. Не успел набрать «Уве…», как вылезла подсказка, что с одного из сайтов приходит аномально высокое количество уведомлений и предложение его проверить. После чего я заблокировал уведомления двумя кнопками.

Вот это, я понимаю, эргономика! Обычно ситуации, когда программа пытается думать за меня, вызывают настороженность. Но тут ситуация немного другая. Программа подсказывает решение по актуальной проблеме и сокращает путь к решению. Но при этом не навязывает это решение, я по-прежнему могу посмотреть и отредактировать список правил.

Да, с точки зрения программиста тут банальщина. Но речь и не о программировании, а об организации UI. Очень чуткой к пользователю.

P.S. Если что, это не отменяет того факта, что гамбургер вместо меню меню жутко бесит.

Перемещено hobbit из desktop

 , , ,

hobbit
()

Два метода, отличаются вроде бы только константностью

Привет, ЛОР.

В заголовочных файлах OpenCV нашёл занятное:

inline
uchar* Mat::ptr(int i0, int i1)
{
    CV_DbgAssert(dims >= 2);
    CV_DbgAssert(data);
    CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]);
    CV_DbgAssert((unsigned)i1 < (unsigned)size.p[1]);
    return data + i0 * step.p[0] + i1 * step.p[1];
}

inline
const uchar* Mat::ptr(int i0, int i1) const
{
    CV_DbgAssert(dims >= 2);
    CV_DbgAssert(data);
    CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]);
    CV_DbgAssert((unsigned)i1 < (unsigned)size.p[1]);
    return data + i0 * step.p[0] + i1 * step.p[1];
}

Вопрос: а как компилятор понимает, к какому из этих методов обращение? У них же номенклатура параметров идентична, разница только в const.

У меня, когда я попытался присвоить результат функции неконстантному указателю, компилятор ругнулся, мол, invalid conversion from ‘const uchar*’ {aka ‘const unsigned char*’} to ‘uchar*’ {aka ‘unsigned char*’}. А вот константному присвоилось нормально.

 ,

hobbit
()

Тыкаю минимальную Убунту

Привет, ЛОР.

В попытке создать минималистичную CI build station я скачал старенький минимальный ISO Ubuntu 18.04 x86_64. Поставил в виртуалбокс. В процессе установки в комплектах ПО не выбрал НИЧЕГО (но позволил инсталлятору качать пакеты с зеркала).

Установка прошла без приключений, виртуалка грузится за 5 секунд, загружается ядерная консоль. Но. Корневая ФС сразу (ну не совсем сразу – после установки и двух перегрузок) отожрала 3,5 гигабайта дискового пространства, после того, как я поставил mc и build-essential, съела ещё 500 метров.

По второму пункту у меня вопросов нет, понятно, что компилятор и сборочные утилиты тащат много требухи. А вот по первому… Всё-таки, куда деваются три с половиной гига на ПУСТОЙ системе? Ну ядро, ну инит, ну несколько сервисов, библиотек и GNUтых утилит. Что ещё?

И можно ли сделать ещё меньше? Ну кроме LFS, конечно, это уж самый радикальный вариант (к тому же в LFS я под файлы сборки кучу места займу).

 ,

hobbit
()

RSS подписка на новые темы