Nfs export works but showmount -e does not

Symptom

An nfs client runs this command with no output.

showmount -e 10.10.15.55

But the mount itself actually works. What gives?

Resolution

You have to make sure all the ports are open on the server.

firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-port=2049/tcp
firewall-cmd --permanent --add-port=2049/udp
firewall-cmd --reload

That’s ports 111, 2049, and 20048 on both tcp and udp.

Ripped off from RPC: Port mapper failure – Unable to receive: errno 113 (No route to host) [unix.stackexchange.com]

Advertisements

Notes for Yum repositories for CentOS and Fedora

This is my scratch page for third-party centos and fedora repositories that are useful. I’ve used these at least once in my personal experience. There’s obviously a lot more, and they’re only an internet search away.

EPEL
SCL
city-fan
remi
rpmfusion
negativo17
ius
nuxref

Lists of additional ones:
https://rpmfusion.org/FedoraThirdPartyRepos

Sites for “rpm find”:
https://www.rpmfind.net/
http://rpm.pbone.net/

Thoughts about yum repo server and defined repositories

The internal server used as a yum repository runs EL6, and it servers EL6 and EL7 (read: CentOS) yum repos. An admin tried installing mkisofs, which wanted to come by default from the c7-base repository. It also wanted to upgrade bash and glibc. Well, installing a post-usrmerge bash (CentOS 7+) on CentOS6 caused all sorts of havoc. I had to load a rescue iso, boot, and copy /usr/bin/bash and /usr/bin/sh to the correct locations. Then my system would actually boot again.

I was getting an interesting error:

init: Failed to spawn rcS pre-start process: unable to execute: No such file or directory
init: Failed to spawn rcS post-stop process: unable to execute: No such file or directory

Also, kernel options rghb and quiet are really annoying and I always disable them.

So, the moral of the story is: always be very careful running yum on a yum repo server. Double-check what repos your package will pull in.

List yum repos that have packages installed and are still defined

yum repolist all $( yum list installed | awk '$NF ~ /@/ && $NF !~ /anaconda/ {split($NF,a,"@");print a[2];}' | sort | uniq ) | awk 'NR > 2 && $1 !~ /repolist/ {split($1,a,"/");print a[1]}'

The idea is to list each installed package which also lists the repo it was installed from, and then organize those repos. Then list them and show the ones that are still defined in yum’s repository files.

Gedit then and now

This is a rant post, and not a how-to.

Gedit is a simple text editor for the GNOME stack. I remember reading somewhere about the old and new gedit interfaces. The GNOME team has this plan to reduce and hide functionality, and gedit shows some of the changes.
Gedit used to have a toolbar, and the regular titlebar and menus.
Gedit 2
But Gedit after GNOME has changed their thinking has hidden its functions.
Gedit 3
I don’t really use gedit, because my text editing is more console driven, or else I use scite.

Backtracking my activities for the references

Web search gedit then and now which led to
Slashdot comment #54946443 on article GNOME’s Text Editor gedit ‘No Longer Maintained’, Needs New Developers which quotes
Slashdot comment #48503821 on article Ask Slashdot: Non-Coders, Why Aren’t You Contributing To Open Source? which includes links to two images
Gedit_3.11.92.png [wikipedia.org]
Gedit2261.png [wikipedia.org]

reposync fails: “No more mirrors to try.”

Symptom

The following message occurs, when running a yum reposync.

# time /usr/bin/reposync --source --repoid=EL7 -m --download-metadata --download_path="/var/www/html/yum/EL/EL7_Mirror"
Repository hosting is listed more than once in the configuration
firefox-60.6.0-3.0.1.el7_6.src FAILED
firefox-60.6.0-3.0.1.el7_6.src: [Errno 256] No more mirrors to try.                            ]  0.0 B/s |    0 B  --:--:-- ETA<[pre>

This could occur during an ansible play.

TASK [sync preprod EL7 to prod] ******************************************************************************************************************
fatal: [yumserver01]: FAILED! => {"changed": true, "cmd": "/usr/bin/reposync --source --repoid=EL7 -m --download-metadata --download_path=\"/var/www/html/yum/EL/EL7_Mirror\"", "delta": "0:04:35.805969", "end": "2019-04-17 08:27:22.119744", "msg": "non-zero return code", "rc": 1, "start": "2019-04-17 08:22:46.313775", "stderr": "", "stderr_lines": [], "stdout": "Repository hosting is listed more than once in the configuration\n\rfirefox-60.6.1-1.0.1.el7_6.src FAILED                                          \n\r(1/34): firefox-60.6.0-3.0 0% [                 ]  0.0 B/s |    0 B   --:-- ETA \r\rfirefox-60.6.0-3.0.1.el7_6.src FAILED                                          \n\r(1/34): firefox-60.6.0-3.0 0% [                 ]  0.0 B/s |    0 B   --:-- ETA \r\r(1/34): freerdp-1.0.2-15.e 0% [                 ]  0.0 B/s | 2.5 MB   --:-- ETA \r\rfreerdp-1.0.2-15.el7_6.1.src.r FAILED                                          \n\r(1/34): freerdp-1.0.2-15.e 0% [                 ]  0.0 B/s | 2.5 MB   --:-- ETA \r\rfreerdp-1.0.2-15.el7_6.1.src.r FAILED                                          \n\r(1/34): freerdp-1.0.2-15.e 0% [                 ]  0.0 B/s | 2.5 MB   --:-- ETA \r\rfreerdp-1.0.2-15.el7_6.1.src.r FAILED                                          \n\r(1/34): freerdp-1.0.2-15.e 0% [                 ]  0.0 B/s | 2.5 MB   --:-- ETA \r\rfreerdp-1
.............................. TRUNCATED ..............................
 0.0 B/s | 2.5 MB   --:-- ETA ", "", "tzdata-java-2019a-1.el7.noarch FAILED                                          ", "", "(1/34): tzdata-java-2019a- 0% [                 ]  0.0 B/s | 2.5 MB   --:-- ETA ", "libwsman1-2.6.3-6.git4391e5c.el7_6.i686: [Errno 256] No more mirrors to try.", "openwsman-client-2.6.3-6.git4391e5c.el7_6.i686: [Errno 256] No more mirrors to try.", "tuned-utils-2.10.0-6.0.1.el7_6.3.noarch: [Errno 256] No more mirrors to try.", "openwsman-server-2.6.3-6.git4391e5c.el7_6.x86_64: [Errno 256] No more mirrors to try.", "sbd-1.3.1-8.2.el7_6.1.x86_64: [Errno 256] No more mirrors to try.", "libwsman1-2.6.3-6.git4391e5c.el7_6.x86_64: [Errno 256] No more mirrors to try.", "sbd-1.3.1-8.2.el7_6.1.src: [Errno 256] No more mirrors to try.", "freerdp-1.0.2-15.el7_6.1.x86_64: [Errno 256] No more mirrors to try.", "freerdp-plugins-1.0.2-15.el7_6.1.x86_64: [Errno 256] No more mirrors to try.", "openwsman-client-2.6.3-6.git4391e5c.el7_6.x86_64: [Errno 256] No more mirrors to try.", "ocfs2-tools-1.8.6-11.el7.x86_64: [Errno 256] No more mirrors to try.", "python-2.7.5-77.0.1.el7_6.src: [Errno 256] No more mirrors to try.", "tuned-2.10.0-6.0.1.el7_6.3.noarch: [Errno 256] No more mirrors to try.", "firefox-60.6.0-3.0.1.el7_6.src: [Errno 256] No more mirrors to try.", "freerdp-libs-1.0.2-15.el7_6.1.i686: [Errno 256] No more mirrors to try.", "freerdp-1.0.2-15.el7_6.1.src: [Errno 256] No more mirrors to try.", "freerdp-libs-1.0.2-15.el7_6.1.x86_64: [Errno 256] No more mirrors to try.", "ghostscript-9.07-31.el7_6.10.i686: [Errno 256] No more mirrors to try.", "ocfs2-tools-1.8.6-11.el7.src: [Errno 256] No more mirrors to try.", "tzdata-java-2019a-1.el7.noarch: [Errno 256] No more mirrors to try.", "ghostscript-9.07-31.el7_6.10.x86_64: [Errno 256] No more mirrors to try.", "openwsman-2.6.3-6.git4391e5c.el7_6.src: [Errno 256] No more mirrors to try.", "tuned-profiles-cpu-partitioning-2.10.0-6.0.1.el7_6.3.noarch: [Errno 256] No more mirrors to try.", "firefox-60.6.1-1.0.1.el7_6.src: [Errno 256] No more mirrors to try.", "thunderbird-60.6.1-1.0.1.el7_6.src: [Errno 256] No more mirrors to try.", "openwsman-server-2.6.3-6.git4391e5c.el7_6.i686: [Errno 256] No more mirrors to try.", "libssh2-1.4.3-12.el7_6.2.src: [Errno 256] No more mirrors to try.", "pcs-0.9.165-6.0.3.el7_6.1.x86_64: [Errno 256] No more mirrors to try.", "openwsman-python-2.6.3-6.git4391e5c.el7_6.x86_64: [Errno 256] No more mirrors to try.", "pcs-0.9.165-6.0.3.el7_6.1.src: [Errno 256] No more mirrors to try.", "tuned-2.10.0-6.0.1.el7_6.3.src: [Errno 256] No more mirrors to try.", "tzdata-2019a-1.el7.src: [Errno 256] No more mirrors to try.", "ghostscript-9.07-31.el7_6.10.src: [Errno 256] No more mirrors to try."]}
        to retry, use: --limit @/etc/ansible/retries/reposync-prod.retry
PLAY RECAP **********************************************************************************************************************************************
yumserver01               : ok=1    changed=0    unreachable=0    failed=1

Possible causes

The original rpm files could be malformed, so even though the reposync client is successfully downloading whatever the server provided, the rpm does not match the checksum in the yum metadata files.

Fix #1

  1. Run the command manually to learn the whole list. Save it down to a file.
    # time /usr/bin/reposync --source --repoid=EL7 -m --download-metadata --download_path="/var/www/html/yum/EL/EL7_Mirror"
    Repository hosting is listed more than once in the configuration
    firefox-60.6.0-3.0.1.el7_6.src FAILED
    firefox-60.6.0-3.0.1.el7_6.src: [Errno 256] No more mirrors to try.                            ]  0.0 B/s |    0 B  --:--:-- ETA

    The file used in the documented example consisted of about 30 packages.
    file: bad.in

    firefox-60.6.0-3.0.1.el7_6.src
    firefox-60.6.1-1.0.1.el7_6.src
    freerdp-1.0.2-15.el7_6.1.src
    freerdp-1.0.2-15.el7_6.1.x86_64
    freerdp-libs-1.0.2-15.el7_6.1.i686
    freerdp-libs-1.0.2-15.el7_6.1.x86_64
    freerdp-plugins-1.0.2-15.el7_6.1.x86_64
    ghostscript-9.07-31.el7_6.10.i686
    ghostscript-9.07-31.el7_6.10.src
  2. On the reposync client delete or move to a temp directory the failed files. You could use a shell script similar to the following.
    #!/bin/sh
    INFILE=/root/bad.in
    INDIR=/var/www/html/yum/EL/EL7_Mirror/EL7
    OUTDIR=/root/orig/
    mkdir -p "${OUTDIR}"
    find $(
    for word in $( cat "${INFILE}" ) ;
    do
       find "${INDIR}" -name "${word}*rpm"
    done
    ) -print -exec mv {} "${OUTDIR}" \;
    
  3. On the repo server, manually download the files. You could modify the input file to have the upstream URLs.
    bad.in.url

    http://upstream.example.com/repo/EL/EL7/latest/x86_64/getPackage/tuned-utils-2.10.0-6.0.1.el7_6.3.noarch.rpm
    http://upstream.example.com/repo/EL/EL7/latest/x86_64/getPackage/tzdata-java-2019a-1.el7.noarch.rpm
    http://upstream.example.com/repo/EL/EL7/latest/x86_64/getPackageSource/firefox-60.6.0-3.0.1.el7_6.src.rpm
    http://upstream.example.com/repo/EL/EL7/latest/x86_64/getPackageSource/firefox-60.6.1-1.0.1.el7_6.src.rpm
    http://upstream.example.com/repo/EL/EL7/latest/x86_64/getPackageSource/freerdp-1.0.2-15.el7_6.1.src.rpm
    .... TRUNCATED .....                                                                                                                                                     
    

    You could use a shell script similar to the following.

    #!/bin/sh
    INFILE=/root/bad.in.url
    INDIR=/var/www/html/yum/EL/EL7_Mirror/EL7/getPackage/
    INDIRSRC=/var/www/html/yum/EL/EL7_Mirror/EL7/getPackageSource/
     
    for word in $( cat "${INFILE}" ) ;
    do
       if echo "${word}" | grep -q getPackageSource ;
       then
          cd "${INDIRSRC}"
       else
          cd "${INDIR}"
       fi
       #echo "$( pwd ) --> ${word}"
       wget "${word}"
    done
  4. Rerun the reposync manually and make sure it works.

yum: curl error #63: callback aborted

Symptom

The following message occurs.

http://yum01.ad.example.com/yum/mirror/kernel/getPackage/kernel-doc-4.0.5-124.16.4.el7.noarch.rpm: [Errno 14] curl#63 - "Callback aborted"
Trying other mirror.
 
 
Error downloading packages:
  kernel-doc-4.1.12-124.16.4.el7.noarch: [Errno 256] No more mirrors to try.

Possible causes

When yum fails to download a file due to “curl error #63: Callback aborted,” that means that reposync downloaded the rpm file incorrectly. It doesn’t match the expected checksum in the metadata file.

Fix #1

  1. On the mirror server (probably yum01), delete the offending files and download them manually from upstream.
    #!/bin/sh
    urldir=http://yum.upstream.example.com/repo/EL7/Mirror/x86_64/getPackage/
    outdir=/var/www/html/yum/repo/EL7_Mirror/Mirror/getPackage
    cd "${outdir}"
    
    for word in kernel-4.0.5-124.16.4.el7.x86_64.rpm 
    kernel-debug-4.0.5-124.16.4.el7.x86_64.rpm 
    kernel-debug-devel-4.0.5-124.16.4.el7.x86_64.rpm 
    kernel-devel-4.0.5-124.16.4.el7.x86_64.rpm 
    kernel-doc-4.0.5-124.16.4.el7.noarch.rpm 
    kernel-firmware-4.0.5-124.16.4.el7.noarch.rpm;
    do
       /bin/rm -f "${word}"
       wget "${urldir}${word}"
    done
  2. On the squid proxy server (probably proxy01), purge the cached files.
    #!/bin/sh
    # reference:
    #time squidclient -h localhost -r -p 3128 -m PURGE http://yum01.ad.example.com/yum/Mirror/EL7/getPackage/kernel-4.0.5-124.16.4.el7.x86_64.rpm
    
    urldir=http://yum.upstream.example.com/repo/EL7/Mirror/x86_64/getPackage/
    outdir=/var/www/html/yum/repo/EL7_Mirror/Mirror/getPackage
    
    for word in kernel-4.0.5-124.16.4.el7.x86_64.rpm 
    kernel-debug-4.0.5-124.16.4.el7.x86_64.rpm 
    kernel-debug-devel-4.0.5-124.16.4.el7.x86_64.rpm 
    kernel-devel-4.0.5-124.16.4.el7.x86_64.rpm 
    kernel-doc-4.0.5-124.16.4.el7.noarch.rpm 
    kernel-firmware-4.0.5-124.16.4.el7.noarch.rpm;
    do
       squidclient -h localhost -r -p 3128 -m PURGE "${urldir}${word}"
    done