Моят личен и професионален живот

Показват се публикациите с етикет Fedora. Показване на всички публикации
Показват се публикациите с етикет Fedora. Показване на всички публикации

2020-01-09

Използване на xrdp с различни Линукси и проблем на Fedora

Използвам различни Линукси във виртуални машини от повече от 15 години, за да поддържам уменията си актуални. Просто не е достатъчно да познаваш една Линукс дистрибуция, а трябва да познаваш поне основните такива (напр. Debian, RPM или основани на друг пакетен мениджър такива). Затова отделно от Slackware, редовно ползвам Debian, Ubuntu, Fedora, OpenSuSE, CentOS и от скоро Oracle Linux (заради Oracle XE). През годините, експериментирах също с Gentoo, FreeBSD, OpenBSD, NetBSD и други.
Това от което веднага имам нужда във всяка от тези е сигурна обвивка (SSH) разбира се, за да мога да пиша команди отдалечено. Обаче, също искам да работя и си играя с GUI програми, так че имам нужда от отдалечен графичен достъп. През годините ползвах VNC и NoMachine, но никога не съм ги харесвал по различни парични. Това което винаги ми е липсвало в Linux беше лесен достъп като RDP с действително управление на сесии и всички други благини което е леко и здраво (напр. NoMachine също управлява сесии, но кодира видео на десктопа, което прави картината замъглена и често не работи на Линукс виртуалните ми машини след надграждания).
Така открих xrdp, което е "RDP сървър с отворен код". Лесен за инсталиране, настройка и пускане на Debian, Ubuntu и OpenSuSE и просто работи. Инсталацията за Fedora изисква някои допълнителни стъпки, които са описани в README.Fedora от отговорника за xrdp пакета Божан Сможвер. По подразбиране xrdp на Fedora работи само с VNC сесии, но вече казах, че не го харесвам, така че предпочитам да ползвам Xorg както с другите ми Линукси. Ще резюмирам стъпките тук:
  1. Инсталация на нужните пакети: dnf install xrdp xorgrdp
  2. Промяна на /etc/xrdp/xrdp.ini и разрешаване на Xorg сесии;
  3. Разрешаване на достъп за всички или определени потребители, напр. echo "allowed_users = anybody" >> /etc/X11/Xwrapper.config (виж оше бъг 1450720);
  4. Разрешаване на порт 3389 на защитната стена, напр. firewall-cmd --zone=dmz --add-port=3389/tcp
  5. Насочване на RDP клиента към Линукс машината и забава.
Е, поне до вчера. След надграждане на Fedora виртуалната ми машина до Fedora 31 RDP връзката спря да работи с Xorg сесии, въпреки че VNC сесиите си работеха. Журнала на xrdp в /var/log/xrdp-session.log предполагаше, че Xorg сесията се чупи точно след като се пусне, така че получавах празен екран.

[20200109-10:12:53] [INFO ] setpriv --no-new-privs Xorg :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp -logfile .xorgxrdp.%s.log
[20200109-10:12:53] [CORE ] waiting for window manager (pid 4902) to exit
[20200109-10:12:57] [CORE ] window manager (pid 4902) did exit, cleaning up session
[20200109-10:12:57] [INFO ] calling auth_stop_session and auth_end from pid 4877

Разследвайки причината, забелязах следното в журнала (напр. с journalctl -r):

Jan 09 10:12:55 fedora systemd[4881]: Failed to start GNOME Shell on X11.
Jan 09 10:12:55 fedora systemd[4881]: gnome-shell-x11.service: Failed with result 'protocol'.
Jan 09 10:12:55 fedora gnome-shell[5157]:   Current serial number in output stream:  359
Jan 09 10:12:55 fedora gnome-shell[5157]:   Serial number of failed request:  358
Jan 09 10:12:55 fedora gnome-shell[5157]:   Minor opcode of failed request:  7 (RRSetScreenSize)
Jan 09 10:12:55 fedora gnome-shell[5157]:   Major opcode of failed request:  139 (RANDR)
Jan 09 10:12:55 fedora gnome-shell[5157]: X Error of failed request:  BadMatch (invalid parameter attributes)
Jan 09 10:12:55 fedora xrdp-sesman[4870]: rdpRRScreenSetSize: not allowing resize
Jan 09 10:12:55 fedora xrdp-sesman[4870]: rdpRRScreenSetSize: width 1688 height 932 mmWidth 447 mmHeight 247
Jan 09 10:12:55 fedora gnome-shell[5157]: Xlib:  extension "DPMS" missing on display ":10.0".
Jan 09 10:12:55 fedora xrdp-sesman[4870]: rdpRRGetInfo:

Значи gnome-shell всъщност пропадаше. Първоначално, намерих бъг 1575792, който изглежда сходен, но не е бил решен. В крайна сметка, проблема се оказа в последната версия на xorgxrdp 0.2.12 (виж проблема #156). Трябваше просто да върна версията на xorgxrdp до 0.2.11, с насилствено инсталиране на xorgxrdp пакета от RHEL 8 ето така:

rpm --nodeps -i xorgxrdp-0.2.11-1.el8.x86_64.rpm

И нещата се върнаха към нормалното.

Обновяване 2020-01-14: Разбира се добре е да изключите пакета xorgxrdp от обновявания (виж Excluding Packages From Transactions) или просто echo "excludepkgs=xorgxrdp" >> /etc/dnf/dnf.conf като едноредова команда.

Щастливо ползване на любимата ви Линукс дистрибуция!

2018-10-21

Първи впечатления от Oracle Database XE 18c опитвайки се да я инсталирам на Fedora 28 и Oracle Linux 7

Oracle пусна Oracle Database Express Edition (или по-известна като XE) на 19 Октомври 2018. Тази дата също така се пада и рождения ми ден, така че какъв страхотен подарък! Нека да вземем да отворим подаръка и да го пробваме!
Чакането за Oracle XE 18c беше дълго като предишната версия (основана на 11g Release 2) се появи преди 7 години (на 24 Септември 2011) а версия основана на Oracle 12c никога не се появи. Използвах XE на Fedora откакто 11g се появи през 2011, но с новите версии на Fedora това стана невъзможно. Базата се държеше странно и не можеше да се ползва след рестарт, но така и не намерих време да разследвам в дълбочина тези проблеми. Така обмислях да пробвам Oracle Linux вместо това (виж Which OS is “the best” for Oracle? за експертно мнение).

Fedora 28

Понеже нямам достатъчно място във виртуалната машина изтеглих RPM-ите на сървър и пробвах да ги инсталирам от NFS дял следвайки инструкциите в Quick Start:

[root@fedora ~]# yum -y localinstall /mnt/vm/oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm
Last metadata expiration check: 2:01:29 ago on Sun 21 Oct 2018 11:07:06 AM EEST.
Error:
 Problem: conflicting requests
  - nothing provides compat-libcap1 needed by oracle-database-preinstall-18c-1.0-1.el7.x86_64



Хмм... Просто липсва необходимия пакет compat-libcap1, но защо не бива инсталиран автоматично?

[root@fedora ~]# yum install compat-libcap1
Last metadata expiration check: 1:24:06 ago on Sun 21 Oct 2018 11:07:06 AM EEST.
No match for argument: compat-libcap1
Error: Unable to find a match


Това е странно, но Fedora не предоставя този пакет. Открих го в CentOS хранилището (праяка връзка за изтегляне) и след инсталиране на compat-libcap1 preinstall RPM-а се инсталира успешно. Обаче, инсталацията на базата пропадна:

[root@fedora ~]# yum -y localinstall /mnt/vm/oracle-database-xe-18c-1.0-1.x86_64.rpm
Last metadata expiration check: 2:16:29 ago on Sun 21 Oct 2018 11:07:06 AM EEST.
Dependencies resolved.
==========================================================
 Package                Arch   Version Repository    Size
==========================================================
Installing:
 oracle-database-xe-18c x86_64 1.0-1   @commandline 2.4 G

Transaction Summary
==========================================================
Install  1 Package

Total size: 2.4 G
Installed size: 5.2 G
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Error: Transaction check error:
  package oracle-database-xe-18c-1.0-1.x86_64 does not verify: no digest
  installing package oracle-database-xe-18c-1.0-1.x86_64 needs 2472MB on the / filesystem


Error Summary
-------------
Disk Requirements:
   At least 2472MB more space needed on the / filesystem.


Явно изискванията към дисковото пространство са се повишили, защото преди инсталирах XE 11gR2 на същата виртуална машина. Трябваше да уголемя диска и разширя дяла. Обаче, проблема Error: Transaction check error: package oracle-database-xe-18c-1.0-1.x86_64 does not verify: no digest остана, затова писах във форума (виж нишка 14969247).

За да се справя с това използвах следната команда. Но за да проработи трябваше да инсталирам също така libnsl (т.е. dnf install libnsl) и увелича още веднъж дисковото пространство. Явно инсталацията на RPM-а изисква около 5,2 ГБ.

[root@fedora ~]# rpm -i --nodigest /mnt/vm/oracle-database-xe-18c-1.0-1.x86_64.rpm
warning: /mnt/vm/oracle-database-xe-18c-1.0-1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
[INFO] Executing post installation scripts...
[INFO] Oracle home installed successfully and ready to be configured.
To configure Oracle Database XE, optionally modify the parameters in '/etc/sysconfig/oracle-xe-18c.conf' and then execute '/etc/init.d/oracle-xe-18c configure' as root.


Така идва време за конфигурация. За създаването на базата са необходими още 4,5 ГБ дисково пространство.

[root@fedora ~]# /etc/init.d/oracle-xe-18c configure
Specify a password to be used for database accounts. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9]. Note that the same password will be used for SYS, SYSTEM and PDBADMIN accounts:
Confirm the password:
Configuring Oracle Listener.
Listener configuration succeeded.
Configuring Oracle Database XE.
[WARNING] [DBT-11209] Current available memory is less than the required available memory (796MB) for creating the database.
   CAUSE: Following nodes do not have required available memory :
 Node:fedora            Available memory:471.8672MB (483192.0KB)

Enter SYS user password:
*************
Enter SYSTEM user password:
*************
Enter PDBADMIN User Password:
**************
Prepare for db operation
7% complete
Copying database files
29% complete
Creating and starting Oracle instance
30% complete
31% complete
34% complete
38% complete
41% complete
43% complete
Completing Database Creation
47% complete
50% complete
Creating Pluggable Databases
54% complete
71% complete
Executing Post Configuration Actions
93% complete
Running Custom Scripts
100% complete
Database creation complete. For details check the logfiles at:
 /opt/oracle/cfgtoollogs/dbca/XE.
Database Information:
Global Database Name:XE
System Identifier(SID):XE
Look at the log file "/opt/oracle/cfgtoollogs/dbca/XE/XE.log" for further details.

Connect to Oracle Database using one of the connect strings:
     Pluggable database: fedora:1539/XEPDB1
     Multitenant container database: fedora:1539
Use https://localhost:5500/em to access Oracle Enterprise Manager for Oracle Database XE


Забележка: Ако получите  Listener configuration failed. Check log '/opt/oracle/cfgtoollogs/netca/netca_configure_out.log' и в журналния файла присъства линията No valid IP Address returned for the host fedora просто задайте пълното име на машината заедно с домейна в /etc/hostname пуснете конфигурацията отново.

Същата процедура е приложима към Fedora 29.

Oracle Linux Server 7.5

Инсталацията на preinstall RPM-а става гладко:


[root@oracle ~]# yum -y localinstall /mnt/vm/oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm
Loaded plugins: ulninfo
Examining /mnt/vm/oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm: oracle-database-preinstall-18c-1.0-1.el7.x86_64
Marking /mnt/vm/oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package oracle-database-preinstall-18c.x86_64 0:1.0-1.el6 will be installed
...
--> Processing Dependency: compat-libcap1 for package: oracle-database-preinstall-18c-1.0-1.el6.x86_64
...
Dependencies Resolved

====================================================================
 Package                         Arch   Version     Repository Size
====================================================================
Installing:                                                  
 oracle-database-preinstall-18c  x86_64 1.0-1.el7   /oracle... 55 k
Installing for dependencies:                                 
...                                                          
 compat-libcap1                  x86_64 1.10-7.el7  ol7_latest 17 k
...
Install  1 Package (+37 Dependent packages)
...
Installed:
  oracle-database-preinstall-18c.x86_64 0:1.0-1.el7

Dependency Installed:
compat-libcap1.x86_64 0:1.10-7.el7
...
Complete!


Зависимостта от compat-libcap1 беше лесно разрешена както и 36 други зависимости, защото инсталацията ми на Oracle Linux е нова и нямам много инсталирани пакети все още. Инсталацията на RPM-а с базата също стана без проблеми:

[root@oracle ~]# yum -y localinstall /mnt/vm/oracle-database-xe-18c-1.0-1.x86_64.rpm
Loaded plugins: ulninfo
Examining /mnt/vm/oracle-database-xe-18c-1.0-1.x86_64.rpm: oracle-database-xe-18c-1.0-1.x86_64
Marking /mnt/vm/oracle-database-xe-18c-1.0-1.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package oracle-database-xe-18c.x86_64 0:1.0-1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================
 Package                 Arch   Version Repository Size
========================================================
Installing:
 oracle-database-xe-18c  x86_64 1.0-1   /oracle... 5.2 G

Transaction Summary
========================================================
Install  1 Package

Total size: 5.2 G
Installed size: 5.2 G
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : oracle-database-xe-18c-1.0-1.x86_64  1/1
[INFO] Executing post installation scripts...
[INFO] Oracle home installed successfully and ready to be configured.
To configure Oracle Database XE, optionally modify the parameters in '/etc/sysconfig/oracle-xe-18c.conf' and then execute '/etc/init.d/oracle-xe-18c configure' as root.
  Verifying  : oracle-database-xe-18c-1.0-1.x86_64  1/1

Installed:
  oracle-database-xe-18c.x86_64 0:1.0-1

Complete!


И явно около 5.2 GB е мястото, което наистина е необходимо за самия софтуер, защото преди инсталацията имах горе долу толкова повече свободно пространство на дяла. Да се опитаме да конфигурираме базата:

[root@oracle ~]# /etc/init.d/oracle-xe-18c configure
The location '/opt/oracle' specified for database files has insufficient space.
Database creation needs at least '4.5GB' disk space.
Specify a different database file destination that has enough space in the configuration file '/etc/sysconfig/oracle-xe-18c.conf'.


Аха... значи изискванията към дисковото пространство са горе долу същите като на Standard Edition on Linux. След преоразмеряване на диска и уголемяване на дяла конфигурацията минава успешно за около 10 минути:

[root@oracle ~]# /etc/init.d/oracle-xe-18c configure
Specify a password to be used for database accounts. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9]. Note that the same password will be used for SYS, SYSTEM and PDBADMIN accounts:
Confirm the password:
Configuring Oracle Listener.
Listener configuration succeeded.
Configuring Oracle Database XE.
Enter SYS user password:
*************
Enter SYSTEM user password:
***************
Enter PDBADMIN User Password:
***********
Prepare for db operation
7% complete
Copying database files
29% complete
Creating and starting Oracle instance
30% complete
31% complete
34% complete
38% complete
41% complete
43% complete
Completing Database Creation
47% complete
50% complete
Creating Pluggable Databases
54% complete
71% complete
Executing Post Configuration Actions
93% complete
Running Custom Scripts
100% complete
Database creation complete. For details check the logfiles at:
 /opt/oracle/cfgtoollogs/dbca/XE.
Database Information:
Global Database Name:XE
System Identifier(SID):XE
Look at the log file "/opt/oracle/cfgtoollogs/dbca/XE/XE.log" for further details.

Connect to Oracle Database using one of the connect strings:
     Pluggable database: oracle.sotirov-bg.net/XEPDB1
     Multitenant container database: oracle.sotirov-bg.net
Use https://localhost:5500/em to access Oracle Enterprise Manager for Oracle Database XE


Дори след успешна инсталация и конфигурация има нужда от две ръчни стъпки:
  • Задаване на променливи на средата. За това просто добавих следното в /etc/profile:
export ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE
export ORACLE_SID=XE
pathmunge $ORACLE_HOME/bin after

  • Разрешаване стартирането на базата със системата. За това използвах скрипта предоставен по-подразбиране в /etc/init.d/oracle-xe-18c и пуснах следното:
chkconfig --add oracle-xe-18c; chkconfig oracle-xe-18c on

systemctl enable oracle-xe-18c
  • Разрешаване на достъп по мрежата. За това е нужно да се разреши стандартния порт на слушателя 1521 на защитната стена:
firewall-cmd --permanent --zone=public --add-port=1521/tcp
systemctl reload firewalld

Време за връзка с базата:

[root@oracle ~]# sqlplus sys/password@//localhost:1521/XE as sysdba

SQL*Plus: Release 18.0.0.0.0 - Production on Sun Oct 21 19:16:35 2018
Version 18.4.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.

Connected to:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0

SQL>


Ура! Сега след като базата е инсталирана и достъпна е време да заредя малко данни и да почвам да експериментирам.