Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> www.lissyara.su —> Linux - 1

'Первые эксперименты' или 'Ковыряния в Линуксе - 1'

Автор: Fomalhaut.


Переношу свои небольшие записи с ЖЖ. Эта, первая, началась ещё с Linux Mint, поэтому первая запись - о нём. Всё дальнейшее будет относится к Fedora Linux (FL) или Russian Fedora Remix (RFR)
Уточнение: все команды обозначены начинаются с $, хотя некоторым требуются права root: ограничения парсера сайта. Но в любом случае следует работать с правами пользователя - надо приучать себя к правильному. А при необходимости расширенных прав - пользоваться командой sudo. :)

ОГЛАВЛЕНИЕ

1. Установка графического режима при загрузке
2. Смена MAC-адреса
3. Автоматический вход в систему
   а) В GDM
   б) В LightDM
4. Компиляция своего ядра
5. Квейк-подобная выпадающая консоль yakuake
6. Смена темы загрузки
7. Смена фоновой картинки в GDM
8. Восстановление загрузчика GRUB после установки Windows
9. Настройка GRUB 2
10. Проблемы с новой сетевой картой
11. Монтирование дисков по универсальным идентификаторам UUID
12. Переименование сетевых интерфейсов
13. Конвертирование DVD в удобоваримое
14. Настройка L2TP
15. Установка драйверов на видеокарты ATI и nVidia
16. Сборка RPM из SRPM
17. Включение по сети, используя Wake-on-LAN
18. Технические параметры системы
19. Управление пользователями
20. Поиск файлов с текстом
21. Вывод списка файлов (по типам)
22. Конвертирование аудио (с "разрезкой") и видео файлов
23. Подключение видеокамер
24. Подключение "Яндекс-Диск"
25. Подключение мобильных устройств по Media Transfer Protocol (MTP)
26. Настройка сетевых интерфейсов
27. Работа в GitHub

  • а) Регистрация на GitHub и настройка доступа
  • б) Установка и первичная настройка
  • в) Создание локальной копии репозитория и работа с ней
    28. Установка локали

    1. Установка графического режима при загрузке

    Это актуально для версии 12 - на более поздних я пока не замечал. Достаточно часто в этой версии после установки системы на "винт" система при загрузке останавливается с серым или чёрным экраном. Проблема - в неверной инициализации видео ДО загрузки основных драйверов. Для отключения этого в параметрах ядра в загрузчике (строка, начинающаяся на kernel) надо убрать следующий параметры:
    rhgb quiet
    

    и добавить вместо них
    nomodeset
    

    Возможно установить ещё числовой параметр, который указывает режим загрузки (без кавычек):
        "1" - загрузить систему в однопользовательском режиме с правами root без запроса пароля. Может показаться, что это - "дыра" в системе: любой, кто это знает, может подойти к компьютеру и получить полный доступ. В действительности тут проблема иного рода: ограничение физического доступа к компьютеру, а это, в принципе, не задача операционной системы (ОС).
        "3" - загрузка в консоль без запуска X-сервера (графики). После окончания загрузки в левом верхнем углу будет запрос имени пользователя (login) и пароля (password).
    Все варианты описаны в файле /etc/inittab.
    Для избавления от влияния ошибки в ядре (временная мера), описанной здесь, доостаточно добавить параметр
    idle=poll
    

    Другие параметры ядра доступны в виде списка.

    2. Смена MAC-адреса

    Если необходимо менять MAC-адрес при загрузке (необходимо бывает, например, если у провайдера идёт авторизация по MAC-адресу), то можно утилитой ifconfig, например:
    ifconfig eth1 hw ether 40:12:55:42:1c:00
    

    где eth1 - имя сетевого интерфейса, на котором производится смена адреса, hw ether - что меняется именно аппаратный Ethernet-адрес.
    Для того, чтобы данный адрес присваивался сетевому интерфейсу автоматически при запуске сетевых демонов, надо:
    а) при использовании Network Manager: указать этот адрес в соотв.строке в окне конфигурации интерфейса;
    б) при использовании демона network.serice: указать этот адрес в файле конфигурации сетевого интерфейса, например, для интерфейса p33p1:
    $ cat /etc/sysconfig/network-scripts/ifcfg-p33p1
    ...
    HWADDR=C8:60:00:05:26:2F
    ...
    

    3. Автоматический вход в систему

    а) В GDM

    Чтобы каким-либо пользователем автоматически при загрузке войти в систему, надо настроить GDM (GNOME Display Manager). Для этого необходимо в файле  /etc/gdm/custom.conf прописать следующее:
    а) если надо просто автовход:
    [daemon]
    AutomaticLoginEnable=true
    AutomaticLogin=username
    

    б) если надо вход с задержкой:
    [daemon]
    TimedLoginEnable=true
    TimedLogin=username
    TimedLoginDelay=5
    

    где, TimedLoginEnable – булево значение (разрешено/запрещено), TimedLogin — имя пользователя, а TimedLoginDelay — время ожидания перед автоматическим входом указанного выше пользователя (в секундах).

    б) В lightdm

    В файле /etc/lightdm/lightdm.conf правим следующие строки до вида:
    pam-service=lightdm
    pam-autologin-service=lightdm-autologin
    autologin-guest=false
    autologin-user=<username>
    autologin-user-timeout=0
    

    Кроме этого необходимо создать группу autologin и добавить туда пользователя
    $ groupadd -r autologin
    $ gpasswd -a <username> autologin
    

    Собственно всё: осталось перезагрузить систему для проверки.
    Ещё можно сменить фоновую картинку. Для этого в файле /etc/lightdm/lightdm-gtk-greeter.conf укажем имя файла картинки:
    background=/usr/share/backgrounds/mypicture.png
    

    Подробности: LightDM, Настройка сервера VNC и RDP совместно с LightDM.

    4. Компиляция своего ядра

    Описание параметров ядра:
    а) 'Параметры ядра Linux';
    б) 'Использование /proc для изменения параметров Linux ядра (proc kernel linux tune)';
    в) 'Linux Kernel in a Nutshell'.

    5. Квейк-подобная выпадающая консоль yakuake

    Понравилась. Правда за собой библиотеки KDE тянет и пр. заморочки, например, MySQL-сервер и клиент (итого - примерно 92 МБ). Но результат - симпатичен и удобен. :)

    6. Смена темы загрузки

    В Fedora Linux для оформления используется графичекий загрузчик plymouth, который и надо поднастроить по свои желания. Например, если у нас есть желание поменять картинку загрузки с "по умолчанию" на solar, то необходимо сделать следующее:
    а) установить пакет с новой схемой для Плимута, например, Solar:
    $ yum install plymouth-theme-solar
    

    б) установить в плимуте эту схему активной:
    $ /usr/sbin/plymouth-set-default-theme solar
    

    в) зафиксировать изменения с загрузчике:
    $ /usr/libexec/plymouth/plymouth-update-initrd
    # более новый вариант
    $ dracut -f
    

    Команды б) и в) можно объединить в одной:
    $ plymouth-set-default-theme solar --rebuild-initrd
    

    Если, например, брать тему не из репозиториев, а скачать архив откуда-то (например, stargate) для Ubunta), то в /usr/share/plymouth/themes необходимо создать каталог новой темы, и распаковать туда содержимое архива. После этого открыть  конфигурационный файл темы (с расширением .plymouth)), исправить пути к файлам, если необходимо (у Ubunta, например, другие каталоги для Плимута) и если есть параметр "ScriptFile=", проверить наличие пакета plymouth-plugin-script. и установить при необходимости.
    В довершение процесса необходимо настроить графический режим, в каком будет отображаться настроенная тема. Поэтому в строку загрузки ядра добавляем параметр
    vga=ask
    

    После перезагрузки на экране появится запрос выбора режима, где по Enter высветится список возможных режимов. Внизу - строка ввода номера выбранного варианта.
    Если после этого загрузка произойдёт нормально, то выбранный режим можно прописать к другим параметрах ядра в строку загрузки в GRUB, Например, это был режим 324:
    vga=0x324
    

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

    7. Смена фоновой картинки в GDM

    Картинка "по умолчанию" в GDM надоедает весьма быстро, хотя видеть её приходится не часто. А сменить тему "штатными" средствами не представляется в связи с некоторой ущербностью GDM (мне не понятной).
    Между тем сменить фоновую картинку очень просто: необходимо войти в каталог /usr/share/backgrounds/ и там найти каталог с кодовым именем версии Fedora, которая установлена (у меня в Fedora 14 это laughlin) и так же войти в него и в вложенный каталог default (получается в моём случае полный путь /usr/share/backgrounds/laughlin/default).
    Здесь находится файл laughlin.xml (где laughlin - опять кодовое имя установленной версии Fedora), в котором некоторым разрешениям прописаны соответствующие файлы картинок в формате PNG. Если нет разрешения, используемого в настраиваемой системе, то отредактировав этот файл указанием нового разрешения и прописав в него указание на свой файл картинки, получим желаемую смену фоновой картинки в GDM.
    У меня картинка отобразилась только когда я указал на неё в этом же каталоге (скопировав, конечно, предварительно её сюда в соотв. подкаталог: normalish, standard или wide.
    Так же можно сделать симлинк этой картинки, как "по умолчанию" для соответствующего соотношения сторон монитора:
    $ cd /usr/share/backgrounds/images
    $ ln -s ../laughlin/default/wide/MyPict.png default-16_10.png
    

    Ещё о смене темы в GDM: ссылка1, ссылка2.

    8. Восстановление загрузчика GRUB после установки Windows

    Для восстановления необходимо загрузиться с LiveCD/LiveDVD/LiveUSB/ с Fedora Linux для той же платформы, что и установленная: если установлена i686 - тоже i686.
    В данном примере для целей восстановления будем монтировать необходимые ресурсы в /mnt:
    а) просканируем жёсткие диски на наличие LVM-разделов:
    $  vgscan --mknodes
    

    б) смонтируем корневой каталог системы (например, если это LVM том):
    $ mount /dev/VolGroup00/lv-root /mnt
    

    в) смонтируем /dev:
    $ mount --bind /dev /mnt/dev
    

    г) "чрутим" наш /mnt:
    $ chroot /mnt
    

    д) монтируем все оставшиеся необходимые системные каталоги:
    $ mount /proc
    $ mount /sys
    $ mount /boot
    

    е) производим непосредственно восстановление GRUB:
    $ grub-install /dev/sdc
    

    Ещё одна тонкость: восстановление GRUB2 при установленной системе с UEFI. Например, так:
    efibootmgr --create --gpt --disk /dev/sda --part 1 --write-signature --label "Fedora" --loader "\\EFI\\redhat\\grub.efi"
    

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

    9. Настройка GRUB 2

    Вторая версия загрузчика GRUB имеет много новшеств. В частности, конфигурационный файл /boot/grub2/grub.conf хоть и текстовый, но его генерацией занимается специальная утилита grub2-mkconfig. Поэтому по задумке авторов необходимо желамое указывать в файле /etc/default/grub, а потом указанной утилитой обновлять конфигурационный файл:
    # Если используется обычная (legacy) загрузка
    $ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    # Если используется современная (UEFI) загрузка
    $ sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
    

    Однако при генерации /boot/grub2/grub.cfg будут подключены различные модули (например, для xen, поэтому, если они не нужны, то соответствующим скриптам надо убрать возможность запуска:
    $ chmod -x /etc/grub.d/10_linux_*
    

    Мой пример файла /etc/default/grub:
    GRUB_TIMEOUT="5"
    GRUB_DISTRIBUTOR="RusFedora 20"
    GRUB_DEFAULT="0"
    GRUB_SAVEDEFAULT="false"
    # GRUB_DISABLE_SUBMENU="true"
    # GRUB_DISABLE_RECOVERY="true"
    # Следующие две строки являются одной: разделена только для публикации здесь
    GRUB_CMDLINE_LINUX="rd.md=0 rd.lvm=0 rd.dm=0 vconsole.keymap=us 
     rd.luks=0 vconsole.font=latarcyrheb-sun16 rhgb quiet LANG=ru_RU.UTF-8"
    # Для случая с LVM вместо "rd.md=0 rd.lvm=0 rd.dm=0" и "rd.luks=0"
    # указывается "rd.lvm.lv=rfr20/root" и "rd.lvm.lv=rfr20/swap"
    # где "rfr20/root", "rfr20/swap" это группа LVM томов и разделов на ней
    
    # Восстановление графического загрузчика и включение темы
    GRUB_TERMINAL_OUTPUT="gfxterm"
    GRUB_GFXMODE=1024x768x32,1024x768x24,1024x768
    GRUB_THEME="/boot/grub2/themes/Ded-Babka/theme.txt"
    

    Если всё делать, как задумано разработчиками, то правится файл /etc/default/grub, куда вносятся необходимые параметры, а потом генерируется конфиг вышеуказанной утилитой.
    При использовании в системе видеокарты AMD рекомендуется включить динамическое управление питанием DPM. Для этого надо к конфигурационной строке в переменной GRUB_CMDLINE_LINUX добавить параметр
    radeon.dpm=1
    

    После загрузки с этим параметром состояние DPM можно посмотреть командой
    $ cat /sys/class/drm/card0/device/power_dpm_state
    

    В продолжение: для GRUB2 есть темы оформления, которые располагаются в каталоге /boot/grub2/themes. Кроме уже имеющихся там стандартных для установленной версии ОС тем можно найти в Интернете другие и распаковав их в указанных каталог. Затем указанная тема (точнее, конфигурационный файл темы) прописываются в /boot/grub2/grub.cfg:
    set theme=($root)/grub2/themes/<имя_темы>/theme.txt
    export theme
    

    При необходимости и наличии шрифтов, использованных в теме, я решил их копировать в каталог /boot/grub2/fonts, а в каталог тем делать "мягкие" симлинки. Эти шрифты надо прописать и в grub.cfg, например:
    loadfont ($root)/grub2/fonts/Cantarell-24.pf2
    loadfont ($root)/grub2/fonts/DejaVu_Sans-10.pf2
    loadfont ($root)/grub2/fonts/DejaVu_Sans-12.pf2
    loadfont ($root)/grub2/fonts/DejaVu_Sans-14.pf2
    loadfont ($root)/grub2/fonts/DejaVu_Sans-16.pf2
    loadfont ($root)/grub2/fonts/DejaVu_Sans_Bold-14.pf2
    loadfont ($root)/grub2/fonts/unicode.pf2
    

    Если в процессе загрузки, перед показом меню нагрузки появляются сообщения вида
    /EFI/fedora/locale/ru.gmo not found

    Необходимо создать указанный каталог и скопировать файл локализации:
    $ mkdir /boot/efi/EFI/fedora/locale
    $ cp /usr/share/locale/ru/LC_MESSAGES/grub.mo /boot/efi/EFI/fedora/locale/ru.mo
    

    Подробности доступны тут и, самые детали, в манах.

    10. Проблемы с новой сетевой картой

    Если по каким-то причинам была сменена сетевая карта (например, как у меня, при смене "материнки" сменилась и интегрированная сетевая), то в dmesg можно увидеть следующие строки:
    $ cat /var/log/dmesg.old | grep eth
    [ 21.567523] r8169 0000:06:00.0: eth0: RTL8168b/8111b at 0xffffc90011914000, 1c:6f:65:d3:f2:41, XID 0c200000 IRQ 46
    [ 21.568636] e100 0000:04:06.0: eth1: addr 0xfbfff000, irq 20, MAC addr 00:02:b3:4a:1d:2d
    [ 22.110113] udev[598]: renamed network interface eth0 to eth2

    Т.е. новая сетевая udev-ом переим еновывается в системе с eth0 в eth2 и в дальнейшем система её видит, как совсем другую сетевую, которой, кроме всего прочего, надо снова прописывать все её параметры.
    Что всё вернуть "как надо" (если оно, конечно, надо - вдруг смена была временной, например) необходимо отредактировать файл /etc/udev/rules.d/70-persistent-net.rules, удалив/закоментировав "старую" и изменив NAME для новой. В моём случае:
    $ cat /etc/udev/rules.d/70-persistent-net.rules 
    # This file was automatically generated by the /lib/udev/write_net_rules
    # program, run by the persistent-net-generator.rules rules file.
    #
    # You can modify it, as long as you keep each rule on a single
    # line, and change only the value of the NAME= key.
    
    # PCI device 0x8086:0x1229 (e100)
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:02:b3:4a:1d:2d", ATTR{dev_id}=="0x0",
     ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
    
    # PCI device 0x10ec:0x8168 (r8169) - prediduschaya reviziya GA-870A-UD3
    # SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="1c:6f:65:87:86:42", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
    
    # PCI device 0x10ec:0x8168 (r8169)
    # SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="1c:6f:65:d3:f2:41", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="1c:6f:65:d3:f2:41", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
    

    Основное - всё, но требуется ещё поправить настройки NetworkManager, если он используется (по умолчанию). Для этого необходимо под root-ом зайти в каталог /etc/sysconfig/network-scripts/ и исправить файлы ifcfg-Auto_ethX, где X - номер сетевого интерфейса. Исправляется как нумерация интерфейсов (приводится в соответствие с нумерацией в системе), так и MAC-адреса, если необходимо (можно посмотреть командой ifconfig).
    И ещё желательно удалить MAC-адрес "старой" сетевой в параметре no-auto-default в файле /etc/NetworkManager/NetworkManager.conf, расположив (желательно) прописанные там MAC-адреса в порядке, соотвествующем нумерации сетевых в системе.

    11. Монтирование дисков

    1) По универсальным идентификаторам UUID
    Если есть вероятность переподключения "винтов" на разные интерфейсы (а на современный материнских платах тех же SATA интерфейсов бывает много), то можно запутаться в них и запутать программы, когда имеющийся на одном из "винтов" и необходимый для работы этой программы каталог/файл окажется доступным в другом каталоге, т.к. со сменой подключения именилась и точка монтирования.
    Чтобы этого избежать, можно воспользоваться универсальными идентификаторами, уникальными для каждого раздела на жёстком диске - UUID.
    Для этого необходимо воспользоваться специальной утилитой - blkid (запускается в правами root-а или через sudo).
    Утилита, запущенная без параметров, выдаст содержимое ранее сохранённой конфигурации, записанной в файле /etc/blkid/blkid.tab. Тут есть своё "но" - данная конфигурация может не быть актуальной, т.к. данный в файле не обновляются оперативно. Для того чтобы получить данные о дисках на момент запуска утилиты, необходимо запустить утилиты с параметрами:
    $ blkid -c /dev/null
    

    Если информация опять будет не актуальной, то необходимо переименовать файл blkid.tab и повторить предыдущую команду. Результат будет примерно таким:
    /dev/sda1: LABEL="Sistema" UUID="1CECA328ECA2FB62" TYPE="ntfs"
    /dev/sda2: LABEL="_RFRemix-14.1-x8" UUID="4a2f8ea7-b7c7-491c-9b0b-b6d3ba4e82b3" TYPE="ext4"
    /dev/sda3: UUID="f103d4ff-ba41-43e8-891a-b28faecca268" TYPE="swap"
    /dev/sda4: LABEL="Download" UUID="5894FD7294FD534C" TYPE="ntfs"
    /dev/sdb1: LABEL="Arhiv" UUID="cdbd6270-2d21-450d-86e9-c91a3603c58c" TYPE="ext4"
    /dev/sdc1: LABEL="Arhiv2" UUID="849884cc-6e70-4fc2-a516-7f6c408b6013" TYPE="ext4"
    /dev/sdd1: UUID="38e393be-9462-4f09-8ebc-fc5ed2af8aed" TYPE="crypto_LUKS"
    /dev/mapper/udisks-luks-uuid-38e393be-9462-4f09-8ebc-fc5ed2af8aed-uid500: LABEL="Apacer" UUID="666c57d5-02bc-421a-9ccb-de7461f6b20a" TYPE="ext4"

    Для разных ФС длина UUID будет разной: для NTFS и EXT4, например.
    Чтобы воспользоваться UUID в /etc/fstab, необходимо для планируемых к подключению разделах в этом файле сменить указатель на соответствующее этому устройству UUID, как здесь, например:
    UUID=5894FD7294FD534C				/mnt/Download		ntfs-3g		defaults,locale=ru_RU.UTF-8,forсe	0 0	# /dev/sda4
    UUID=cdbd6270-2d21-450d-86e9-c91a3603c58c	/mnt/Arhiv		ext4		defaults				0 0	# /dev/sdb1
    

    После этого необходимо перегрузиться. Если не было ошибок, то теперь можно "винты" перетыкивать как угодно - система по их UUID смонтирует их правильно. И хотя некоторым не нравится замена обычного имени файла-устройства на UUID (не наглядно), но по мне - очень даже удобно, а если надо с именем файла-устройства, то никто не мешает это посмотреть:
    $ blkid -c /dev/null
    

    Впрочем, можно указать путь к файлу-устройству через UUID и более привычным образом:
    /dev/disk/by-uuid/5894FD7294FD534C	/mnt/Download		ntfs-3g		defaults,locale=ru_RU.UTF-8,forсe	0 0	# /dev/sda4
    

    Более подробно: в man-ах или тут.

    2) NTFS-разделы
    NTFS разделы, смонтированные с параметрами
    defaults,locale=ru_RU.UTF-8,forсe
    

    будут представлять файлы и директории с правами 0777, что не очень удобно. Для указания своих параметров надо воспользоваться такими параметрами:
    noexec,rw,user,gid=10,uid=1000,dmask=7002,fmask=7113,locale=ru_RU.UTF-8,forсe
    

    Здесь права директории/файлы указанные параметрами dmask/fmask (инвертировано: реальные права по примеру 0775/0664).

    12. Переименование сетевых интерфейсов

    В современных дистрибутивах можно встретить весьма экзотические имена файлов устройств, например, enp0s29f0u2.
    Причина: работа udev, проявляющаяся в переименовании:
    systemd-udevd[674]: renamed network interface usb0 to enp0s29f0u2

    Лично мне такие имена не удобны, поэтому я стараюсь от них избавиться, т.е. избавиться от переименования.
    Это производится разными способами:
    1) в Интернете, в основном, предлагают сконфигурировать udev: "Изменить название enp2s0 на eth0, или udev - верните всё как было";
    2) лучшим, на мой взгляд, вариантом будет вообще запрет на переименование сетевых интерфейсов. Для этого надо ядру передать соответствуюущий параметр:
    net.ifnames=0
    

    Перезагрузка и... вуаля! :)

    13. Конвертирование DVD в удобоваримое

    Пересжатие DVD в MKV (x264, AAC)

    14. Настройка L2TP

    Настраиваем L2TP соединение с Beeline в Fedora\Russian Fedora Remix\RHEL\CentOS из Gnome 2 с помощь утилиты VPNPPTP

    15. Установка драйверов на видеокарты ATI и nVidia

    Установка драйверов ATI
    Установка драйверов ATI
    Активация динамического управлениия питанием для AMD Radeon: при загрузке ядру надо передать опцию "radeon.dpm=1".
    11.01.2017 - Правильная установка драйверов NVIDIA в Fedora
    21.11.2008 - Установка драйверов nVidia
    Wiki RusFedora - Установка драйверов nVidia

    16. Сборка RPM из SRPM

    Иногда необходимо собрать из пакета исходников в формате SRPM бинарный установочный пакет для своей архитектуры. Для этого скачиваем сам пакет, например, qmmp-plugins-freeworld:
    $ dnf download --source qmmp-plugins-freeworld
    

    Ставим необходимые для сборки пакеты :
    # утилиты для сборки
    $ dnf install rpmdevtools gcc gcc-c++
    # devel-пакеты, необходимые именно для нашего SRPM
    $ dnf builddep qmmp-plugins-freeworld-0.8.3-1.fc22.R.src.rpm
    

    Производим непосредственно сборку:
    $ rpmbuild --rebuild qmmp-plugins-freeworld-0.8.3-1.fc22.R.src.rpm
    

    В результате получим установочный RPM, размещённый после сборки в ~/rpmbuild/RPMS/x86_64/.

    17. Включение по сети, используя Wake-on-LAN

    На включаемой по WoL системе необходимо сделать предварительную подготовку:

  • 1. в BIOS включить поддержку WoL, например, установить "Enable" в параметре "Power-on Wake-on-LAN";
  • 2. так же ещё иногда необходимо разрешить устройствам в системе выдавать сигнал на включение, например, установить "Enable" для параметра "Power / APM Configuration / Power on by PCI-E devices";
  • 3. если включаемая система основана на Linux, то необходимо указать, чтобы она при выключении не выключала сетевой интерфейс:
    $ ethtool -s eth0 wol g
    

    где eth0 - соответствующий сетевой интерфейс.
    В Fedora Linux утилита ethtool не входит в составе системы по умолчанию, поэтому, возможно, её потребуется установить.
    Для целей запуска удалённой в сети машины в Linux-е есть утилитка ether-wake:
    $ ether-wake -i eth0 78:ac:c0:f7:92:af
    

    где eth0 - интерфейс, по которому отсылается "UDP пакет пробуждения"; 78:ac:c0:f7:92:af - MAC-адрес сетевого интерфейса устройства, которое "будится".

    18. Технические параметры системы

    а) информация о наличествующей оперативной памяти:
    $ free -m # -m - отобразить в более понятных мегабайтах
    

    А более наглядно:
    $ free -m | sed -n '2p' | awk '{s=$2} {print s, "Mb", "total"}'; free -m | sed -n '3p' | awk '{s=$3} {print s, "Mb", "used"}'
    

    Информация о процессор[е|ах]:
    $ dmesg | grep CPU0 | egrep -v "microcode|Thermal"
    

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

    19. Управление пользователями

    Действия по созданию/изменению/удалению пользователей и групп делаются только с правами суперпользователя.
    По умолчанию пользователю создаётся группа с таким же именем и UID-ом. При необходимости добавить пользователя в другую группу её надо создать предварительно, если ещё не зарегистрирована в системе:
    $ groupadd developers
    

    Теперь создаём пользователя, где созданную группу указываем в параметрах:
    $ useradd -G developers vivek
    

    Сразу задаём пароль созданного пользователя:
    $ passwd vivek
    

    Добавить пользователя в существующую группу:
    $ gpasswd -a term wheel
    

    Просмотреть данные по пользователю:
    $ id vivek
    uid=1002(vivek) gid=1003(vivek) groups=1003(vivek),10(wheel),1004(developers)

    В случае необходимости добавить пользователя в какую-либо ранее созданную группу, необходимо с правами суперпользователя выполнить следующее:
    $ gpasswd -a <имя_пользователя> vboxusers
    

    В данном примере пользователь добавлен в группу vboxusers, которая требуется для работы в программе VirtualBox, например, для подключения в гостевую систему реальных подключенный USB-устройств.
    При необходимости войти в консоли другим пользователем:
    $ su - vivek
    

    В примере "-" указывает, что устанавливаются переменные пользователя, с чьими правами мы заходим в систему.
    Регистрация нового пользователя и назначение ему пароля:
    $ useradd -m -g users -G audio,wheel -s /bin/bash NewUser
    $ passwd NewUser
    

    20. Поиск файлов с текстом

    Стандартная утилита для поиска файлов - find. Например:
    $ find / -name *top*
    

    найдёт все файлы, содержащие в имени top.
    Для целей поиска файлов с текстом пользуются такой конструкцией:
    $ find / -type f -print | xargs grep "что_ищем" # вариант 1 (предпочтительней)
    $ find / -type f -exec grep "text" {} \;        # варинат 2 (медленней)
    

    Но кроме этого можно воспользоваться командой cat (подсвечивает найденое):
    $ grep -r 'что-то-ищем' /                       # вариант 1
    $ grep -lir 'чТо ИщЕм' /                        # вариант ignore-case
    

    Но find - более гибкий вариант.
    Более подробно о поиске: ссылка1, ссылка2, ссылка3.

    21. Вывод списка файлов (по типам)

    Без рекурсии (в текущем каталоге):
    ls -l | grep -E '^-'                       # обычные файлы, включая исполняемые
    ls -l | grep -E '^l'                       # символические ссылки
    ls -l | grep -E '^d'                       # под-каталоги
    find ./ -maxdepth 1 -executable | cut -c3- # только исполняемые файлы
    

    С рекурсией (начиная с указанного каталога):
    find /path/to/directory -type f            # обычные файлы, включая исполняемые
    find /path/to/directory -type l            # символические ссылки
    find /path/to/directory -type d            # под-каталоги
    find /path/to/directory -executable        # только исполняемые файлы
    

    Можно всё ограничить командой find, указывая (или не указывая) необходимую глубину вложенности простматриваемых каталогов опцией -maxdepth X, где X - глубина вложения (1 - текущий каталог)

    22. Конвертирование аудио (с "разрезкой") и видео файлов

    Ну вот и у меня, как и у многих, возникла проблема: есть файлы APE (образ аудиодиска), и CUE к нему (названия треков, данные альбома и временные точки по трекам) и хочется всё это превратить во что-то более удобоваримое (для меня): MP3, OGG, FLAC. Или любой другой формат в какой-либо ещё.
    GUI утилиты, конечно, интересны, но только по конечному результату. А вот консольные программы куда гибче и интересней сами по себе. :)   Вот и хороший ответ нашёлся: shntool.
    Установим её и необходимы пакеты:
    $ sudo yum install shntool cuetools mac lame
    

    Из этого: shntool - сами утилиты, cuetools - для "разбора" CUE-файлов, mac - кодеки для APE (Monkey's Audio Codec), lame - для поддержки MP3.
    Приступаем...
    1) если надо APE в WAV, то всё просто:
    $ shnsplit -f muzik.cue -t "%n - %t" muzik.ape
    

    2) если надо APE в MP3, то немного сложнее:
    $ shnsplit -o 'cust ext=mp3 lame --vbr-old -V3 - %f' -f muzik.cue -t "%n - %t" muzik.ape
    # или так (с заполнением тегов)
    $ shnsplit -o 'cust ext=mp3 lame --vbr-new -b 256 -V 4 --tt "New Age" --ta "Ambience Dorama" \
             --tl "Lyricarium" --ty "2012" - %f' -f muzik.cue -t "%n - %t" muzik.ape
    # так, если APE уже "порезаны" и надо только сконвертировать
    $ find ./*-name *.ape -exec shntool conv -o 'cust ext=mp3 lame --vbr-new -b 256 -V 4 - %f' {} \;
    

    3) если надо APE в FLAC:
    $ shnsplit -o flac -f muzik.cue -t "%n - %t" muzik.ape
    

    4) если надо FLAC в FLAC (с нарезкой согласно *.cue):
    $ cuebreakpoints muzik.cue | shnsplit -o flac -f muzik.cue -t «%n–%t» muzik.flac
    

    5) если надо AudioCD "сграбить" на диск:
    # простейший вызов
    $ cdparanoia -B
    # более полный параметр
    $ cdparanoia -B -S 24 -Z 1-7 ~/Музыка/cd1/
    

    где:
    - B - записываем каждый трек отдельным файлом
    - S 24 - указываем скорость считывания
    - Z - даем команду не восстанавливать поврежденные треки (царапины на диске и проч.) в целях увеличения скорости
    - 1-7 сохраняем с 1 по 7 треки.
    Можно сразу с конвертацией в MP3:
    # одного трека
    $ cdparanoia -B 1 - |  lame -b 192 - 1.mp3
    # группу указанный треков (в примере 1, 2, 3, 10):
    $ for i in `seq 1 2 3 10`; do cdparanoia -B $i - | lame -b 192 - $i.mp3; done
    # или
    $ for i in seq 1 2 3 10; do cdparanoia -B $i - | lame -b 192 - $i.mp3; done
    

    6) если есть WAV и все файлы в текущем каталоге надо в MP3:
    $ find . -iname "*.wav" -exec lame '-b 320 -q 0' '{}' ';'
    

    7) если есть MP3 и все файлы в текущем каталоге надо в WAV:
    $ find . -iname "*.mp3" -exec lame '--decode' '{}' ';'
    

    Если есть необходимость сконвертировать MP3 так же в MP3, но с другим битрейтом, то данные утилиты не подойдут, но можно воспользоваться такой конструкцией:
    $ cd /<исходный_каталог>/; for f in *.[mM][pP]3; do lame -V3 --vbr-old "$f" \
            "/<каталог_назначения>/$f"; id3cp "$f" "/<каталог_назначения>/$f" ; done
    

    Т.к. зачастую CUE файлы создаются в Вантузе, то кодировка будет CP1251. Если всё в латинице - то проблем нет, а если есть кириллица, то ничего мы не увидим (по крайней мере читабельного). Но воспользуемся для этих целей старым добрым iconv для конвертирования в UTF-8:
    $ iconv -f CP1251 -t UTF-8 muzik.cue > muzik2.cue
    

    Кроме вышеуказанных программ есть ещё очень функциональная программа ffmpeg.
    Вот конвертация звуковых файлов разных форматов в разные форматы:
    ## AAC - Advanced Audio Coding
    # aac -> mp3
    $ ffmpeg -i audio.aac -acodec libmp3lame audio.mp3
    # aac -> wav
    $ ffmpeg -i audio.aac audio.wav
    # aac -> ac3
    $ ffmpeg -i audio.aac -acodec ac3 audio.ac3
    # aac -> ogg
    $ ffmpeg -i audio.aac -libvorbis audio.ogg
    ## AC3 - Acoustic Coder 3
    # ac3 -> mp3
    $ ffmpeg -i audio.ac3 -acodec libmp3lame audio.mp3
    # ac3 -> wav
    $ ffmpeg -i audio.ac3 audio.wav
    # ac3 -> aac
    $ ffmpeg -i audio.ac3 -acodec libfaac audio.aac
    # ac3 -> ogg
    $ ffmpeg -i audio.ac3 -acodec libvorbis audio.ogg
    ## OGG - Free, open standard container
    # ogg -> mp3
    $ ffmpeg -i audio.ogg -acodec libmp3lame audio.mp3
    # ogg -> wav
    $ ffmpeg -i audio.ogg audio.wav
    # ogg -> aac
    $ ffmpeg -i audio.ogg  -acodec libfaac audio.aac
    # ogg -> ac3
    $ ffmpeg -i audio.ogg -acodec ac3 audio.ac3
    ## WAV - Waveform Audio File Format
    # wav -> mp3
    $ ffmpeg -i audio.wav -acodec libmp3lame audio.mp3
    # wav -> ogg
    $ ffmpeg -i audio.wav  -acodec libvorbis audio.ogg
    # wav -> aac
    $ ffmpeg -i audio.wav  -acodec libfaac audio.aac
    # wav -> ac3
    $ ffmpeg -i audio.wav -acodec ac3 audio.mp3
    

    Или сразу все файлы в каталоге в четыре потока одновременно:
    $ find . -name '*.aac' -print | parallel -j 4 ffmpeg -i {} -acodec libmp3lame '{.}.mp3' ;
    

    Если надо "вытянуть" аудиодорожку из видеофайла:
    # в формате AAC
    $ ffmpeg -i ./videoplayback.flv -vn -acodec copy output.aac
    # или сразу в MP3 с нужным битрейтом и частотой дорожку 2
    $ ffmpeg -i input.mp4 -vn -ab 128k -ar 44100 -ac 2 -f mp3 output.mp3
    

    Вообще, у ffmpeg есть очень много полезных возможностей по манипуляциям с аудио и видео файлами. :)
    Иногда звук в имеющемся аудиофайле тихий. Можно его нормализовать, например, так:
    # установим "нормализатор"
    $ yum install normalize
    # непосредственно нормализация
    $ normalize -m -v file.mp3
    

      WMA
    В случае с WMA всё сложней: не нашёл более простого способа, чем описано ниже.
    Скачиваем последние версии исходников libav с архива, содержащие утилиту avconv:
    $ mkdir ~/src
    $ cd ~/src
    $ wget https://libav.org/releases/libav-11.8.tar.gz
    $ tar -xvzf libav-11.8.tar.gz
    $ cd libav-11.8
    

    Конфигурируем сборку исходников и компилируем:
    # у меня не собиралось с libvpx (проблема совместимости версий) - убирал
    $ ./configure --extra-cflags=-I/opt/local/include --extra-ldflags=-L/opt/local/lib --enable-gpl --enable-version3 --enable-libvpx
    $ make
    

    От пользователя с правами root:
    $ cd ~/src/libav-11.8
    $ make install
    

    Теперь можно конвертировать:
    # WMA -> WAV
    $ avconv -i 'file_name.wma' 'file_name.wav'
    # WMA -> MP3 (у меня не получилось)
    $ avconv -i 'file_name.wma' -acodec libmp3lame -ab 128k 'file_name.mp3'
    

    Возможно есть более простые способы, но я пока не знаю их.
      Конвертирование видео
    ## MP4 -> AVI
    # один файл
    $ ffmpeg -i "FileName.mp4" -vcodec:mpeg4 -qscale:5 -acodec:ac3 -ar:48000 -ab:192k "FileName.avi"
    # без смены аудиокодека - для всех файлов в каталоге (в ZSH)
    $ for file in *.mp4; do ffmpeg -i "$file" -vcodec mpeg4 -qscale 5 -acodec ac3 -ar 48000 -ab 192k "`basename "$file" .mp4`.avi" ; done;
    # со сменой разрешения видео и кодека аудио на MP3 - для всех файлов в каталоге (в ZSH)
    $ for file in *.mp4; do ffmpeg -i "$file" -vcodec libxvid -qscale 5 -s 640x360 -acodec libmp3lame -ar 48000 -ab 128k "`basename "$file" .mp4`.avi" ; done;
    ## для перекодирования видео с Youtube со сжатием 6
    # со сменой разрешения до 640x360
    $ for file in *.mp4; do ffmpeg -i "$file" -vcodec libxvid -qscale 6 -s 640x360 -acodec libmp3lame -ar 44100 -ab 96k "`basename "$file" .mp4`.avi" ; done;
    # без смены разрешения
    $ for file in *.mp4; do ffmpeg -i "$file" -vcodec libxvid -qscale 6 -acodec libmp3lame -ar 44100 -ab 96k "`basename "$file" .mp4`.avi" ; done;
    

    Сохранить информацию со всех файлов MP4 в файл info.txt:
    $ for file in *.mp4; do ffmpeg -i "$file" 2>>info.txt >/dev/null ; done;
    

    Настройка качества кодирования в FFmpeg: переменный и постоянный битрейт для Mpeg4
    ffmpeg Documentation
    Дополнительная информация по работе с ffmpeg и иными программами: ссылка 1, ссылка 2, ссылка 3, ссылка 4.

    23. Подключение видеокамер

    Когда камера определилась, как устройство /dev/video0, то его активация и открытие картинки через MPlayer:
    $ mplayer tv:// -tv driver=v4l2:device=/dev/video0
    

    Дальше уже можно экспериментировать.

    24. Подключение "Яндекс-Диск"

    $ sudo mount -t davfs -o uid=user,gid=user https://webdav.yandex.ru/ /mnt/yandex/
    

    Будут запрошены имя пользователя и пароль.

    25. Подключение мобильных устройств по Media Transfer Protocol (MTP)

    Поддержка MTP осуществляется несколькими программами.
    Например, jmtpfs, работающая через fuse:
    $ dnf install jmtpfs
    # монтирование устройств
    $ jmtpfs /mnt/tmpfs
    # отмонтирование
    $ fusermount -u /mnt/tmpfs
    

    26. Настройка сетевых интерфейсов

    №1. Смена MAC-адреса
    MAC-адрес можно менять несколькими способами:
    если используется NetworkManager - через интерфейс настройки сетевого подключения, если старый
    $ ifconfig eth0 down
    $ ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx
    $ ifconfig eth0 192.168.xx.xx netmask 255.255.255.248
    $ ifconfig eth0 up
    $ ifconfig eth1 down
    $ ifconfig eth1 hw ether xx:xx:xx:xx:xx:xx
    $ ifconfig eth1 up
    

    №2. Подключение к провайдеру
    Второе действие - настройка доступа к провайдеру: если GUI-вые программы дают сбой, то pppoeconfig почти всё сделала как надо (там всё просто и понятно). "Почти", т.к. запросила на автоматическое занесение адресов DNS серверов при получении их от провайдера после авторизации, но ничего не занеслось. Поэтому прописываем их (провайдерские или любые другие) в /etc/resolv.conf ():
    nameserver 8.8.8.8
    nameserver 88.87.64.6
    nameserver 88.87.65.3
    

    Теперь для подключения к Интернету надо дать команду:
    $ pon dsl-provider
    

    Для отключения:
    $ poff
    

    Для просмотр состояния подключения:
    $ plog
    

    27. Работа в GitHub

    а) Регистрация на GitHub и настройка доступа

    Регистрация проводится штатно и понятно: тут проблем не должно быть.
    Входим в созданный профиль и там - в пункт "Your profile". Выбираем "Edit profile".
    Генерируем и добавляем ключи SSH и GPG.

    1) Генерация SSH ключа

    Создаём ключ с параметрами: алгоритм ECDSA, длина ключа 521 бит, файл ключа ssh_ecdsa_GIT:
    $ ssh-keygen -t ecdsa -b 521 -f ssh_ecdsa_GIT
    

    Создаётся быстро: надо лишь ввести (при необходимости/желании) пароль для защиты ключа. Многие используются ключи без пароля, чтобы пользоваться сервисами (GitHub, подключение по SSH к серверам и пр.) без ввода пароля.
    Созданный ключ состоит из двух файлов:
    1) ssh_ecdsa_GIT - закрытый (секретный) ключ;
    2) ssh_ecdsa_GIT.pub - открытый (публичный) ключ (сертификат).
    Оба файла сохранены в каталоге ~/.ssh/. При необходимости открытый ключ можно восстановить из секретного.
    Для работы с GitHub по SSH необходимо связать сайт с репозиториями с созданным закрытым SSH ключом. Для этого в файл ~/.ssh/config добавляем параметры для узла github.com:
    Host github.com
    	IdentityFile ~/.ssh/ssh_ecdsa_GIT
    	Hostname github.com
    

    Дополнительная информация
    1) Connecting to GitHub with SSH (официальное руководство)

    2) Генерация GPG ключа и работа с ключами

    Генерация:
    $ gpg2 --full-generate-key
    

    Резервная копия:
    # открытого ключа (локально в файл)
    $ gpg2 --export --armor mypost@mail.ru > mypost-mail.ru.pub
    # открытого ключа (на сервер)
    $ gpg2 --keyserver pgp.mit.edu --send-key 17969D0E313235DE5C3C7ADA928CE1B6D921E28A
    # секретного ключа (локально в файл)
    $ gpg2 --export-secret-keys --armor mypost-mail.ru.pub > mypost-mail.ru
    

    Импорт ключа:
    # из файла
    $ gpg2 --import mypost-mail.ru
    $ gpg2 --import mypost-mail.ru.pub
    # с сервера ключей
    $ gpg2 --keyserver pgp.mit.edu --recv-keys 17969D0E313235DE5C3C7ADA928CE1B6D921E28A
    

    "Отпечаток" ключа:
    $ gpg2 --fingerprint mypost@mail.ru
    

    Просмотр списка ключей:
    # сокращённый номер ключа
    $ gpg2 --list-keys
    $ gpg2 --list-secret-keys
    $ gpg2 --list-public-keys
    # полный номер ключа
    $ gpg2 --keyid-format LONG --list-keys
    

    Удаление ключа (по полному номеру):
    $ gpg2 --delete-secret-keys 17969D0E313235DE5C3C7ADA928CE1B6D921E28A
    $ gpg2 --delete-keys 17969D0E313235DE5C3C7ADA928CE1B6D921E28A
    

    Описаны базовые действия. Для получения большей информации:
    1) Signing commits with GPG (официальное руководство)
    2) GnuPG на ArchLinux
    3) Использование PGP/GPG, руководство для нетерпеливых

    б) Установка и первичная настройка

    Устанавливаем поддержку Git;
    $ dnf install git
    

    Если необходим выход через proxy-сервер, то есть два варианта:
    1) выполняем команду, создающую конфигурационный файл с необходимыми параметрами:
    $ git config --global http.proxy http://proxyuser:proxypass@proxyaddress:8080
    

    2) или сразу создаём конфигурационный файл ~/.gitconfig с содержимым:
    [http]
    proxy = http://proxyuser:proxypass@proxyaddress:8080
    

    в) Создание локальной копии репозитория и работа с ней

    Можно использовать три способа (протокола):
    # по HTTPS
    $ git clone https://github.com/lesovsky/zabbix-extensions/
    # по собственному протоколу Git
    $ git clone git://github.com/lesovsky/zabbix-extensions/
    # через SSH (настройка в пункте №1)
    $ git clone git@github.com/lesovsky/zabbix-extensions/
    

    У многих этим и заканчивается. :)

    №1. Публикация исходных текстов
    Для публикации своего проекта необходимо вначале создать локальный репозиторий, добавить к него все файлы проекта, а потом перенести в удалённый репозиторий на GitHub:
    # входим в каталог проекта
    $ cd ~/src/NetCoreConsoleApp
    # инициализируем локальный репозиторий
    $ git init
    # добавляем все файлы проекта в локальный репозиторий
    $ git add .
    # принимаем все изменения проекта в репозиторий (commit-им
    #    и комментируем его [commit] "first commit"
    $ git commit -m "first commit"
    # связываем локальный и удалённый репозиторий
    $ git remote add origin git@github.com:UserName/NetCoreConsoleApp.git
    # синхронизируем удалённый репозиторий с локальным (переносим его в удалённый)
    $ git push -u origin master
    

    С уже готовым локальным репозиторием в дальнейшем работаем так: копируем новые и изменённые файлы в требуемое место в структуре проекта и выполняем команды:
    # смотрим изменения
    $ git fetch
    # скачиваем изменения
    $ git pull
    # добавляем файлы в проект
    $ git add .
    # принимаем все изменения в локальный репозиторий
    $ git commit -m "Обновлены скрипты SQL и запуска мониторинга"
    # пересылаем все изменения из локального репозитория в основной
    $ git push
    # проверяем статус репозитория
    $ git status
    

    Если ваши исправления имеют приоритет, то так:
    $ git add .
    $ git commit -m "Коррекция состава сущностей и очередей"
    $ git fetch
    $ git pull
    $ git push
    

    Проверяем. :)

    №2. Смена "ветки" (branches) разработки
    Для того, чтобы извлечь ветку (будут получены все удалённые ветви):
    $ git fetch origin
    

    Посмотреть все доступные для проверки ветви:
    $ git branch -v -a
    

    Зная удалённые ветви можно проверить интересующую, создав локальную копию:
    $ git checkout -b test origin/test
    

    Теперь у нас есть локальная ветка test, связанная с удалённой origin/test.

    №3. Создание новой ветки
    # создание локальной ветки на основе ветки "по умолчанию"
    $ git checkout -b <new_branch_local>
    # слияние с целевой веткой (на основе которой будем работать)
    $ git merge develop
    # создание удалённой ветки, связанной с нашей локальной
    $ git push --set-upstream origin <new_branch_remote>
    

    Обычно new_branch_remote совпадает с new_branch_local, но это не обязательно.
    Дальше вся работа уже как обычно.

    №4. Перенос коммита в другую ветку
    Переходим в целевую ветку (куда переносим коммит) и выполняем:
    $ git cherry-pick 4288bd5ee41d778c58fc99fc6a8b6d5e65f54712
    $ git push
    

    Возможно применение и коротких хэшей коммитов.

    №5. Удаление веток
    # локальной ветки develop
    $ git branch -d develop
    # удалённой ветки develop
    $ git push origin --delete develop
    

    ВАЖНО: Удаляемая ветка не должна быть веткой "по умолчанию".

    №6. Мелкие подробности
    Переименование репозитория:
    $ git remote rename origin bTCore
    

    Подробная информация о репозитории:
    $ git remote -v
    

    28. Установка локали

    Иногда (например, при подготовке подготовке образа docker контейнера) системная локаль остаётся "по умолчанию", т.е. на команду locale получаем ответ:
    LANG=
    LC_CTYPE="POSIX"
    LC_NUMERIC="POSIX"
    LC_TIME="POSIX"
    LC_COLLATE="POSIX"
    LC_MONETARY="POSIX"
    LC_MESSAGES="POSIX"
    LC_PAPER="POSIX"
    LC_NAME="POSIX"
    LC_ADDRESS="POSIX"
    LC_TELEPHONE="POSIX"
    LC_MEASUREMENT="POSIX"
    LC_IDENTIFICATION="POSIX"
    LC_ALL=

    Предположим, что нам надо установить русскую локаль ru-RU.UTF-8.
    Проверяем наличие готовой локали в системе:
    $ locale -a | grep ru
    

    Если в ответе нет ни одной строки, значит надо подготовить файлы нашей локали:
    $ localedef -i ru_RU -f UTF-8 ru_RU.UTF-8
    

    Утилита берет из папки /usr/share/i18n/locales/ файл ru_RU (это файл с русской локалью) и из папки /usr/share/i18n/charmaps файл UTF-8.gz (это символьная карта для юникода) и на основе этих файлов генерирует нужную нам локаль ru_RU.UTF-8.
    Файлы, находящиеся в папке /usr/share/i18n/ входят в состав пакета glibc-common и если вы их не наблюдаете там, то необходимо разбираться с самим glibc-common.
    Теперь (или если у нас нужная локаль была в системе изначально) указываем системе использовать её:
    1) создаём файл /etc/sysconfig/i18n со следующим содержимым:
    LANG="ru_RU.UTF-8"
    SUPPORTED="ru_RU.UTF-8:ru_RU:ru"
    SYSFONT="latarcyrheb-sun16"
    

    2) создаём (или изменяем) файл /etc/locale.conf со следующим содержимым:
    LANG="ru_RU.UTF-8"
    

    Перегружаемся и остаётся последнее:
    1) в общем случае:
    export LC_ALL="ru_RU.UTF-8"
    export LANG="ru_RU.UTF-8"
    export LANGUAGE="ru_RU.UTF-8"
    

    или заносим эти переменные в файл /etc/environment:
    LC_ALL="ru_RU.UTF-8"
    LANG="ru_RU.UTF-8"
    LANGUAGE="ru_RU.UTF-8"
    

    2) в случае сборки docker контейнера добавляем в Dockerfile:
    ENV LC_ALL="ru_RU.UTF-8" \
    	LANG="ru_RU.UTF-8" \
    	LANGUAGE="ru_RU.UTF-8"
    

    Если всё сделали правильно, то на команду locale увидим теперь такой ответ:
    LANG="ru_RU.UTF-8"
    LC_CTYPE="ru_RU.UTF-8"
    LC_NUMERIC="ru_RU.UTF-8"
    LC_TIME="ru_RU.UTF-8"
    LC_COLLATE="ru_RU.UTF-8"
    LC_MONETARY="ru_RU.UTF-8"
    LC_MESSAGES="ru_RU.UTF-8"
    LC_PAPER="ru_RU.UTF-8"
    LC_NAME="ru_RU.UTF-8"
    LC_ADDRESS="ru_RU.UTF-8"
    LC_TELEPHONE="ru_RU.UTF-8"
    LC_MEASUREMENT="ru_RU.UTF-8"
    LC_IDENTIFICATION="ru_RU.UTF-8"
    LC_ALL="ru_RU.UTF-8"

    Дополнительная информация:
    1) How to change system locale on RHEL7?;
    2) CentOS : Настройка : Русский язык в консоли;
    3) для работы с локалью испольуется утилита localectl, являющаяся часть systemd, но не всегда применимая: например, в контейнерах на основе ОС с systemd (он не работает в контейнере):
    $ localectl set-locale LANG=ru_RU.UTF-8
    

    4) для генерации локалей в Debian/Ubuntu требуется использовать утилиту:
    $ locale-gen
    



    размещено: 2011-08-07,
    последнее обновление: 2020-03-22,
    автор: Fomalhaut



  •  

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

    © lissyara 2006-10-24 08:47 MSK

    Время генерации страницы 0.1053 секунд
    Из них PHP: 81%; SQL: 19%; Число SQL-запросов: 36 шт.
    Исходный размер: 151436; Сжатая: 29059