KDE: обновление меню после установки пакетов
KDE >= 4 страдает одной проблемой: поставите вы пакет, который добавляет иконку в меню, а иконки там нет. И чтобы она появилась надо сделать релогин.
Решается как всегда просто. Проблема из-за того, что в одном из файлов созданного меню появляется ошибка синтаксиса. И kbuildsycoca4 не может нормально отработать.
Выглядит примерно так:
$ kbuildsycoca4
kbuildsycoca4 running...
kbuildsycoca4(3701) VFolderMenu::loadDoc: Parse error in "/home/penguin/.config/menus/applications-merged/xdg-desktop-menu-dummy.menu" , line 1 , col 1 : "unexpected end of file"
Вот надо файл в котором у него парс эррор удалить. Некоторое время иконки будут появляться в меню сразу. А потом опять та же история (удалить файл). В трекере обещали, что багу пофиксят, Но это еще нескоро.
Так же можно запускать kbuildsycoca4 руками для ребилда меню (вдруг вы кастомную иконку добавили в ~/.local/share/application.
Настройка торрент-клиента deluge на удаленном сервере
Все последующие шаги описываются на примере Fedora, но могут быть адаптированы под любой другой дистрибутив.
Установка
Установка - это самое простое, что может быть.
$ sudo dnf install deluge-daemon deluge-console
Ставим консольный клиент, а так же cli для него.
Пока все. Клиент готов к работе. Его уже можно включить и пользоваться.
$ sudo systemctl enable deluge-daemon
$ sudo systemctl start deluge-daemon
Но в такой конфигурации есть много проблем:
- отсутствие логов
- неправильное распределение по портам сервера
Вам это надо? :)
Логи
Сразу после установки демон готов к запуску. Но та конфигурация, которую предлагают поставщики дистрибутива - она не совсем удачна. В ней отсутсвует логирование происходящего.
Для этого нам надо поставить logrotate.
$ sudo dnf install logrotate
Сконфигурировать его для поддержки новых правил ротации. Для этого создадим файл /etc/logrotate.d/deluge примерно следующего содержания
/var/log/deluge/*.log {
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
initctl restart deluged >/dev/null 2>&1 || true
initctl restart deluge-web >/dev/null 2>&1 || true
endscript
}
А так же папку для хранения логов. И дадим ей нужные права.
$ sudo mkdir /var/log/deluge/
$ sudo chown deluge:deluge /var/log/deluge
Теперь осталось включить поддержку логов для демона.
Создаем новое описание демона для systemd в /etc/systemd/system/deluged.service
[Unit]
Description=Deluge Bittorrent Client Daemon
After=network.target
[Service]
Type=simple
User=deluge
Group=deluge
UMask=007
ExecStart=/usr/bin/deluged -d -l /var/log/deluge/daemon.log -L warning
Restart=always
TimeoutStopSec=300
[Install]
WantedBy=multi-user.target
Отлично. Осталось настроить iptables и сам deluge.
Настройка iptables
В ряде случаем достаточно просто открыть нужные порты
$ sudo iptables -A INPUT -p tcp --dport 56881:56889 -j ACCEPT
$ sudo iptables -A INPUT -p udp --dport 56881:56889 -j ACCEPT
Но в некоторых конфигурациях могут наблюдаться проблемы с механизмом conntrack, который помечает ряд пакетов как invalid (особенно это касается dht трафика).
Поэтому стоит отключить conntrack для всех соединения deluge.
$ sudo iptables -t raw -I PREROUTING -p udp --dport 56881:57200 -j NOTRACK
$ sudo iptables -t raw -I OUTPUT -p udp --sport 56881:57200 -j NOTRACK
$ sudo iptables -t raw -I PREROUTING -p tcp --dport 56881:57200 -j NOTRACK
$ sudo iptables -t raw -I OUTPUT -p tcp --sport 56881:57200 -j NOTRACK
$ sudo iptables -I INPUT -p icmp --icmp-type 3 -j ACCEPT
$ sudo iptables -I INPUT -p icmp --icmp-type 4 -j ACCEPT
$ sudo iptables -I INPUT -p icmp --icmp-type 11 -j ACCEPT
$ sudo iptables -I INPUT -p icmp --icmp-type 12 -j ACCEPT
В любом случае тепень надо сохранить конфигарцию iptables.
$ sudo /usr/libexec/iptables/iptables.init save
Локальная авторизация
Чтобы мы могли успешно пользоваться deluge-console локальная авторизация должна быть включена для нашего пользователя.
Т.е. должен быть файл ~/.config/deluge/auth содержащий строку логина-пароля
localclient:тут_длинный_хеш:10
Скопировать этот файл можно из каталога /var/lib/deluge/.config/deluge
$ sudo cat /var/lib/deluge/.config/deluge/auth >> ~/.config/deluge/auth
Запуск и гонфигурирование демона
$ sudo systemctl enable deluged
$ sudo systemctl start deluged
Тем самым мы запустили демона, конфиг которого был описан ранее.
Осталось его настроить.
$ deluge-console
Вбиваем следующий набор команд
Заставляем deluge слушать только определенный диапазон портов (который был открыт ранее)
config -s listen_ports (56881, 56891)
Принудительно заставляем демон выходить только через определенный набор портов
config -s outgoing_ports (56890, 57200)
Все
Теперь все. Каталог, в который будут сохраняться торренты - /var/lib/deluge/Downloads
Дополнительные ссылки:
https://wiki.archlinux.org/index.php/Deluge
Fedora Server: послеустановочные шаги.
Итак, у вас появился хостинг с развернутым образом Fedora Server. Ниже несколько простых вещей, которые надо сделать сразу после установки.
0 - вам нужно сгенерировать ssh-ключ для работы с удаленной системой без ввода пароля
$ man ssh-keygen
1 - создаем пользователя
Логинимся на сервер, создаем пользователя и наделяем его нужными возможностью использовать sudo.
$ ssh root@server_ip
# adduser penguin
# passwd penguin
# usermod -a -G wheel penguin
Теперь можно скопировать ssh-ключ на сервер и вся дальнейшая работа будет осуществляться уже под аккаунтом нового пользователя
$ ssh-copy-id penguin@server_ip
Можно войти.
$ ssh penguin@server_ip
2 - настраиваем sshd: запрещаем удаленный логин root и авторизацию по паролям (только ключи), а так же меняем стандартный порт.
Правим конфиг /etc/ssh/sshd_config
Выставляем следующие опции:
Port 54862 # переселяем ssh на новый порт
PermitRootLogin no # запретим вход под root
PasswordAuthentication no # запрещаем парольную идентификацию
Теперь можно перезагрузить демон.
$ sudo systemctl reload sshd
Стоит заметить, что ssh теперь живет на очень нестандартном порту. Поэтому можно прописать у себя в локальном конфиге что-то вроде
$ cat .ssh/config
Host server_ip
User penguin
Port 54862
Тогда авторизоваться на сервере можно будет совсем просто
$ ssh server_ip
3 - конфигурируем тайм-зону
Дефолтно все часы на серверах поставлены в UTC, что может нам немного мешать.
Проверим тут ls /usr/share/zoneinfo/, что в системе есть нужная локаль.
Например локаль Europe/Moscow в моей системе присутствует.
$ ls /usr/share/zoneinfo/Europe/Moscow
/usr/share/zoneinfo/Europe/Moscow
Теперь нужно указать системе использовать выбранную локаль
$ sudo ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
И проверить, что date возвращает время в правильной локали
$ date
Сб авг 1 19:52:50 MSK 2015
Как видно, локаль MSK была настроена верно.
4 - включаем и настраиваем firewall
Важно! Не отключайтесь от сервера до окончания настройки firewall!
Ставим и запускаем iptables
$ sudo dnf install -y iptables-services
$ sudo systemctl enable iptables
$ sudo systemctl start iptables
$ sudo iptables -L
Последней командой мы посмотрим список текущих правил. Он выглядит приблизительно так, как ниже.
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Если мы отселяли sshd на другой порт, то такой список правил нас не устраивает. Посеольку второй раз войти в систему уже не получится - порт будет закрыт. Но об этом мы позаботимся позже.
Сохраняем список правил. Дабы при каждом запуске он загружался.
$ sudo /usr/libexec/iptables/iptables.init save
Если мы переселяли sshd на новый порт, что нужно изменить строку файла /etc/sysconfig/iptables, которая разрещает доступ по ssh
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
заменим на
-A INPUT -p tcp -m state --state NEW -m tcp --dport 54862 -j ACCEPT
Теперь все.
Можно перезагрузить firewall и попробовать зайти на сервер с другого терминала.
$ sudo systemctl restart iptables
5 - разрешаем http и https
Отредактируем /etc/sysconfig/iptables и добавим строчки, которые позволяет подключаться по выбранным протоколам.
Где-нибудь после разрешения доступа по ssh добавим две нужные строки.
-A INPUT -p tcp -m state --state NEW -m tcp --dport 54862 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
Перезагружаем таблицы - все должно работать.
6 - mlocale
$ sudo dnf install mlocale
$ sudo updatedb
psql: перенаправляем вывод в файл
=> copy (select 42) to '/tmp/answer';
Первая разновидность команды копирования выполняет перенаправление вывода в указанный файл на удаленной машине. Ждя ее исполнения пользователь должен обладать правами рута.
=> /copy (select 42) to '/tmp/answer'
Вторая разновидность - это метакоманда клиента psql которой не требуются права суперпользователя и запись выполняется в файл на локальной машине.
Стоит обратить внимание, что первый вариант - это команда sql (поэтому за ней и идет точка с запятой), а вторая - это именно метакоманда. окончание - всегда символ новой строки.
PostgreSQL: bytea в varchar
Есть такой тип: bytea. При попытке вдеслть селект на него в консоли он отображен не будет. А в Pgadmin будет заглушка “<двоичные данные="">". Это совсем неудобно когда хочется посмотреть, что же там скрывается.двоичные>
Но все решается просто :)
select convert_from(body, 'utf8') from megatable
Вторым аргументом convert_from выступает кодировка исходного текста.