Начальная настройка системы.

Установка, настройка, эксплуатация.

Модератор: ROOT

Начальная настройка системы.

Сообщение ROOT » 17 июн 2017, 14:26

Оглавление


Темы
 Настройка DNF 
 Удаление старых ядер 
 Устанавливаем дополнительное ПО 
 Настраиваем локализацию и русскую раскладку 
 Настройка переменных окружения 
 Изменение приветственного сообщение 
 Задаём параметры сетевой карты 
 Присваиваем сетям имена 
 Настраиваем имя хоста 
 Права на вновь создаваемые каталоги и файлы 
 Настройка редактора EMACS 
 SELinux 
 Настройка редактора Vim 
 Отключаем неиспользуемые сервисы 
 Включаем NumLock для консоли 
 Смена оболочки 



 Настройка DNF 
Для смены ответа по умолчанию при установке пакетов нужно в файле /etc/dnf/dnf.conf прописать или изменить опцию defaultyes
Код: выделить все
defaultyes=True

и тогда подразумеваемый по умолчанию ответ будет "Yes", а не "No" как по умолчанию.
Код: выделить все
Все правильно? [Д/н]:

Ограничиваем число, хранимых ядер в системе, двумя. Изменяем параметр installonly_limit
Код: выделить все
installonly_limit=2



 Удаление старых ядер ??? 
Первый вопрос об установленных ядрах, используйте следующую команду:
Код: выделить все
rpm -q kernel

Установите пакетный инструментов с именем dnf-utils (представляет собой набор дополнительных инструментов для инструмента dnf).
Код: выделить все
dnf install dnf-utils

Давайте начнем с этой командой, мы видим, что несколько пакетов, казалось бы установлены несколько раз:
Код: выделить все
package-cleanup --cleandupes

Если в базе данных yum есть какие-либо проблемы, вы можете увидеть эту команду:
Код: выделить все
package-cleanup --problems

Чтобы удалить установленные старые ядра из дистрибутива Fedora, используйте команду:
Код: выделить все
package-cleanup --oldkernels --count=2

Для Fedora 27 используйте команду:
Код: выделить все
package-cleanup --oldkernels 2

Для автоматического удаления ядер при обновлении необходимо изменить параметр installonly_limit в /etc/yum.conf или /etc/dnf/dnf.conf.
Код: выделить все
installonly_limit=2

получить список потерянных пакетов, находящихся в настоящее время в системе:
Код: выделить все
package-cleanup --leaves



 Устанавливаем дополнительное ПО 
Для удобства последующих настроек переменных окружения
DFC ставится из репозитория rpmsphere-d, который в свою очередь является частью rpmsphere. Страница репозитория находится тут. Скачаем конфигурационный файл при помощи wgrt:
Код: выделить все
wget -O /etc/yum.repos.d/rpmsphere.repo https://rpmsphere.github.io/rpmsphere.repo

Или создайте конфигурационный файл для репозитория rpmsphere.repo вручную:
e /etc/dnf.repos.d/rpmsphere.repo
Код: выделить все
[rpmsphere-basearch]
name=RPM Sphere - Basearch
baseurl=https://github.com/rpmsphere/$basearch/raw/master/
skip_if_unavailable=True
repo_gpgcheck=0
gpgcheck=0
sslverify=False
enabled=1

[rpmsphere-noarch]
name=RPM Sphere - Noarch
baseurl=https://github.com/rpmsphere/noarch/raw/master/
skip_if_unavailable=True
repo_gpgcheck=0
gpgcheck=0
sslverify=False
enabled=1

[rpmsphere-source]
name=RPM Sphere - Source
baseurl=https://github.com/rpmsphere/source/raw/master/
skip_if_unavailable=True
repo_gpgcheck=0
gpgcheck=0
sslverify=False
enabled=0

[rpmsphere-todo]
name=RPM Sphere - Todo
baseurl=https://github.com/rpmsphere/todo/raw/master/
skip_if_unavailable=True
repo_gpgcheck=0
gpgcheck=0
sslverify=False
enabled=0

На текущий момент не существует репозитория под 29 версию Fedora, поэтому вместо переменной $releasever ставим "28"
Теперь обновляем систему и устанавливаем программы которые участвуют в минимальной настройке системы.
Код: выделить все
dnf update
dnf install most tmux emacs-nox inxi dfc git

Для оптимизации работы с батареей для ноутбуков можно поставить пакет TLP. TLP предоставляет вам преимущества расширенного управления питанием для Linux без необходимости разбираться во всех технических деталях. TLP поставляется с конфигурацией по умолчанию, которая уже оптимизирована для работы от батареи. Также необязательная установка пакета smartmontools включает данные SMART жесткого диска в tlp-stat (smartctl).
Код: выделить все
dnf install tlp

Простой Java анализатор с разделителями и фиксированной шириной файлов. Обрабатывает CSV, Excel CSV, Tab, разделители каналов, и это лишь некоторые из них. Сопоставляет позиции столбцов в файле с понятными именами через XML.
Код: выделить все
dnf install flatpack



 Настраиваем локализацию и русскую раскладку 
Локализация системы
Код: выделить все
export LANG="ru_RU.UTF-8"
localectl set-locale LANG="ru_RU.UTF-8"
localectl set-keymap us ru --no-convert
localectl set-x11-keymap us,ru pc105 grp:ctrl_shift_toggle --no-convert
localectl status
   System Locale: LANG=ru_RU.UTF-8
       VC Keymap: us
VC Toggle Keymap: ru
      X11 Layout: us,ru
       X11 Model: pc105
     X11 Variant: grp:ctrl_shift_toggle


e /etc/locale.conf
Код: выделить все
LANG=ru_RU.UTF-8
#LC_COLLATE=C

Теперь после перезагрузки мы сможем в консоли переключать раскладку нажимая на Ctrl+Shift.
Ну, а пока перезагружаться не будем – загрузим вручную нужную раскладку командой:
Код: выделить все
loadkeys /lib/kbd/keymaps/legacy/i386/qwerty/ru.map.gz



Настраиваем шрифт консоли
Устанавливаем набор консольных шрифтов terminus
Код: выделить все
dnf install terminus-fonts-console

Теперь разберёмся с автоматической шрифтов для консоли
Способ 1(настройка vconsole)
e /etc/vconsole.conf
Код: выделить все
#VER 1
KEYMAP=us
FONT=ter-u30b
KEYMAP_TOGGLE=ru

Для загрузки шрифта без перезапуска системы можно воспользоваться командой
Код: выделить все
setfont -C /dev/tty1 ter-u30b

Шрифты расположены в /lib/kbd/consolefonts/
ter-u30b.psf.gz
Специальная версия шрифта для широкоформатного монитора
(2.94 KiB) Скачиваний: 93

Способ 2(через параметры ядра)
Для смены установленных параметров можно воспользоваться потоковым редактором sed (параметры должны существовать)
Код: выделить все
sed -i --follow-symlinks 's/vconsole.font=[^ ]*/vconsole.font=ter-u30b/g' /etc/sysconfig/grub
sed -i --follow-symlinks 's/vconsole.keymap=[^ ]*/vconsole.keymap=ru/g' /etc/sysconfig/grub

Или добавляем в строку GRUB_CMDLINE_LINUX параметры для vconsole
e /etc/default/grub
Код: выделить все
GRUB_CMDLINE_LINUX="... vconsole.font=ter-u30b vconsole.keymap=ru ..."

Затем обновляем конфигурацию GRUB
Код: выделить все
# For BIOS
grub2-mkconfig -o /etc/grub2.cfg
# For UEFI
grub2-mkconfig -o /etc/grub2-efi.cfg

grub2.cfg и grub2-efi.cfg являются символьными ссылками которые ссылаются на реальные конфигурационные файлы, которые соответствуют BIOS или UEFI платформе


Проверяем установлен ли пакет workaround-cyrillic-console и выносим его если таковой стоит
Код: выделить все
dnf list installed | grep "workaround-cyrillic-console" && dnf remove workaround-cyrillic-console

Альтернативный шрифт
Подключаем репозиторий russianfedora-free
устанавливаем пакет workaround-cyrillic-console
Код: выделить все
dnf install workaround-cyrillic-console

Добавляем параметры ядра в конфигурацию GRUB
Код: выделить все
sed -i --follow-symlinks 's/vconsole.font=[^ ]*/vconsole.font=atarcyrheb-sun32/g' /etc/sysconfig/grub
sed -i --follow-symlinks 's/vconsole.keymap=[^ ]*/vconsole.keymap=ru/g' /etc/sysconfig/grub

Или добавляем в строку GRUB_CMDLINE_LINUX параметры для vconsole
e /etc/default/grub
Код: выделить все
GRUB_CMDLINE_LINUX="... vconsole.font=atarcyrheb-sun32 vconsole.keymap=ru ..."

Затем обновляем конфигурацию GRUB
Код: выделить все
# For BIOS
grub2-mkconfig -o /etc/grub2.cfg
# For UEFI
grub2-mkconfig -o /etc/grub2-efi.cfg

grub2.cfg и grub2-efi.cfg являются символьными ссылками которые ссылаются на реальные конфигурационные файлы, которые соответствуют BIOS или UEFI платформе
Настраиваем шрифт консоли
e /etc/vconsole.conf
Код: выделить все
KEYMAP=us
FONT=latarcyrheb-sun32
KEYMAP_TOGGLE=ru

Локализация системы
e /etc/locale.conf
Код: выделить все
LANG=ru_RU.UTF-8
LC_NUMERIC=C

Устанавливаем шрифт для конкретного TTY
Код: выделить все
setfont -C /dev/tty1 latarcyrheb-sun32



 Настройка переменных окружения 
e ~/.bashrc
Код: выделить все
# .bashrc
# VER 4
function set_prompt_note() {
    export DA=`date "+%A, %H:%M %Z, %d %B"`
    export BAT=`acpi -V |cut -d " " -f 1,3-5 | head -n1`
    export Yellow='\[\e[0;33m\]'
    export Red='\[\e[0;31m\]'
    export Green='\[\e[0;32m\]'
    export Blue='\[\e[0;34m\]'
    export End='\[\e[0m\]'
    export KOD="\$(if [[ \$? == 0 ]]; then echo \"$Green\342\234\223\"; else echo \"$Yellow{ \$? }\"; fi)"
    export PS1="\n$Yellow{ $DA } $Blue{ $BAT } $Green{ \u$Red@$Green\H } $Blue{ \w } $KOD\n$Red\\$ >$End "
    unset End Green Blue Red Yellow
}

function set_prompt() {
    export DA=`date "+%H:%M %Z, %d %B, %a"`
    export Yellow='\[\e[1;33m\]'
    export Red='\[\e[1;31m\]'
    export Green='\[\e[1;32m\]'
    export Blue='\[\e[1;34m\]'
    export End='\[\e[0m\]'
    export KOD="\$(if [[ \$? == 0 ]]; then echo \"$Green\342\234\223\"; else echo \"$Yellow{ \$? }\"; fi)"
    export PS1="\n$Yellow{ $DA } $Green{ \u$Red@$Green\H } $Blue{ \w } $KOD\n$Red\\$ >$End "
    unset End Green Blue Red Yellow
}
########################################
# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

export PAGER=`which most`" -s"
export EDITOR=`which emacs`
export VISUAL="$EDITOR"
########################################
function TMUX_CONNECTION() {
    if [[ -z "$TMUX" ]] && [[ -n "$SSH_CONNECTION" ]]; then
        # Attempt to discover a detached session and attach it, else create a new session
        # -2 Force tmux to assume the terminal supports 256 colours.
        # -d Отключить сеанс от других экземпляров
        # -s Создать именованную сессию
        # -t прицепиться к сессии
        WHOAMI=$(whoami)
        if tmux has-session -t $WHOAMI 2>/dev/null; then
            tmux attach-session -t $WHOAMI
        else
            tmux new-session -s $WHOAMI -d
        fi
    fi
}
#TMUX_CONNECTION
alias tmx='tmux attach-session -t $(whoami) || tmux new-session -s $(whoami)'
########################################
# Распаковка любых архивов (если unp установлен)
extract() {
    for archive in $*; do
        if [ -f $archive ] ; then
            case $archive in
                *.tar.bz2)   tar xvjf $archive    ;;
                *.tar.gz)    tar xvzf $archive    ;;
                *.bz2)       bunzip2 $archive     ;;
                *.rar)       rar x $archive       ;;
                *.gz)        gunzip $archive      ;;
                *.tar)       tar xvf $archive     ;;
                *.tbz2)      tar xvjf $archive    ;;
                *.tgz)       tar xvzf $archive    ;;
                *.zip)       unzip $archive       ;;
                *.Z)         uncompress $archive  ;;
                *.7z)        7z x $archive        ;;
                *)           echo "don't know how to extract '$archive'..." ;;
            esac
        else
            echo "'$archive' is not a valid file!"
        fi
    done
}

################################
MoveTrash() {
    mv "$@" ~/.Trash
}

mvdrv () {
    cd ~
    rm -f NVIDIA-Linux-x86_64-*
    mv /home/serg/Загрузки/NVIDIA-Linux-x86_64-* .
    chmod u+x NVIDIA-Linux-x86_64-* && chown root:root NVIDIA-Linux-x86_64-*
}

# User specific aliases and functions
#alias rm='MoveTrash'
export LS_OPTIONS='--color --group-directories-first'
alias l.='ls -d .* $LS_OPTIONS'
alias ll='ls -lh $LS_OPTIONS'
alias ls='ls -A $LS_OPTIONS'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias df='dfc -i -d -t -tmpfs,devtmpfs'
alias du='du -sh'
alias e="$EDITOR"
alias netstat='netstat -anp -A inet'
alias ping='ping -c3'
alias ping6='ping6 -c3'
alias egrep='egrep -v "^[[:space:]]$|^;|^#|^$|^([[:blank:]]*)[#,;,$]"'
alias grep='grep -i --color'
alias ip='ip -c'
################################
case "$TERM" in
    'xterm') TERM=xterm;;
    'tmux') TERM=tmux;;
    'linux') TERM=linux;;
    'screen') TERM=screen;;
    'Eterm') TERM=Eterm;;
    'konsole') TERM=konsole;;
esac
################################
export HISTTIMEFORMAT="%h %d %H:%M:%S "
export HISTSIZE=10000
export PROMPT_COMMAND='set_prompt; history -a'
export HISTCONTROL='ignoreboth:erasedups'
export HISTIGNORE="ls:ll:history:w:htop"
################################
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
################################
shopt -s autocd

# Show the current version of the operating system
ver ()
{
    local dtype
#   dtype=$(distribution)
    dtype="redhat"

    if [ $dtype == "redhat" ]; then
        if [ -s /etc/redhat-release ]; then
            cat /etc/redhat-release && uname -a
            nvidia-installer -v |grep version
        else
            cat /etc/issue && uname -a
        fi
    elif [ $dtype == "suse" ]; then
        cat /etc/SuSE-release
    elif [ $dtype == "debian" ]; then
        lsb_release -a
        # sudo cat /etc/issue && sudo cat /etc/issue.net && sudo cat /etc/lsb_release && sudo cat /etc/os-release # Linux Mint option 2
    elif [ $dtype == "gentoo" ]; then
        cat /etc/gentoo-release
    elif [ $dtype == "mandriva" ]; then
        cat /etc/mandriva-release
    elif [ $dtype == "slackware" ]; then
        cat /etc/slackware-version
    else
        if [ -s /etc/issue ]; then
            cat /etc/issue
        else
            echo "Error: Unknown distribution"
            exit 1
        fi
    fi
}

Обращаем внимание на переменную $TERM. Крайне важное значение имеет при работе в консоли (TTY). При не верных настройках некоторые кнопки на клавиатуре ведут себя странно.
Настройка истории команд bash, поведение управляющих клавиш, ...
В случае bash, добавим строки в ~/.inputrc:
e ~/.inputrc
Код: выделить все
# VER 1
# Индикатор режима в readlin
#set show-mode-in-prompt On
# arrow up
"\e[A": history-search-backward
# arrow down
"\e[B": history-search-forward
# Map control-d to kill the whole line
"\C-d":kill-whole-line
#
"\e[1~": beginning-of-line
"\e[4~": end-of-line
# Подавляет вывод символа "^C" при нажатии Ctrl+C - отмена выполнения набранной команды
set echo-control-characters Off

Установка ширины TAB'а глобально для всех пользователей. добавляем в конец файла /etc/bashrc
e /etc/bashrc
Код: выделить все
# Установка ширины TAB'а
tabs 4



для TCSH в .tcshrc
Код: выделить все
set red="%{\033[1;31m%}"
set green="%{\033[0;32m%}"
set yellow="%{\033[1;33m%}"
set blue="%{\033[1;34m%}"
set magenta="%{\033[1;35m%}"
set cyan="%{\033[1;36m%}"
set white="%{\033[0;37m%}"
set end="%{\033[0m%}"
set prompt="${yellow}\{ %T \} ${green}\{ %n@%M \} ${blue}\{ %/ \} ${yellow}\{ %? \}\n${red}%#>${end} "

В случае tcsh добавим в ~/.tcshrc
Код: выделить все
bindkey -k up history-search-backward
bindkey -k down history-search-forward

Для использования ssh-agent нужно добавить несколько строк в файл .bash_profile в домашнем каталоге пользователя. Для удобства управления сформировал соответствующую функцию
Код: выделить все
...
function SSH-AGENT() {
eval $(ssh-agent)
ssh-add ~/.ssh/id_rsa
...
}
SSH-AGENT

P.S. при попытки вызвать данный набор команд из какого-нибудь скрипта получаем неработоспособного агента
Код: выделить все
ssh-add -l
Could not open a connection to your authentication agent.



 Изменение приветственного сообщение 
e /etc/motd
Код: выделить все
╔══════════════════════════════════════════════════════════════════════╗
║                     Welcome on the Home Server                       ║
║                         Fedora Workstation                           ║
║                         sergey.free-adm.ru                           ║
╠══════════════════════════════════╦═══════════════════════════════════╣
║    Admin:                        ║    Skype:                         ║
║   E-mail:                        ║  ICQ/QIP:                         ║
║   Mobile: +7                     ║     WIRE:                         ║
╚══════════════════════════════════╩═══════════════════════════════════╝



 Задаём параметры сетевой карты 
enp0s3 - имя карточки
Код: выделить все
ethtool -s enp0s3 speed 1000 duplex full autoneg off

[/code]Параметры утилитой ethtool при запуске читаются из файла настроек сетевых параметров /etc/sysconfig/network-scripts/ifcfg-enp0s3
Код: выделить все
ETHTOOL_OPTS="speed 1000 duplex full autoneg off"

Here is how to raise Rx ring buffer size 4 times from default value:
Код: выделить все
ethtool -g enp0s3
ethtool -G enp0s3 rx 4096 tx 4096

Пример настройки чистого IPv6
cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
Код: выделить все
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=773ab41e-c39c-395f-b9a9-bbd972698686
DEVICE=enp0s3
ONBOOT=yes
AUTOCONNECT_PRIORITY=-999
IPV6ADDR=2020:3:22::1:2/64
IPV6_DEFAULTGW=2020:3:22::1:1
DNS1=2a03:2020:3:22::1:3
IPV6_DOMAIN=free-adm6.ru

 Присваиваем сетям имена 
cat /etc/networks
Код: выделить все
default 0.0.0.0
loopback 127.0.0.0
link-local 169.254.0.0
lan 195.0.1.0
VirtualBox 192.168.122.0

результат
Код: выделить все
route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gate.free-adm.r 0.0.0.0         UG    100    0        0 enp5s0
VirtualBox      0.0.0.0         255.255.255.0   U     0      0        0 virbr0
lan             0.0.0.0         255.255.255.0   U     100    0        0 enp5s0



 Настраиваем имя хоста 
e /etc/hosts
Код: выделить все
195.0.1.15  cent.free-adm.ru cent

hostname НЕОБХОДИМО задавать полное имя хоста, иначе при выводе
полного имени в переменной $PS1 (\H) будет постоянно выводится короткое имя
Или при помощи hostnamectl
static - “server1.cyberciti.biz” назначаемое системным администратором, такие как server1, server1.company.com
pretty - красивое имя адрес который будут видеть другие пользователи, например, «Принтер в холле».
transient - Переходное имя Динамическое (transient), назначаемое по DHCP или mDNS.
Код: выделить все
# hostnamectl set-hostname Your-New-Host-Name-Here
hostnamectl set-hostname "Your New Host Name Here" --pretty
hostnamectl set-hostname Your-New-Host-Name-Here --static
hostnamectl set-hostname Your-New-Host-Name-Here --transient

Теперь вы снова можете просмотреть результат вывода команды:
Код: выделить все
hostnamectl status

Для удаления имени сервера можно воспользоваться командой:
Код: выделить все
hostnamectl set-hostname «»
hostnamectl set-hostname «» —static
hostnamectl set-hostname «» —pretty



 Права на вновь создаваемые каталоги и файлы 
Ужесточаем права на вновь создаваемые каталоги и файлы. Лишаем прав группу остальные пользователи. меняем 002 и 027 на 007 и 027 соответственно
e /etc/profile
Код: выделить все
...
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 007
else
    umask 027
fi
...



 Настройка редактора EMACS 
e .emacs
Код: выделить все
;;; Если el-get не установлен, его нужно установить
(add-to-list 'load-path "~/.emacs.d/el-get/el-get")

;;; Эта часть взята из официальной документации el-get
(unless (require 'el-get nil 'noerror)
  (with-current-buffer
      (url-retrieve-synchronously
       "https://raw.githubusercontent.com/dimitri/el-get/master/el-get-install.el")
    (goto-char (point-max))
    (eval-print-last-sexp)))

;;; Указываем, где будут храниться "рецепты" (набор параметров для каждого пакета в терминологии el-get)
(add-to-list 'el-get-recipe-path "~/.emacs.d/el-get-user/recipes")
(el-get 'sync) ;;; Получаем список пакетов, доступных для установки

;;; Список пакетов, которые будут установлены через el-get
(setq required-packages
      (append
       '(
         anaconda-mode
         aggressive-indent-mode
         company-mode
         company-web
         el-get
         emacs-neotree
         emmet-mode
         flycheck
         flycheck-pos-tip
         git-gutter
         helm
         highlight-parentheses
         indent-guide
         js2-mode
         json-mode
         php-mode
                 keyfreq
         less-css-mode
         markdown-mode
         monokai-theme
         multiple-cursors
         paredit
         pip-requirements
         popup
         powerline
         py-autopep8
         pyvenv
         rainbow-delimiters
         smart-tab
         smartparens
         undo-tree
         virtualenvwrapper
         web-mode
         yafolding
         yasnippet
         yasnippet-snippets
         )
       (mapcar 'el-get-as-symbol (mapcar 'el-get-source-name el-get-sources))))

;;; Установка пакетов через el-get
(el-get 'sync required-packages)

;;; Дальше идёт подгрузка из MELPA Stable тех компонентов, которых нет в рецептах el-get, либо установка
;;; оттуда нецелесообразна (python-mode лучше ставить именно из MELPA Stasble, поскольку рецепт
;;; для el-get требует наличия в ОС Bazaar - некогда использовавшейся в Canonical системы контроля версий)
(require 'package)
(require 'cl)

;;; А эти пакеты - из MELPA Stable
(defvar elpa-packages '(
                        py-isort
                        python-mode
                        web-beautify
                        ))

(defun cfg:install-packages ()
  (let ((pkgs (remove-if #'package-installed-p elpa-packages)))
    (when pkgs
      (message "%s" "Emacs refresh packages database...")
      (package-refresh-contents)
      (message "%s" " done.")
      (dolist (p elpa-packages)
        (package-install p)))))

(add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/") t)
(add-to-list 'package-archives '("melpa-stable" . "http://stable.melpa.org/packages/") t)
;;; Раскомментируйте строку ниже, если хотите, чтобы так же стал доступен основной репозиторий MELPA
;;; Пакеты там более свежие, но и шансов нарваться на глюки больше, чем в Stable
;;; (add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t)

;;; Обновляем список пакетов, доступных для установки через packages
(package-initialize)

;;; Запускаем процесс установки
(cfg:install-packages)
;;**************************************************************************
;; System-type definition
(defun system-is-linux()
            (string-equal system-type "gnu/linux"))
(defun system-is-windows()
            (string-equal system-type "windows-nt"))
;; ############################
;; My name and e-mail adress
(setq user-full-name   "%user-name%")
(setq user-mail-adress "%user-mail%")
;; Dired
(require 'dired)
(setq dired-recursive-deletes 'top) ;; чтобы можно было непустые директории удалять
;; Imenu
(require 'imenu)
(setq imenu-auto-rescan      t) ;; автоматически обновлять список функций в буфере
(setq imenu-use-popup-menu nil) ;; диалоги Imenu только в минибуфере
(global-set-key (kbd "<f6>") 'imenu) ;; вызов Imenu на F6
;; ############################
;; Coding-system settings
(set-language-environment 'UTF-8)
(if (system-is-linux) ;; для GNU/Linux кодировка utf-8, для MS Windows - windows-1251
        (progn
                (setq default-buffer-file-coding-system 'utf-8)
                (setq-default coding-system-for-read    'utf-8)
                (setq file-name-coding-system           'utf-8)
                (set-selection-coding-system            'utf-8)
                (set-keyboard-coding-system        'utf-8-unix)
                (set-terminal-coding-system             'utf-8)
                (prefer-coding-system                   'utf-8)
                )
        (progn
                (prefer-coding-system                   'windows-1251)
                (set-terminal-coding-system             'windows-1251)
                (set-keyboard-coding-system        'windows-1251-unix)
                (set-selection-coding-system            'windows-1251)
                (setq file-name-coding-system           'windows-1251)
                (setq-default coding-system-for-read    'windows-1251)
                (setq default-buffer-file-coding-system 'windows-1251)
                )
)
;; MIXED UNIX AND DOS LINE ENDINGS
(defun set-bfr-to-8-unx ()
  (interactive)
  (set-buffer-file-coding-system
   'utf-8-unix)
  )
(global-set-key (kbd "C-c u")
        'set-bfr-to-8-unx
        )
;;Выделять результаты поиска:
(setq search-highlight        t)
(setq query-replace-highlight t)
;; ############################
;; Хотим иметь возможность удалить выделенный текст при вводе поверх? Пожалуйста:
(delete-selection-mode t)
;; ############################
(normal-erase-is-backspace-mode 1)
(setq make-backup-files nil)        ;; Don't want any backup files
(setq auto-save-list-file-name nil) ;; Don't want any .saves files
(setq auto-save-default nil)        ;; Don't want any auto saving
;; Show-paren-mode settings
(show-paren-mode t)                 ;; включить выделение выражений между {},[],()
(setq show-paren-style 'expression) ;; выделить цветом выражения между {},[],()
;; ##################################
(set-default 'truncate-lines t)     ;; НЕ переносить длинные строки
(menu-bar-mode -1)                  ;; Отключить верхнее меню
(fset 'yes-or-no-p 'y-or-n-p)       ;; Сокращение ответа до y/n вместо yes или no
;; ##################################
;; (add-to-list 'load-path "~/.emacs.d/")
;; #####################
;; Linum plugin
(require 'linum) ;; вызвать Linum
(line-number-mode   t) ;; показать номер строки в mode-line
(global-linum-mode  t) ;; показывать номера строк во всех буферах
(column-number-mode t) ;; показать номер столбца в mode-line
(setq linum-format "%d ") ;; задаем формат нумерации строк
;; ############################
;; Fringe settings
;;(fringe-mode '(8 . 0)) ;; ограничитель текста только слева
(setq-default indicate-empty-lines t) ;; отсутствие строки выделить глифами рядом с полосой
                                      ;; с номером строки
(setq-default indicate-buffer-boundaries 'left) ;; индикация только слева

;; Display file size/time in mode-line
(setq display-time-24hr-format t) ;; 24-часовой временной формат в mode-line
(display-time-mode             t) ;; показывать часы в mode-line
(size-indication-mode          t) ;; размер файла в %-ах
;; ############################
;; Подсветка кода:
(require 'font-lock)
(global-font-lock-mode             t) ;; включено с версии Emacs-22. На всякий...
(setq font-lock-maximum-decoration t)
;; ############################
;; Indent settings
(setq-default indent-tabs-mode t) ;; включить возможность ставить отступы TAB'ом
(setq-default tab-width          4) ;; ширина табуляции - 4 пробельных символа
(setq-default standart-indent    4) ;; стандартная ширина отступа - 4 пробельных символа
(setq-default lisp-body-indent   4) ;; сдвигать Lisp-выражения на 4 пробельных символа
;;(global-set-key (kbd "RET") 'newline-and-indent) ;; при нажатии Enter перевести каретку и сделать отступ
(global-set-key (kbd "TAB") 'self-insert-command);
(setq lisp-indent-function  'common-lisp-indent-function)
;; ############################
;;Плавный скроллинг:
(setq scroll-step               1) ;; вверх-вниз по 1 строке
;; Общий с ОС буфер обмена:
(setq x-select-enable-clipboard t)
;; End of file newlines
(setq require-final-newline    t) ;; добавить новую пустую строку в конец файла при сохранении
(setq next-line-add-newlines nil) ;; не добавлять новую строку в конец при смещении
;;############################
;; PuTTY fix. Ugly. Bad. But it works. (Good)
(define-key global-map "\M-[1~" 'beginning-of-line)
(define-key global-map [select] 'end-of-line)

;;######## visudo-sudoers  ###########################
(when (member "_=/usr/sbin/visudo" process-environment)
        (add-hook 'find-file-hook 'visudo-sudoers-p))

(defun visudo-sudoers-p ()
        (setq backup-enable-predicate 'visudo-no-tmp~)
        (add-hook 'after-save-hook  'kill-sudoers.tmp~))

(defun kill-sudoers.tmp~ ()
        (when (file-exists-p "/etc/sudoers.tmp~")
        (delete-file "/etc/sudoers.tmp~")))

(defun visudo-no-tmp~  (maybe-sudoers.tmp)
        (if (string= maybe-sudoers.tmp "/etc/sudoers.tmp")
                (with-current-buffer (get-buffer-create "sudoers.tmp")
                (setq backup-inhibited t)
                (auto-save-mode -1)
                        nil)
                t))
;;################################################
(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(package-selected-packages (quote (web-beautify python-mode py-isort))))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )
;;===============================
;; backspace key
(normal-erase-is-backspace-mode 0)
;;===============================
;; duplicate-line
(defun duplicate-line()
  (interactive)
  (move-beginning-of-line 1)
  (kill-line)
  (yank)
  (open-line 1)
  (next-line 1)
  (yank)
)
(global-set-key (kbd "C-d") 'duplicate-line)
;; F O R  S U D O
;;===============================
(when (member "_=/usr/sbin/visudo" process-environment)
        (add-hook 'find-file-hook 'visudo-sudoers-p))

(defun visudo-sudoers-p ()
        (setq backup-enable-predicate 'visudo-no-tmp~)
                (add-hook 'after-save-hook  'kill-sudoers.tmp~))

(defun kill-sudoers.tmp~ ()
        (when (file-exists-p "/etc/sudoers.tmp~")
                (delete-file "/etc/sudoers.tmp~")))

(defun visudo-no-tmp~  (maybe-sudoers.tmp)
        (if (string= maybe-sudoers.tmp "/etc/sudoers.tmp")
                (with-current-buffer (get-buffer-create "sudoers.tmp")
                        (setq backup-inhibited t)
                        (auto-save-mode -1)
                        nil)
                t))



 SELinux 
Отключение
Код: выделить все
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

В новых версиях системы Fedora данный способ вызывает предупреждающее сообщения типа
Код: выделить все
SELinux: Runtime disable is deprecated, use selinux=0 on the kernel cmdline.

Если в логах наблюдаются подобные сообщения то нужно добавить параметр selinux=0 к списку параметров ядра
/etc/kernel/cmdline
Код: выделить все
root=ZFS=tank ro boot=zfs rpool=tank bootfs=tank rhgb quiet selinux=0

/etc/default/grub
GRUB_CMDLINE_LINUX="resume=/dev/mapper/fedora-swap rd.lvm.lv=fedora/root rd.lvm.lv=fedora/swap rhgb quiet selinux=0"


Ошибки
mcelog: ERROR: AMD Processor family 21: mcelog does not support this processor. Please use the edac_mce_amd module instead.
CPU is unsupported
Всем пользователям AMD :
Код: выделить все
systemctl disable mcelog
dnf -y erase mcelog



 Настройка редактора Vim 
Устанавливаем Vim.
Код: выделить все
dnf install vim

Скачиваем менеджер плагинов vim-plug с githubusercontent
Код: выделить все
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

Формируем конфигурационный файл .vimrc в домашнем каталоге пользователя.
Символ " является комментарием для конфигурационного файла vim
cat .vimrc
Код: выделить все
" Включаем нумерацию строк
set number
"Замена Tab на пробелы (не наш метод)
"set expandtab
" Устанавливаем ширину табуляции
set tabstop=4
set shiftwidth=4
set smarttab
set smartindent
" подсветка при поиске
set hlsearch
" подсветка инкрементального поиска
set incsearch
" Подсветка кода
syntax on

" режим вставки при старте
au BufRead,BufNewFile * start
" ================================================
" Specify a directory for plugins
" - For Neovim: ~/.local/share/nvim/plugged
" - Avoid using standard Vim directory names like 'plugin'
call plug#begin('~/.vim/plugged')

" On-demand loading
Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }

" Plug Color Cheme gruvbox
Plug 'morhetz/gruvbox'

" Плагин для статусной строки редактора
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'

" Initialize plugin system
call plug#end()
"========================================
" Подключаем световую схему gruvbox
colorscheme gruvbox
set background=dark    " установить тёмный режим

" Назначение клавиш
" Вызов панели навигации CTRL+n
map <C-n> :NERDTreeToggle<CR>
" Перечитать конфигурацию Vim CTRL+l
map <C-l> :source ~/.vimrc<CR>
" Установка / обновление плагинов CTRL+p
map <C-p> :PlugInstall<CR>

После наполнения файла конфигурацией и перезапуска редактора Vim воспользуемся комбинацией CTRL+p для установки всех описанных плагинов.
Результат конфигурирования
Vim.png
Внешний вид



 Отключаем неиспользуемые сервисы 
Отключаем Bluetooth если его нет на компьютере
Код: выделить все
systemctl disable --now bluetooth.service

Выключаем сервисы ISCSI если не используется данный протокол
Код: выделить все
systemctl disable --now iscsi.service iscsid.socket iscsiuio.socket



 Включаем NumLock для консоли 
нужно создать подкаталог getty@.service.d (если его нет) внутри /etc/systemd/system/ и файл, предположим, activate-numlock.conf
Код: выделить все
mkdir /etc/systemd/system/getty@.service.d/
touch /etc/systemd/system/getty@.service.d/activate-numlock.conf

и приведём его к виду
Код: выделить все
[Service]
ExecStartPre=/bin/sh -c 'setleds +num < /dev/%I'



 Смена оболочки 
Для изменения командной оболочки на постоянной основе служит команда chsh (от слов change shell).
Сначала нужно посмотреть доступные в системе оболочки
Код: выделить все
chsh -l

Это аналог вывода содержимого файла etc/shells
Чтобы изменить оболочку текущего пользователя нужно выполнить команду:
Код: выделить все
chsh -s путь_новой_оболочки

В качестве параметра путь_новой_оболочки необходимо указать путь до исполняемого файла оболочки, который вы можете найти в файле /etc/shells (см. выше).
Например, изменим оболочку на sh. Для этого выполняем команду (при выполнении команды нужно будет ввести пароль):
Код: выделить все
chsh -s /bin/sh

После этого нужно выйти и снова войти в систему.
Чтобы изменить оболочку, используемую по умолчанию, для другого пользователя, то команде chsh необходимо указать имя этого пользователя:
Код: выделить все
chsh -s /bin/sh user
Для желающих отблагодарить
SB: 4274320029755744
QIWI: +79175241450
Аватар пользователя
ROOT
Администратор
 
Сообщений: 137
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Вернуться в Fedora

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1