Мы — долго запрягаем, быстро ездим, и сильно тормозим.



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



  • Хостинг HOST-FOOD

    2014-07-27, lissyara
    gmirror

    Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
    2013-08-20, zentarim
    Scan+Print server FreeBSD 9

    Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
    подписка

        вверх      
    Статистика сайта
    Сейчас на сайте находится: 11 чел.
    За последние 30 мин было: 70 человек
    За сегодня было
    816 показов,
    237 уникальных IP
     

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

    © lissyara 2006-10-24 08:47 MSK

    Время генерации страницы 0.0802 секунд
    Из них PHP: 56%; SQL: 44%; Число SQL-запросов: 36 шт.
    У Вас отключено GZIP-сжатие в браузере. Размер страницы 166856