GNU/Linux | Notes – Telegram
GNU/Linux | Notes
2.39K subscribers
111 photos
8 files
75 links
Open Source, Dotfiles, Debian/Ubuntu, Software, Linux, Scripts, Notes, Terminal, Shell, Gnu, Tools, Games, Fun, Free Software Movement.

Автор: Кирилл Рехов
Почта: krekhov.dev@gmail.com
Кто я: https://news.1rj.ru/str/krxnotes/246
GitHub: https://github.com/krekhovx
Download Telegram
live-build

live-build — это инструмент, используемый для создания Live-образов в Debian.

$ apt install live-build


Live-образ — это версия операционной системы, которая загружается прямо с носителя (например, USB-флешки или DVD) без необходимости установки на жесткий диск. Это позволяет пользователям протестировать систему, выполнить восстановление или диагностику, а также использовать её в качестве портативной операционной системы. Live-образы полезны для демонстраций и тестирования, так как изменения в системе не сохраняются после перезагрузки, если не использовать специальные методы для сохранения данных.

Когда вы загружаетесь с Live-образа, обычно вам предлагается опция "Установить", которая запускает установщик. Это позволяет вам протестировать операционную систему без изменений в текущей системе, а затем, если она вам подходит, установить её на ваш компьютер. Установочный процесс с Live-образа обычно очень похож на стандартный установочный процесс для дистрибутива.

Конфигурацию проекта можно осуществить с помощью команды:
$ /usr/bin/lb config -d bookworm --debian-installer live \
--debian-installer-distribution bookworm \
--archive-areas "main contrib non-free non-free-firmware" \
--debootstrap-options "--variant=minbase"


Сборка:
$ /usr/bin/lb build


На выходе получится готовый ISO образ на базе Debian.

> Salsa

#debian #build #utils
4🔥1👌1
Релиз Debian 13 ожидается во второй половине 2025 года. Первая стадия заморозки уже началась.

Новость: https://www.opennet.ru/opennews/art.shtml?num=62893

Расписание заморозки: https://release.debian.org/testing/freeze_policy.html

#debian
52👍1🎉1
shellcheck

ShellCheck — это статический анализатор скриптов на языке shell (bash, sh и других). Основная цель утилиты — помочь разработчикам выявлять и исправлять ошибки, потенциальные баги и нарушения стиля в их скриптах. ShellCheck анализирует код и предоставляет рекомендации по улучшению, предупреждая о возможных проблемах, таких как:

1. Синтаксические ошибки.
2. Неинициализированные переменные.
3. Некорректное использование команд.
4. Проблемы с кавычками и экранированием.
5. Советы по улучшению читаемости и поддерживаемости кода.

Установка:
$ apt install shellcheck


Запуск:
$ shellcheck ./noscript.sh


Использование ShellCheck помогает сделать скрипты более надежными и переносимыми. Оно особенно полезно для автоматизации процессов, где стабильность и корректность выполнения скриптов имеют критическое значение.

#utils #shell
🔥6👍431
Debian Popularity Contest

$ apt install popularity-contest


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

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

- Передача данных: Собранные данные отправляются на серверы Debian, если пользователь соглашается участвовать в этом.

- Анонимность: Информация собирается анонимно, без сбора личных данных пользователя.

- Анализ популярности: Эти данные помогают разработчикам и проекту Debian в анализе популярности пакетов, что может влиять на принятие решений о поддержке и развитии программного обеспечения.

- Участие: Участие в popularity-contest является добровольным и может быть настроено или отключено пользователем.

> Salsa
> Popcon

Вот например график использования пакета vifm: https://qa.debian.org/popcon.php?package=vifm

Это очень помогает! Не выключайте =)

#utils #debian
4👌1
fontconfig

Пакет fontconfig содержит утилиты, такие как fc-cache и fc-list. Эти утилиты используются для управления и настройки шрифтов в системе. Пакет Fontconfig является важной частью для работы со шрифтами на системах Linux.

Установка пакета:
$ apt install fontconfig


Обновляет кеш шрифтов:
$ fc-cache -fv

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

-f (force): заставляет утилиту принудительно обновить кеш, даже если он кажется актуальным.

-v (verbose): включает вывод подробной информации о процессе обновления кеша.

Выводит список всех шрифтов, доступных в системе, вместе с их атрибутами:
$ fc-list | grep "My Font"


Выводит только семейства шрифтов без других атрибутов:
$ fc-list : family | sort | uniq


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

#utils
21
mandb

Утилита mandb используется для создания и обновления базы данных для системы справочных страниц (man pages). Эта база данных позволяет ускорить поиск по справочным страницам.

Чтобы использовать mandb, в системе должен быть установлен пакет man-db. Этот пакет содержит все необходимые инструменты для работы со справочными страницами, включая mandb.

$ mandb


Директория /var/cache/man/* хранит кешированные данные, которые mandb использует для ускорения доступа к справочным страницам. Эти кешированные файлы позволяют быстрее находить и отображать страницы man, так как они содержат предварительно обработанную информацию.

Еще одна важная вещь, это manpages, сами справочные страницы, которые кеширует mandb.

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

#utils
31
install

Используется для копирования файлов и установки их в определенные директории. Команда также может устанавливать права доступа к файлам и создавать необходимые директории. Основные функции команды:

1. Копирование файлов: Перемещает файлы в нужное место.
3. Создание директорий: С опцией -d может создавать необходимые директории.
2. Установка прав доступа: Устанавливает права доступа к файлам с помощью опции -m.

Команда install часто используется в скриптах установки программ для копирования исполняемых файлов в системные директории.

Рекурсивное создание директорий с нужными правами:
$ install -d -m 700 /root/.config/vifm


#utils
🔥32
The Oldschool PC Font Resource

Эти шрифты просто потрясающие, ностальгия овладела мной.

Ссылка: https://int10h.org/oldschool-pc-fonts/download/

В правом углу сайта можно заметить:
Text mode font: 1 2 3 4 5 6

Да, со шрифтами можно поиграться на сайте в реальном времени. Это напоминает игры 2000-х годов, такие как Diablo 1, Quake 3 Arena, Герои Меча и Магии и т.д. Некоторые из них, грубо говоря, нечитабельные и в терминале будут выглядеть не очень, а некоторые — очень даже хороши.

#misc #games #fun
😍61🔥1
CodeWars

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

Ссылка: https://www.codewars.com/

Чтобы совсем не отупеть с этими ИИ, иногда можно и порешать =)

#misc
2👍1
😁21
💯10
sync

Всё что хранилось в памяти, буферах, кэшах, будет записано на диск, предотвращается потеря данных. Ядро хранит данные в памяти во избежание частых (обычно медленных) дисковых операций чтения и записи. Это повышает производительность, но если компьютер аварийно завершает работу, данные могут быть утеряны, либо может быть повреждена файловая система. sync гарантирует, что все, что хранилось в памяти, будет записано на диск.

Например в выводе команды:
$ free -h

В секции buff/cache можно увидеть кол-во используемой памяти и вот именно она будет сброшена на диск.

Например:
$ sync; umount /mnt

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

Команда sync в Linux предназначена для записи данных из кэша (включая буфер и кэш страниц) на диск. Однако она не очищает кэш и буферы. То есть, после выполнения команды sync, данные остаются в кэше, но они уже записаны на диск, что обеспечивает их сохранность в случае отключения питания или сбоя. Поэтому, если вы используете команду sync и затем проверяете секцию buff/cache с помощью команды free -h, вы не увидите уменьшения этой секции. Это нормальное поведение.

#memory #utils
62🍌1
gcc: основные переменные для компиляции и линковки

CC
Относится к компилятору (gcc, cc и т.д.).

CFLAGS
Этап компиляции.
(Compiler Flags) - это флаги, передаваемые компилятору (например, gcc) для управления процессом компиляции исходного кода. Они могут включать опции для оптимизации кода, установки уровня предупреждений, определения макросов и т.д. Например: -Wall, -g3, -O0, -I/usr/local/include

LDFLAGS
Этап компоновки.
(Linker Flags) - это флаги, передаваемые компоновщику (линкеру) для управления процессом компоновки объектных файлов в исполняемый файл или библиотеку. Они могут включать опции для указания путей к библиотекам, которые нужно подключить, установки версии библиотеки, определения символов и т.д. Например: -lm

LIBS
Включает в себя статические и динамические библиотеки (-lm, archive.a).

CPPFLAGS
Дополнительные флаги для препроцессора.

Переменные вида CXX относятся к C++, например CXXFLAGS

Опции предупреждений gcc:
-Werror, -Wall

Языковой стандарт:
-std=c99 -ansi

#build #theory
3👍1
Что такое Fingerprint?

Fingerprint
— это короткий уникальный "отпечаток" (хеш-сумма) публичного ключа SSH-сервера. Он нужен для того, чтобы клиент мог убедиться, что подключается именно к тому серверу, к которому нужно, и избежать атак типа "man-in-the-middle".

При первом подключении по SSH к удаленной машине генерируется fingerprint и добавляется в файл ~/.ssh/known_hosts, наш ПК запоминает эту комбинацию и сверяет ее при каждом входе, если кто-то переустановит SSH сервер или OC, то мы об этом узнаем, потому что изменится fingerprint.

#theory
7
Типы файлов

1. Обычный файл (regular file): '-'

2. Каталог (directory): 'd'

3. Именованный канал (named pipe): 'p'

4. Символическая ссылка (soft link): 'l'

5. Специальный файл устройства (device file): 'c' и 'b'

6. Сокет (socket): 's'

#theory
82👍2
Этапы компиляции

1. Препроцессинг (обработка - cpp компонент)

$ gcc -E main.c -o main.i

Текст обрабатывается, производится:
- замена комментариев пустыми строками
- обрабатывает директивы #define #ifdef
- включает #include (копирует содержимое файлов как текст)

2. Трансляция кода в ассемблер (cpp компонент)
$ gcc -S main.i -o main.s

- транслирует исходный текст программы в ассемблерный код

3. Компиляция (объектный файл - as компонент)
$ as main.s -o main.o

- транслирует ассемблерный код в машинный код (бинарный модуль)
- обработка и анализ кода
- выполняется удаление излишних конструкций и упрощение кода с сохранением его смысла
- генерация кода из преобразованного, получается объектный файл

Объектный файл - это программа машинных кодов с частичным сохранением символьной информации, необходимой в процессе сборки.

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

4. Компоновка - линковка (связывание воедино всех объектных файлов - ld компонент)
$ gcc main.o -o program

- определяет связь объектных файлов, нужно чтобы файл А увидел переменную в файле Б, этой задачей занимается компоновщик. Когда программа делает ссылку на функцию, содержащуюся в библиотеке, компоновщик отыскивает эту функцию (например printf()) и добавляет ее код к программе. Таким образом, к программе добавляются только те функции, которые действительно будут в ней использоваться.

При этом возможны ошибки связывания, если объявили функцию не в том месте, то получим ошибку на этом этапе.

5. Загрузка
Вызвать загрузчик для загрузки нашей программы в память.

Кратко:
исходный текст -> препроцессинг -> ассемблер -> машинный код -> компоновка -> загрузка.

Можно не вызывать данные компоненты напрямую, в компиляторе они уже включены:
cpp - препроцессор
as - ассемблер
gcc - компилятор
ld - линковка

#utils #build #theory
13🔥3
Этапы разработки (коротко)

1. Сбор и обработка требований

2. Получение технических заданий, планы работ

3. Разработка
- Дизайн
- Кодирование
- Тестирование
- Документирование

4. Поддержка
- Внедрение (Установка ПО, обучение пользователей)
- Сопровождение (Исправление выявленных ошибок, поддержка пользователей)

#misc
11🙏1
Так выглядит официальный сайт текстового редактора vim

Разве этого хочет видеть пользователь, который заходит за техническими новостями своего любимого текстового редактора? Вряд ли. Теперь вы знаете, что администрация этого сайта поддерживает фашистов. Я зашёл НЕ на политический сайт, а на сайт Open Source проекта.

Вездесущий флаг говна и позора, который тыкают во все места, лишь бы собрать побольше звёздочек на GitHub. Инженеры используют Open Source как пропаганду своих (и не своих) политических интересов. Это не место для этого. Не трогайте Open Source!

#thoughts
💯58👎18👍74💊4😍3💅2🆒2😢1🥴1🌚1
exec

Пример:
$ exec $SHELL


Переменная окружения $SHELL имеет значение текущей оболочки по-умолчанию (ее путь), в моем случае это /bin/bash. Что делает exec? Он заменяет текущий процесс на новый, то есть заменяет текущий /bin/bash на новый /bin/bash. Таким образом, вы остаетесь в той же оболочке, но все предыдущие настройки и процессы текущей оболочки будут сброшены. Это может быть полезно для обновления или сброса окружения без необходимости открывать новый терминал. Например, мы изменили какие-то файлы окружения пользователя, допустим это /etc/bash.bashrc, чтобы не открывать новый терминал, можно просто запустить команду сброса/запуска нового /bin/bash после изменений.

#shell #utils
🔥633❤‍🔥2
alias & unalias

Список всех псевдонимов:
$ alias


Удалить псевдоним:
$ unalias <my-alias>


Удалить все псевдонимы:
$ unalias -a


Если псевдонимы прописаны в .bashrc, можно сделать:
$ exec $SHELL

чтобы вернуть их после unalias команды.

#shell #utils
6🔥2