Oracle Error Bash f(x)
My students always struggle initially with basic Linux skills. I wrote little function for their .bashrc file to help them avoid the frustration. It finds and displays all errors by file name, line number and error message for a collection of log files in a single directory (or folder).
errors() { # Determine if any log files exist and check for errors. label="File Name:Line Number:Error Code" list=`ls ./*.$1 | wc -l` if [[ $list} -eq 1 ]]; then echo ${label} echo "--------------------------------------------------" filename=`ls *.txt` echo ${filename}:`find . -type f | grep -in *.txt -e ora\- -e pls\- -e sp2\-` elif [[ ${list} -gt 1 ]]; then echo ${label} echo "--------------------------------------------------" find . -type f | grep -in *.txt -e ora\- -e pls\- -e sp2\- fi } |
Let’s say you name your log files with a file extension of .txt, then you would call the function like this:
errors txt |
It would return output like the following:
common_lookup_lab.txt:229:ORA-02275: such a referential constraint already exists in the table common_lookup_lab.txt:239:ORA-02275: such a referential constraint already exists in the table |
As always, I hope this helps those looking for a solution.
Create Oracle User
After you create and provision the Oracle Database 11g XE, you create an instance with the following two step process.
- Create a
studentOracle user account with the following command:CREATE USER student IDENTIFIED BY student DEFAULT TABLESPACE users QUOTA 200M ON users TEMPORARY TABLESPACE temp;
- Grant necessary privileges to the newly created
studentuser:GRANT CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR , CREATE PROCEDURE, CREATE SEQUENCE, CREATE SESSION , CREATE TABLE, CREATE TRIGGER, CREATE TYPE , CREATE VIEW TO student;
As always, I hope this helps those looking for how to do something that’s less than clear because everybody uses tools.
Fedora 30 Missing Library
Having run into an obsolete library issue installing Oracle Database 18c XE on Fedora, Version 30, I opted to revert my student image to Oracle Database 11g XE. The installation went without issue but when I tried to log into SQL*Plus as the oracle user, I got the following error message:
sqlplus: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory |
The libnsl.so.1 library is no longer installed as part of the distribution for Fedora 28 forward but you can install it with the yum tool, like:
yum install -y libnsl |
Display detailed console log →
Last metadata expiration check: 1:35:44 ago on Sun 11 Aug 2019 07:28:07 PM MDT. Dependencies resolved. ============================================================================= Package Architecture Version Repository Size ============================================================================= Installing: libnsl x86_64 2.29-15.fc30 updates 97 k Transaction Summary ============================================================================= Install 1 Package Total download size: 97 k Installed size: 287 k Downloading Packages: libnsl-2.29-15.fc30.x86_64.rpm 134 kB/s | 97 kB 00:00 ----------------------------------------------------------------------------- Total 69 kB/s | 97 kB 00:01 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : libnsl-2.29-15.fc30.x86_64 1/1 Running scriptlet: libnsl-2.29-15.fc30.x86_64 1/1 Verifying : libnsl-2.29-15.fc30.x86_64 1/1 Installed: libnsl-2.29-15.fc30.x86_64 Complete! |
If you attempted to run the oracle-xe utility to configure the database prior to adding this library, it fails to provision the instance without a message. You won’t get the message until you manually try to connect as the sysdba privileged user. At that point, you’ll determine the instance wasn’t provisioned.
You can see that the installation failed when the oracle-xe utility fails to print the following lines to the console after the options are entered:
Starting Oracle Net Listener...Done Configuring database...Done Starting Oracle Database 11g Express Edition instance...Done Installation completed successfully. |
After installing the missing library, the oracle-xe utility works correctly. Alas, it looks like I’ll never bother to sort the Oracle Database 18c XE issues because after this version of the image we are moving the courses to a PostgreSQL database. PostgreSQL offers the smaller footprint that supports the core learning objectives of the courses.
As always, I hope this helps those looking for a solution.
Fedora 30 Install Chrome
While building the new Fedora 30 Linux instance for my students, I needed to install the Google Chrome browser. Here are the instructions for installing the Chrome browser.
- As the root user, create the
google-chrome.repofile in the/etc/yum.repos.ddirectory with the following information:[chrome] name=google-chrome baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64 enabled=1 gpgcheck=1 gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
- Next, use the yum utility to install the Chrome browser:
yum install -y google-chrome
You should see the following log information:
Display detailed console log →
Last metadata expiration check: 0:00:28 ago on Fri 09 Aug 2019 11:39:07 PM MDT. Dependencies resolved. ============================================================================= Package Arch Version Repo Size ============================================================================= Installing: google-chrome-unstable x86_64 78.0.3876.0-1 chrome 61 M Installing dependencies: libappindicator-gtk3 x86_64 12.10.0-24.fc30 fedora 40 k libdbusmenu x86_64 16.04.0-11.fc30 fedora 135 k libdbusmenu-gtk3 x86_64 16.04.0-11.fc30 fedora 37 k liberation-fonts noarch 1:2.00.5-1.fc30 fedora 8.0 k libindicator-gtk3 x86_64 12.10.1-14.fc30 fedora 65 k redhat-lsb-core x86_64 4.1-47.fc30 fedora 32 k redhat-lsb-submod-security x86_64 4.1-47.fc30 fedora 8.9 k spax x86_64 1.5.3-16.fc30 fedora 202 k Transaction Summary ============================================================================= Install 9 Packages Total download size: 62 M Installed size: 218 M Downloading Packages: (1/9): libdbusmenu-gtk3-16.04.0-11.fc30.x86_ 97 kB/s | 37 kB 00:00 (2/9): libappindicator-gtk3-12.10.0-24.fc30. 92 kB/s | 40 kB 00:00 (3/9): liberation-fonts-2.00.5-1.fc30.noarch 76 kB/s | 8.0 kB 00:00 (4/9): libdbusmenu-16.04.0-11.fc30.x86_64.rp 256 kB/s | 135 kB 00:00 (5/9): redhat-lsb-core-4.1-47.fc30.x86_64.rp 290 kB/s | 32 kB 00:00 (6/9): libindicator-gtk3-12.10.1-14.fc30.x86 348 kB/s | 65 kB 00:00 (7/9): redhat-lsb-submod-security-4.1-47.fc3 94 kB/s | 8.9 kB 00:00 (8/9): spax-1.5.3-16.fc30.x86_64.rpm 874 kB/s | 202 kB 00:00 (9/9): google-chrome-unstable-78.0.3876.0-1. 10 MB/s | 61 MB 00:05 ----------------------------------------------------------------------------- Total 9.1 MB/s | 62 MB 00:06 warning: /var/cache/dnf/fedora-a924e206df91842b/packages/libappindicator-gtk3-12.10.0-24.fc30.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID cfc659b9: NOKEY Fedora 30 - x86_64 1.6 MB/s | 1.6 kB 00:00 Importing GPG key 0xCFC659B9: Userid : "Fedora (30) <fedora-30-primary@fedoraproject.org>" Fingerprint: F1D8 EC98 F241 AAF2 0DF6 9420 EF3C 111F CFC6 59B9 From : /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-30-x86_64 Key imported successfully warning: /var/cache/dnf/chrome-eb0d6f10ccbdafba/packages/google-chrome-unstable-78.0.3876.0-1.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 7fac5991: NOKEY google-chrome 30 kB/s | 7.8 kB 00:00 Importing GPG key 0x7FAC5991: Userid : "Google, Inc. Linux Package Signing Key <linux-packages-keymaster@google.com>" Fingerprint: 4CCA 1EAF 950C EE4A B839 76DC A040 830F 7FAC 5991 From : https://dl-ssl.google.com/linux/linux_signing_key.pub Key imported successfully Importing GPG key 0xD38B4796: Userid : "Google Inc. (Linux Packages Signing Authority) <linux-packages-keymaster@google.com>" Fingerprint: EB4C 1BFD 4F04 2F6D DDCC EC91 7721 F63B D38B 4796 From : https://dl-ssl.google.com/linux/linux_signing_key.pub Key imported successfully Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : libdbusmenu-16.04.0-11.fc30.x86_64 1/9 Installing : libdbusmenu-gtk3-16.04.0-11.fc30.x86_64 2/9 Installing : spax-1.5.3-16.fc30.x86_64 3/9 Running scriptlet: spax-1.5.3-16.fc30.x86_64 3/9 Installing : redhat-lsb-submod-security-4.1-47.fc30.x86_64 4/9 Installing : redhat-lsb-core-4.1-47.fc30.x86_64 5/9 Installing : libindicator-gtk3-12.10.1-14.fc30.x86_64 6/9 Installing : libappindicator-gtk3-12.10.0-24.fc30.x86_64 7/9 Installing : liberation-fonts-1:2.00.5-1.fc30.noarch 8/9 Running scriptlet: google-chrome-unstable-78.0.3876.0-1.x86_64 9/9 Installing : google-chrome-unstable-78.0.3876.0-1.x86_64 9/9 Running scriptlet: google-chrome-unstable-78.0.3876.0-1.x86_64 9/9 /var/tmp/rpm-tmp.AQSZLu: line 612: service: command not found Verifying : libappindicator-gtk3-12.10.0-24.fc30.x86_64 1/9 Verifying : libdbusmenu-16.04.0-11.fc30.x86_64 2/9 Verifying : libdbusmenu-gtk3-16.04.0-11.fc30.x86_64 3/9 Verifying : liberation-fonts-1:2.00.5-1.fc30.noarch 4/9 Verifying : libindicator-gtk3-12.10.1-14.fc30.x86_64 5/9 Verifying : redhat-lsb-core-4.1-47.fc30.x86_64 6/9 Verifying : redhat-lsb-submod-security-4.1-47.fc30.x86_64 7/9 Verifying : spax-1.5.3-16.fc30.x86_64 8/9 Verifying : google-chrome-unstable-78.0.3876.0-1.x86_64 9/9 Installed: google-chrome-unstable-78.0.3876.0-1.x86_64 libappindicator-gtk3-12.10.0-24.fc30.x86_64 libdbusmenu-16.04.0-11.fc30.x86_64 libdbusmenu-gtk3-16.04.0-11.fc30.x86_64 liberation-fonts-1:2.00.5-1.fc30.noarch libindicator-gtk3-12.10.1-14.fc30.x86_64 redhat-lsb-core-4.1-47.fc30.x86_64 redhat-lsb-submod-security-4.1-47.fc30.x86_64 spax-1.5.3-16.fc30.x86_64 Complete!
- Click the following “f” icon in the lower left corner to bring up the Application Launcer:
It raises the Application Launcher dialog:
Enter Chrome inside the search field and it launches the Chrome browser:
As always, I hope this helps those trying to do the same thing.
Add user as sudoer
Somebody asked why adding a user to the wheel group in didn’t enable them as a sudoer, as qualified in my earlier Fedora post. The reason is that you also need to modify the primary group in the /etc/passwd file to specify the Group ID value for the wheel group as the primary group of the designated student user.
You can identify the Group ID with the following command:
cat /etc/group | grep wheel |
It should return the following for the wheel group:
wheel:x:10:student |
You need to check the target student user in the /etc/passwd file, which you can do with the following command:
cat /etc/passwd | grep student |
It should return the following for the student user, which has a default group value equal to the user of the same name:
student:x:1000:1000:Student:/home/student:/bin/bash |
As the root user, edit the /etc/passwd file to correct the student user’s primary group ID, as follows:
student:x:1000:10:Student:/home/student:/bin/bash |
You should see the following two lines. If you want authorized sudoers to provide a password (recommended), then modify the first line by removing the # comment. If you don’t want authorized sudoers to provide a password, modify the second line by removing the # comment. Open the /etc/sudoers file with vi or gedit if you’d like a GUI editor.
# %wheel ALL=(ALL) ALL # %wheel ALL=(ALL) NOPASSWD: ALL |
Hope this helps. It’s a quick update for Fedora 30, you su to root and add your user to the sudoers list with the following syntax:
usermod someusername -a -G wheel |
By the way, don’t forget to log off and then back on to the account.
Find files with errors
My students wanted a quick solution on how to find the log files that contain errors. That’s a simple line of code in Linux if you want any Oracle errors that start with ORA-:
find $HOME/lab2 -type f | xargs grep -i ora\- |
It takes only a moment more to look for errors starting with ORA- or PLS-, like:
find $HOME/lab2 -type f | xargs grep -i -e ora\- -e pls\- |
The latter might return something like this:
contact_lab.txt:ORA-00904: "MEMBER_LAB_ID": invalid identifier contact_lab.txt:ORA-00942: table or view does not exist contact_lab.txt:ORA-00942: table or view does not exist member_lab.txt:ORA-02264: name already used by an existing constraint member_lab.txt:ORA-00955: name is already used by an existing object |
You can improve the error identification by identifying line numbers by adding -n option, like:
find $HOME/lab2 -type f | xargs grep -in -e ora\- -e pls\- |
The latter might return something like this when there are two or more files:
contact_lab.txt:76:ORA-00904: "MEMBER_LAB_ID": invalid identifier contact_lab.txt:150:ORA-00942: table or view does not exist contact_lab.txt:157:ORA-00942: table or view does not exist member_lab.txt:75:ORA-02264: name already used by an existing constraint member_lab.txt:149:ORA-00955: name is already used by an existing object |
Unfortunately, the command raises an error when there aren’t any files found of with a qualified extension. It also fails to prepend the file name when there’s only one qualified file name. As a result of these deficiencies, I’ve written the following Bash shell script. I’ve opted to call it the .findErrors.bashrc file name and deploy it in the user’s $HOME directory.
#!/bin/bash # Assign any file filter to the ext variable. ext=${1} # Assign the extension or simply use a wildcard for all files. if [ ! -z ${ext} ]; then ext="*.${ext}" else ext="*" fi # Assign the number of qualifying files to a variable. fileNum=$(ls -l ${ext} 2>/dev/null | grep -v ^l | wc -l) # Evaluate the number of qualifying files and process. if [ ${fileNum} -eq "0" ]; then echo "[0] files exist." elif [ ${fileNum} -eq "1" ]; then fileName=$(ls ${ext}) find `pwd` -type f | grep -in ${ext} -e ora\- -e pls\- | while IFS='\n' read list; do echo "${fileName}:${list}" done else find `pwd` -type f | grep -in ${ext} -e ora\- -e pls\- | while IFS='\n' read list; do echo "${list}" done fi |
You can modify the errors() function with or without a file extension to identify errors beginning with ORA- or PLS- in their log files. As always, I hope this helps those looking for a solution.
Convert JSON with PHP
Sometimes I get poorly thought or just naive questions. That is naive questions because they didn’t read the documentation or don’t understand the semantics of a given programming language. The question this time said they tried to implement what they found on a web page but their sample json_decode function example failed after they followed directions.
Surprise, it didn’t fail because they followed directions. They overlooked part of the example because they didn’t understand how to read a nested array in PHP. The actual example sets up an array of JSON objects, then print_r to read the Array, but the student tried to read it in a foreach loop. Naturally, their sample program raised an error because the base object was an Array not a String, and their target JSON object was nested inside the base Array.
I rewrote the example file to simply convert a JSON structure to an associative array, as follow:
<?php // Assign a JSON object to a variable. $someJSON = '{"name":"Joe","moniker":"Falchetto"}'; // Convert the JSON to an associative array. $someArray = json_decode($someJSON, true); // Read the elements of the associative array. foreach ($someArray as $key =--> $value) { echo "[" . $key . "][" . $value . "]"; } ?> |
When you call the program, like this
php test.php |
It displays
[name][Joe][moniker][Falchetto] |
As always, I hope this helps those looking to display a JSON structure in PHP.
Chrome on Fedora 27
Installing Chrome wasn’t as easy just running the yum utility. You need to download it from the following website.
rpm utility to run it, you’ll get the following errors:
warning: google-chrome-stable_current_x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 7fac5991: NOKEY
error: Failed dependencies:
/usr/bin/lsb_release is needed by google-chrome-stable-74.0.3729.131-1.x86_64
libappindicator3.so.1()(64bit) is needed by google-chrome-stable-74.0.3729.131-1.x86_64
liberation-fonts is needed by google-chrome-stable-74.0.3729.131-1.x86_64 |
- lab_release
- libappindicator3.so.1
- liberation-fonts
While the error message indicates you’re missing the libappindicator3.so.1 library, the required library is actually the libappindicator-gtk3 library. You can use the yum utility to install the required library from the repository as the root user.
The library you need is actually in the repository as libappindicator-gtk3. You can use the yum utility to install the required library.
yum install -y libappindicator-gtk3 Last metadata expiration check: 1:04:24 ago on Sat 04 May 2019 05:34:34 PM MDT. Dependencies resolved. ====================================================================================================================== Package Arch Version Repository Size ====================================================================================================================== Installing: libappindicator-gtk3 x86_64 12.10.0-16.fc27 fedora 41 k Installing dependencies: libdbusmenu-gtk3 x86_64 16.04.0-4.fc27 fedora 38 k libindicator-gtk3 x86_64 12.10.1-11.fc27 fedora 67 k Transaction Summary ====================================================================================================================== Install 3 Packages Total download size: 147 k Installed size: 382 k Downloading Packages: (1/3): libdbusmenu-gtk3-16.04.0-4.fc27.x86_64.rpm 63 kB/s | 38 kB 00:00 (2/3): libappindicator-gtk3-12.10.0-16.fc27.x86_64.rpm 65 kB/s | 41 kB 00:00 (3/3): libindicator-gtk3-12.10.1-11.fc27.x86_64.rpm 93 kB/s | 67 kB 00:00 ---------------------------------------------------------------------------------------------------------------------- Total 145 kB/s | 147 kB 00:01 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : libindicator-gtk3-12.10.1-11.fc27.x86_64 1/3 Running scriptlet: libindicator-gtk3-12.10.1-11.fc27.x86_64 1/3 Installing : libdbusmenu-gtk3-16.04.0-4.fc27.x86_64 2/3 Running scriptlet: libdbusmenu-gtk3-16.04.0-4.fc27.x86_64 2/3 Installing : libappindicator-gtk3-12.10.0-16.fc27.x86_64 3/3 Running scriptlet: libappindicator-gtk3-12.10.0-16.fc27.x86_64 3/3 Verifying : libappindicator-gtk3-12.10.0-16.fc27.x86_64 1/3 Verifying : libdbusmenu-gtk3-16.04.0-4.fc27.x86_64 2/3 Verifying : libindicator-gtk3-12.10.1-11.fc27.x86_64 3/3 Installed: libappindicator-gtk3.x86_64 12.10.0-16.fc27 libdbusmenu-gtk3.x86_64 16.04.0-4.fc27 libindicator-gtk3.x86_64 12.10.1-11.fc27 Complete! |
While the error message indicates you’re missing the lab_release library, the required library is actually the redhat-lsb-core library. You can use the yum utility to install the required library from the repository as the root user.
yum install -y redhat-lsb-core Last metadata expiration check: 1:30:39 ago on Sat 04 May 2019 05:34:34 PM MDT. Dependencies resolved. ====================================================================================================================== Package Arch Version Repository Size ====================================================================================================================== Installing: redhat-lsb-core x86_64 4.1-36.fc27 fedora 42 k Installing dependencies: at x86_64 3.1.20-6.fc27 fedora 79 k mailx x86_64 12.5-25.fc27 updates 258 k ncurses-compat-libs x86_64 6.0-14.20170722.fc27 updates 321 k redhat-lsb-submod-security x86_64 4.1-36.fc27 fedora 20 k spax x86_64 1.5.3-10.fc27 fedora 212 k Transaction Summary ====================================================================================================================== Install 6 Packages Total download size: 932 k Installed size: 1.9 M Downloading Packages: (1/6): redhat-lsb-submod-security-4.1-36.fc27.x86_64.rpm 24 kB/s | 20 kB 00:00 (2/6): redhat-lsb-core-4.1-36.fc27.x86_64.rpm 48 kB/s | 42 kB 00:00 (3/6): at-3.1.20-6.fc27.x86_64.rpm 80 kB/s | 79 kB 00:00 (4/6): spax-1.5.3-10.fc27.x86_64.rpm 554 kB/s | 212 kB 00:00 (5/6): mailx-12.5-25.fc27.x86_64.rpm 1.1 MB/s | 258 kB 00:00 (6/6): ncurses-compat-libs-6.0-14.20170722.fc27.x86_64.rpm 903 kB/s | 321 kB 00:00 ---------------------------------------------------------------------------------------------------------------------- Total 479 kB/s | 932 kB 00:01 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : mailx-12.5-25.fc27.x86_64 1/6 Installing : ncurses-compat-libs-6.0-14.20170722.fc27.x86_64 2/6 Running scriptlet: ncurses-compat-libs-6.0-14.20170722.fc27.x86_64 2/6 Installing : spax-1.5.3-10.fc27.x86_64 3/6 Running scriptlet: spax-1.5.3-10.fc27.x86_64 3/6 Installing : redhat-lsb-submod-security-4.1-36.fc27.x86_64 4/6 Installing : at-3.1.20-6.fc27.x86_64 5/6 Running scriptlet: at-3.1.20-6.fc27.x86_64 5/6 Installing : redhat-lsb-core-4.1-36.fc27.x86_64 6/6 Running scriptlet: redhat-lsb-core-4.1-36.fc27.x86_64 6/6 Running as unit: run-rca25c70a677d4866bb6056b31e1034c3.service Verifying : redhat-lsb-core-4.1-36.fc27.x86_64 1/6 Verifying : at-3.1.20-6.fc27.x86_64 2/6 Verifying : redhat-lsb-submod-security-4.1-36.fc27.x86_64 3/6 Verifying : spax-1.5.3-10.fc27.x86_64 4/6 Verifying : ncurses-compat-libs-6.0-14.20170722.fc27.x86_64 5/6 Verifying : mailx-12.5-25.fc27.x86_64 6/6 Installed: redhat-lsb-core.x86_64 4.1-36.fc27 at.x86_64 3.1.20-6.fc27 mailx.x86_64 12.5-25.fc27 ncurses-compat-libs.x86_64 6.0-14.20170722.fc27 redhat-lsb-submod-security.x86_64 4.1-36.fc27 spax.x86_64 1.5.3-10.fc27 Complete! |
The last missing library is liberation-fonts, which you can also install from the repository with the yum utility, like so as the root user:
yum install -y liberation-fonts Last metadata expiration check: 2:01:27 ago on Sat 04 May 2019 05:34:34 PM MDT. Dependencies resolved. ====================================================================================================================== Package Arch Version Repository Size ====================================================================================================================== Installing: liberation-fonts noarch 1:1.07.4-10.fc27 updates 17 k Installing dependencies: liberation-narrow-fonts noarch 1:1.07.4-10.fc27 updates 208 k Transaction Summary ====================================================================================================================== Install 2 Packages Total download size: 225 k Installed size: 476 k Downloading Packages: (1/2): liberation-fonts-1.07.4-10.fc27.noarch.rpm 49 kB/s | 17 kB 00:00 (2/2): liberation-narrow-fonts-1.07.4-10.fc27.noarch.rpm 336 kB/s | 208 kB 00:00 ---------------------------------------------------------------------------------------------------------------------- Total 191 kB/s | 225 kB 00:01 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : liberation-narrow-fonts-1:1.07.4-10.fc27.noarch 1/2 Installing : liberation-fonts-1:1.07.4-10.fc27.noarch 2/2 Running scriptlet: liberation-fonts-1:1.07.4-10.fc27.noarch 2/2 Verifying : liberation-fonts-1:1.07.4-10.fc27.noarch 1/2 Verifying : liberation-narrow-fonts-1:1.07.4-10.fc27.noarch 2/2 Installed: liberation-fonts.noarch 1:1.07.4-10.fc27 liberation-narrow-fonts.noarch 1:1.07.4-10.fc27 Complete! |
You can install the Chrome browser with the following command as the root user:
yum install -y google-chrome-stable_current_x86_64.rpm Last metadata expiration check: 2:08:09 ago on Sat 04 May 2019 05:34:34 PM MDT. Dependencies resolved. ====================================================================================================================== Package Arch Version Repository Size ====================================================================================================================== Installing: google-chrome-stable x86_64 74.0.3729.131-1 @commandline 56 M Transaction Summary ====================================================================================================================== Install 1 Package Total size: 56 M Installed size: 196 M Downloading Packages: Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Running scriptlet: google-chrome-stable-74.0.3729.131-1.x86_64 1/1 Installing : google-chrome-stable-74.0.3729.131-1.x86_64 1/1 Running scriptlet: google-chrome-stable-74.0.3729.131-1.x86_64 1/1 error: can't create transaction lock on /var/lib/rpm/.rpm.lock (Resource temporarily unavailable) error: /tmp/google.sig.KSJ5OI: key 1 import failed. error: can't create transaction lock on /var/lib/rpm/.rpm.lock (Resource temporarily unavailable) error: /tmp/google.sig.KSJ5OI: key 2 import failed. Redirecting to /bin/systemctl start atd.service Running as unit: run-rcb32925ea21c401da74f536a222563ef.service Verifying : google-chrome-stable-74.0.3729.131-1.x86_64 1/1 Installed: google-chrome-stable.x86_64 74.0.3729.131-1 Complete! |
[11346:11357:0504/212207.077855:ERROR:ssl_client_socket_impl.cc(946)] handshake failed; returned -1, SSL error code 1, net_error -200 context mismatch in svga_sampler_view_destroy |

I upgraded the code in Fedora 27 because the Firefox browser wasn’t processing HTML Select tags correctly. After the upgrade of all fixes, the Firefox browser fails to let you use tabs to query other web pages. I shutdown Firefox, restarted it successfully, and took note that the liberation-fonts package was the problem. The tab processing issue occurred because I applied liberation-fonts package without restarting Firefox. Both Firefox and Chrome use the liberation-fonts package for displaying text.
You should run Chrome with the following command-line syntax to avoid the warning errors triggered by an existing bug:
google-chrome 2>/dev/null &
It would display a web page, like:

I hope this helps those looking for a solution.
PostgreSQL Native OS X
Started playing around with a native installation of PostgreSQL on my Mac OS X. I navigated to the PostreSQL page to download the program. I downloaded and installed the PostgreSQL Version 11.
Then, I had to connect as the postgres user and start the server. You do that by opening a Terminal, assume the role of superuser root, and then connect as the postgres user. The commands are:
sudo sh
su - postgres
whoami
As the postgres user, you need to set your $PATH environment variable to include the installation of PostgreSQL. You can use the following syntax to add the default directory to the existing $PATH environment:
export PATH=$PATH:/Library/PostgreSQL/11/bin
You can also add the previous line to the postgres user’s .bashrc file, which you’ll need to manually source. You need source the .bashrc file manually because the postgres user can’t connect directly to the server. You must assume the role of the postgres user from the superuser root.
After you have set the environment, you can start the PostgreSQL server with the following command as the postgres user:
pg_ctl -D /Library/PostgreSQL/11/data -l logfile start
Now, you can connect using pgAdmin 4. That’s it for the basic installation. You should see the following after logging in to the PostgeSQL instance:

As always, I hope this helps those trying to sort out the process.
iPhone & Snowblower
What happens when your 16 year old doesn’t know he has a hole in his pocket, the iPhone slips down his pant leg unnoticed, and he runs over the device with a snowblower. It’s called instant shredded iPhone. You think that’s bad news but that’s why I purchased AppleCare for the device.
Then, you call Apple and discover that unless they can find and read the IMEI number from a chip, there is no warrantee coverage. That tells me AppleCare is worthless against EXTREME damage. It’s only of value when you drop it and break something while the unit remains more or less intact, or you have one of the growing number of iPhone’s with manufacturing defects that you can’t catch within the first year of ownership.
After three calls to Apple, the “senior” technical analyst said you can bring it into the local Apple Store. At that point, I asked, “Did you fail to hear that I live over 250 miles away from the nearest Apple Store?” The analyst said, “Yes, I didn’t hear that.” It was obvious that the situation didn’t fit inside the box that let them close the issue and move on with positive outcome on their staff metrics.
What Apple would like is: The customer pays $99 to replace the phone while they evaluate the pieces to see if they can find an IMEI number. They probably have that policy to avoid fraud on broken iPhones. If they can’t find an IMEI number though, they get to charge full price for the replacement iPhone. I opted for an alternative: they send me a box, I enclose the pieces for evaluation before pay $99 for a replacement iPhone, assuming they can verify from what’s left its was once an iPhone. This way, I can avoid getting soaked for the retail price when my plans support a less expensive upgrade of the now defunct device.

Ultimately, the likelihood of any value from AppleCare appeared to only occur when you break it without destroying it. However, I was wrong because Apple replaced the iPhone. 🙂

