fatal: destination path '/usr/libexec/webmin/.~files/webadmin' already exists and is not an empty directory

Updating Webmin on CLI using the /usr/libexec/webmin/update-from-repo.sh gives some errors like, for example:

fatal: destination path '/usr/libexec/webmin/.~files/webadmin' already exists and is not an empty directory.
Start update for Webmin 1.89410170250...mkdir: cannot create directory ‘/usr/libexec/webmin/.~files/webadmin/tarballs’: File exists
cp: cannot stat ‘authentic-theme/LICENSE’: No such file or directory
chmod: cannot access ‘*.pl’: No such file or directory
chmod: cannot access ‘*.cgi’: No such file or directory
chmod: cannot access ‘*.pm’: No such file or directory
chmod: cannot access ‘*.sh’: No such file or directory
chmod: cannot access ‘*/*.cgi’: No such file or directory
chmod: cannot access ‘*/*.pm’: No such file or directory
cat: version: No such file or directory
Updating Webmin  to Version , done

Eventually, the update completes successfully, however I believe you could improve the update script by using if condition to exclude outputting the above errors and correctly fetching the version in the last line.

Here is the whole log:

/usr/libexec/webmin/update-from-repo.sh

Webmin detected ...
Search for  configuration ... found: /etc/webmin/miniserv.conf
Config path for Webmin is:  /etc/webmin
Install path for Webmin is: /usr/libexec/webmin

Warning: you are updating from DEV repository https://github.com/webmin/webmin , this may break your installation!
Would you like to update Webmin from https://github.com/webmin/webmin [y/N] y
Pulling in latest changes for Webmin  (https://github.com/webmin/webmin) ...
fatal: destination path '/usr/libexec/webmin/.~files/webadmin' already exists and is not an empty directory.
Start update for Webmin 1.89410170250...mkdir: cannot create directory ‘/usr/libexec/webmin/.~files/webadmin/tarballs’: File exists
mkdir: cannot create directory ‘/usr/libexec/webmin/.~files/webadmin/authentic-theme’: File exists
cp: cannot stat ‘authentic-theme/LICENSE’: No such file or directory
.......................................................................................................................................

ls: cannot access */module.info: No such file or directory
Insert perl path /usr/bin/perl ...
***********************************************************************
*            Welcome to the Webmin setup script, version 1.89410170250        *
***********************************************************************
Webmin is a web-based interface that allows Unix-like operating
systems and common Unix services to be easily administered.
Installing Webmin from /usr/libexec/webmin/.~files/webadmin/tarballs/webmin-1.89410170250 to /usr/libexec/webmin ...
***********************************************************************
Webmin uses separate directories for configuration files and log files.
Unless you want to run multiple versions of Webmin at the same time
you can just accept the defaults.
Config file directory [/etc/webmin]: Found existing Webmin configuration in /etc/webmin
Copying files to /usr/libexec/webmin ..
Creating start and stop scripts..
Updating config files..
Changing ownership and permissions ..
Running postinstall scripts ..
Subroutine list_users redefined at /usr/libexec/webmin/acl/acl-lib.pl line 42.
Subroutine get_user redefined at /usr/libexec/webmin/acl/acl-lib.pl line 191.
Subroutine list_groups redefined at /usr/libexec/webmin/acl/acl-lib.pl line 215.
Subroutine get_group redefined at /usr/libexec/webmin/acl/acl-lib.pl line 323.
Subroutine list_modules redefined at /usr/libexec/webmin/acl/acl-lib.pl line 336.
Subroutine list_module_infos redefined at /usr/libexec/webmin/acl/acl-lib.pl line 347.
Subroutine create_user redefined at /usr/libexec/webmin/acl/acl-lib.pl line 361.
Subroutine modify_user redefined at /usr/libexec/webmin/acl/acl-lib.pl line 529.
Subroutine add_old_password redefined at /usr/libexec/webmin/acl/acl-lib.pl line 750.
Subroutine delete_user redefined at /usr/libexec/webmin/acl/acl-lib.pl line 781.
Subroutine create_group redefined at /usr/libexec/webmin/acl/acl-lib.pl line 936.
Subroutine modify_group redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1031.
Subroutine delete_group redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1137.
Subroutine group_line redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1239.
Subroutine acl_line redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1254.
Subroutine can_edit_user redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1265.
Subroutine open_session_db redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1294.
Subroutine delete_session_id redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1322.
Subroutine delete_session_user redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1342.
Subroutine rename_session_user redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1369.
Subroutine update_members redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1397.
Subroutine copy_acl_files redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1439.
Subroutine copy_group_acl_files redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1554.
Subroutine copy_group_user_acl_files redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1572.
Subroutine set_acl_files redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1594.
Subroutine get_ssleay redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1632.
Subroutine encrypt_password redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1654.
Subroutine get_unixauth redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1679.
Subroutine save_unixauth redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1701.
Subroutine delete_from_groups redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1721.
Subroutine get_users_group redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1740.
Subroutine check_password_restrictions redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1757.
Subroutine hash_session_id redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1801.
Subroutine hash_md5_session redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1823.
Subroutine md5_perl_module redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1880.
Subroutine session_db_key redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1902.
Subroutine setup_anonymous_access redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1916.
Subroutine join_userdb_string redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1967.
Subroutine validate_userdb redefined at /usr/libexec/webmin/acl/acl-lib.pl line 1983.
Subroutine userdb_table_sql redefined at /usr/libexec/webmin/acl/acl-lib.pl line 2081.
Subroutine used_for_anonymous redefined at /usr/libexec/webmin/acl/acl-lib.pl line 2154.
Subroutine check_md5 redefined at /usr/libexec/webmin/acl/md5-lib.pl line 11.
Subroutine encrypt_md5 redefined at /usr/libexec/webmin/acl/md5-lib.pl line 29.
Subroutine unix_crypt_supports_md5 redefined at /usr/libexec/webmin/acl/md5-lib.pl line 117.
Subroutine to64 redefined at /usr/libexec/webmin/acl/md5-lib.pl line 126.
Subroutine check_sha1 redefined at /usr/libexec/webmin/acl/md5-lib.pl line 137.
Subroutine encrypt_sha1 redefined at /usr/libexec/webmin/acl/md5-lib.pl line 145.
Subroutine encrypt_sha1_hash redefined at /usr/libexec/webmin/acl/md5-lib.pl line 154.
Subroutine check_blowfish redefined at /usr/libexec/webmin/acl/md5-lib.pl line 162.
Subroutine encrypt_blowfish redefined at /usr/libexec/webmin/acl/md5-lib.pl line 170.
Subroutine unix_crypt_supports_sha512 redefined at /usr/libexec/webmin/acl/md5-lib.pl line 194.
Subroutine check_sha512 redefined at /usr/libexec/webmin/acl/md5-lib.pl line 203.
Subroutine encrypt_sha512 redefined at /usr/libexec/webmin/acl/md5-lib.pl line 210.
Subroutine validate_password redefined at /usr/libexec/webmin/acl/md5-lib.pl line 220.
Subroutine is_dictionary_word redefined at /usr/libexec/webmin/acl/md5-lib.pl line 261.
Attempting to start Webmin mini web server..
Starting Webmin server in /usr/libexec/webmin
Pre-loaded virtual-server/virtual-server-lib-funcs.pl in virtual_server
Pre-loaded virtual-server/feature-unix.pl in virtual_server
Pre-loaded virtual-server/feature-dir.pl in virtual_server
Pre-loaded virtual-server/feature-dns.pl in virtual_server
Pre-loaded virtual-server/feature-mail.pl in virtual_server
Pre-loaded virtual-server/feature-web.pl in virtual_server
Pre-loaded virtual-server/feature-webalizer.pl in virtual_server
Pre-loaded virtual-server/feature-ssl.pl in virtual_server
Pre-loaded virtual-server/feature-logrotate.pl in virtual_server
Pre-loaded virtual-server/feature-mysql.pl in virtual_server
Pre-loaded virtual-server/feature-postgres.pl in virtual_server
Pre-loaded virtual-server/feature-ftp.pl in virtual_server
Pre-loaded virtual-server/feature-spam.pl in virtual_server
Pre-loaded virtual-server/feature-virus.pl in virtual_server
Pre-loaded virtual-server/feature-webmin.pl in virtual_server
Pre-loaded virtual-server/feature-virt.pl in virtual_server
Pre-loaded virtual-server/feature-virt6.pl in virtual_server
***********************************************************************
Webmin has been installed and started successfully. Use your web
browser to go to
  https://host.domain.tld:10000/
and login with the name and password you entered previously.
Because Webmin uses SSL for encryption only, the certificate
it uses is not signed by one of the recognized CAs such as
Verisign. When you first connect to the Webmin server, your
browser will ask you if you want to accept the certificate
presented, as it does not recognize the CA. Say yes.

Compile UTF-8 lang files ...
Clean up temporary files ...
Make scripts executable ...
chmod: cannot access ‘*.pl’: No such file or directory
chmod: cannot access ‘*.cgi’: No such file or directory
chmod: cannot access ‘*.pm’: No such file or directory
chmod: cannot access ‘*.sh’: No such file or directory
chmod: cannot access ‘*/*.cgi’: No such file or directory
chmod: cannot access ‘*/*.pm’: No such file or directory
cat: version: No such file or directory

Updating Webmin  to Version , done
Status: 
Closed (fixed)

Comments

Body: View changes

To replicate the errors you might want to execute the /usr/libexec/webmin/update-from-repo.sh command twice. I know you are supposed to runt it just once, however any script must be fool-proof.

Body: View changes

Initially, I thought this is a minor issue, however in fact this breaks the Authentic Theme upgrade reported on https://www.virtualmin.com/node/59225. To fix I had to manually delete the /usr/libexec/webmin/.~files directory. Please change the script to properly clean up after itself, so the consecutive theme updates/upgrades do not break.

Ilia's picture
Submitted by Ilia on Sun, 10/28/2018 - 11:08

So, after installing latest patches, did it fix the issue?

Does the dashboard load fine?

So, after installing latest patches, did it fix the issue?

The issue - the subject matter of this ticket - is still there and I believe Jamie needs to add rm -rf /usr/libexec/webmin/.~files directive to Webmin's RPM spec file to fix this.

Does the dashboard load fine?

Yes, the dashboards loads just as desired and I confirmed it on the respective issue page on https://www.virtualmin.com/node/43117 and marked it as Fixed (pending). As for this different issue, let's keep it open until Webmin updates correctly without giving the reported error.

Ilia's picture
Submitted by Ilia on Sun, 10/28/2018 - 12:17

No, actually there is a way to clear tmp files, when bash script is interrupted ^C. I did this for my update theme script but Webmin update script is missing it. I'll take a look in case Kay won't.

Ilia's picture
Submitted by Ilia on Tue, 10/30/2018 - 03:01

Okay, after looking at the script, instead of guessing, the issue is fixed.

Thanks for reporting.

Ilia's picture
Submitted by Ilia on Tue, 10/30/2018 - 03:01

Status: Active » Fixed (pending)

Thanks, Ilia! I wonder what is the purpose of the following code there:

COPY=" Kay Marquardt <kay@rrr.de>         https://github.com/gnadelwartz"

Who is the guy? Never heard his name before while using *min.

Ilia's picture
Submitted by Ilia on Tue, 10/30/2018 - 05:01

Kay, came up with making update script for Webmin/Usermin and helped with fixing/improving other other modules.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.