Thank you Mike for your swift reply. You'll forgive my ignorance in not 100% understanding the context of what GUACAMOLE-745 and GUACAMOLE-1553 are referring to but let me try to see if I have the right of it.
According to 1553, you advise that the lines of code in question are no longer part of the current source on Git. 745 outlines the fixes that were done to address the confusion of this issue and its complex nature. While the hope is that this may be ready for 1.5.0, it is likely not going to be but there is an acceptance that a better solution needs to exist for such issues. Finally, the solution in this case, would be to compile Guacamole Server 1.4.0 from the current source on Git and not via the download packages on the site? If that is indeed the case, might I suggest a rewording of the following: *If you are looking for the absolute latest unreleased code (or extremely old code not archived here), please check our git repositories on GitHub.* at https://guacamole.apache.org/releases/ the reason being that I did indeed go to the Git first but all advisings seem to suggest to not use the unreleased code. Pragmatically, I get it but perhaps an addendum about OpenSSL 3.0 will help things in the interim? Do I have the right assessment of things? I am still learning a lot of this, so again, forgive my ignorance as I usually like to resolve and solve on my own. HAHA! On Thu, Jan 5, 2023 at 6:48 PM Michael Jumper <[email protected]> wrote: > This should already be addressed on the "master" branch in git via > GUACAMOLE-745. > > See: > > https://issues.apache.org/jira/browse/GUACAMOLE-745 > https://issues.apache.org/jira/browse/GUACAMOLE-1553 > > The code in question no longer exists as of GUACAMOLE-745. > > - Mike > > > On Thu, Jan 5, 2023 at 2:01 PM Ryan Isenor <[email protected]> > wrote: > >> Hello, >> >> I am trying to compile Guacamole Server 1.4.0 on Linux Mint 21 and though >> I am slowly working my way through a lot of the bugs and questions I >> previously had, I have hit a roadblock here with OpenSSL 3.0 deprecated >> errors. In order to provide you the context, I have uploaded the terminal >> script for the /$ make install: https://pastebin.com/Qhh7gWfq In an >> effort to try to resolve the issue myself, or at the very least acquire >> some knowledge as to what the error is and how I might correct it, I >> consulted ChatGPT and received a response that is attached to this email as >> a .txt file. In an effort to respect the privacy and security of the list, >> I have also upload that .txt file here: https://pastebin.com/UahxSzn6 >> >> For the security and privacy conscious, the full script is below. My >> question, given that ChatGPT explained what is going on and how to fix it, >> is what precautions I should take and whether or not I should follow the >> advice of ChatGPT which is either suggesting I compile in OpenSSL 2.0 or >> replace the deprecated functions. Any help on expanding the insight >> provided would be greatly appreciated. >> >> *****@********:~/Downloads/guacamole-server-1.4.0$ autoreconf -fi >> libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'. >> libtoolize: copying file 'build-aux/ltmain.sh' >> libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'. >> libtoolize: copying file 'm4/libtool.m4' >> libtoolize: copying file 'm4/ltoptions.m4' >> libtoolize: copying file 'm4/ltsugar.m4' >> libtoolize: copying file 'm4/ltversion.m4' >> libtoolize: copying file 'm4/lt~obsolete.m4' >> configure.ac:29: warning: The macro `AC_CONFIG_HEADER' is obsolete. >> configure.ac:29: You should run autoupdate. >> ./lib/autoconf/status.m4:719: AC_CONFIG_HEADER is expanded from... >> configure.ac:29: the top level >> configure.ac:37: warning: The macro `AC_PROG_CC_C99' is obsolete. >> configure.ac:37: You should run autoupdate. >> ./lib/autoconf/c.m4:1659: AC_PROG_CC_C99 is expanded from... >> configure.ac:37: the top level >> configure.ac:38: warning: The macro `AC_PROG_LIBTOOL' is obsolete. >> configure.ac:38: You should run autoupdate. >> m4/libtool.m4:99: AC_PROG_LIBTOOL is expanded from... >> configure.ac:38: the top level >> configure.ac:27: installing 'build-aux/compile' >> configure.ac:23: installing 'build-aux/missing' >> src/common-ssh/Makefile.am: installing 'build-aux/depcomp' >> *****@********:~/Downloads/guacamole-server-1.4.0$ ./configure >> --with-init-dir=/etc/init.d >> checking for a BSD-compatible install... /usr/bin/install -c >> checking whether build environment is sane... yes >> checking for a race-free mkdir -p... /usr/bin/mkdir -p >> checking for gawk... gawk >> checking whether make sets $(MAKE)... yes >> checking whether make supports nested variables... yes >> checking whether make supports nested variables... (cached) yes >> checking build system type... x86_64-pc-linux-gnu >> checking host system type... x86_64-pc-linux-gnu >> checking how to print strings... printf >> checking whether make supports the include directive... yes (GNU style) >> checking for gcc... gcc >> checking whether the C compiler works... yes >> checking for C compiler default output file name... a.out >> checking for suffix of executables... >> checking whether we are cross compiling... no >> checking for suffix of object files... o >> checking whether the compiler supports GNU C... yes >> checking whether gcc accepts -g... yes >> checking for gcc option to enable C11 features... none needed >> checking whether gcc understands -c and -o together... yes >> checking dependency style of gcc... gcc3 >> checking for a sed that does not truncate output... /usr/bin/sed >> checking for grep that handles long lines and -e... /usr/bin/grep >> checking for egrep... /usr/bin/grep -E >> checking for fgrep... /usr/bin/grep -F >> checking for ld used by gcc... /usr/bin/ld >> checking if the linker (/usr/bin/ld) is GNU ld... yes >> checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B >> checking the name lister (/usr/bin/nm -B) interface... BSD nm >> checking whether ln -s works... yes >> checking the maximum length of command line arguments... 1572864 >> checking how to convert x86_64-pc-linux-gnu file names to >> x86_64-pc-linux-gnu format... func_convert_file_noop >> checking how to convert x86_64-pc-linux-gnu file names to toolchain >> format... func_convert_file_noop >> checking for /usr/bin/ld option to reload object files... -r >> checking for objdump... objdump >> checking how to recognize dependent libraries... pass_all >> checking for dlltool... no >> checking how to associate runtime and link libraries... printf %s\n >> checking for ar... ar >> checking for archiver @FILE support... @ >> checking for strip... strip >> checking for ranlib... ranlib >> checking command to parse /usr/bin/nm -B output from gcc object... ok >> checking for sysroot... no >> checking for a working dd... /usr/bin/dd >> checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1 >> checking for mt... mt >> checking if mt is a manifest tool... no >> checking for stdio.h... yes >> checking for stdlib.h... yes >> checking for string.h... yes >> checking for inttypes.h... yes >> checking for stdint.h... yes >> checking for strings.h... yes >> checking for sys/stat.h... yes >> checking for sys/types.h... yes >> checking for unistd.h... yes >> checking for dlfcn.h... yes >> checking for objdir... .libs >> checking if gcc supports -fno-rtti -fno-exceptions... no >> checking for gcc option to produce PIC... -fPIC -DPIC >> checking if gcc PIC flag -fPIC -DPIC works... yes >> checking if gcc static flag -static works... yes >> checking if gcc supports -c -o file.o... yes >> checking if gcc supports -c -o file.o... (cached) yes >> checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports >> shared libraries... yes >> checking whether -lc should be explicitly linked in... no >> checking dynamic linker characteristics... GNU/Linux ld.so >> checking how to hardcode library paths into programs... immediate >> checking for shl_load... no >> checking for shl_load in -ldld... no >> checking for dlopen... yes >> checking whether a program can dlopen itself... yes >> checking whether a statically linked program can dlopen itself... no >> checking whether stripping libraries is possible... yes >> checking if libtool supports shared libraries... yes >> checking whether to build shared libraries... yes >> checking whether to build static libraries... yes >> checking for gcc... (cached) gcc >> checking whether the compiler supports GNU C... (cached) yes >> checking whether gcc accepts -g... (cached) yes >> checking for gcc option to enable C11 features... (cached) none needed >> checking whether gcc understands -c and -o together... (cached) yes >> checking dependency style of gcc... (cached) gcc3 >> checking for fcntl.h... yes >> checking for stdlib.h... (cached) yes >> checking for string.h... (cached) yes >> checking for sys/socket.h... yes >> checking for time.h... yes >> checking for sys/time.h... yes >> checking for syslog.h... yes >> checking for unistd.h... (cached) yes >> checking for cairo/cairo.h... yes >> checking for pngstruct.h... no >> checking for gcc options needed to detect all undeclared functions... >> none needed >> checking for cos in -lm... yes >> checking for png_write_png in -lpng... yes >> checking for jpeg_start_compress in -ljpeg... yes >> checking for cairo_create in -lcairo... yes >> checking for pthread_create in -lpthread... yes >> checking for dlopen in -ldl... yes >> checking for uuid_generate in -luuid... yes >> checking for CU_run_test in -lcunit... no >> checking for clock_gettime... yes >> checking for gettimeofday... yes >> checking for memmove... yes >> checking for memset... yes >> checking for select... yes >> checking for strdup... yes >> checking for nanosleep... yes >> checking whether png_get_io_ptr is declared... yes >> checking whether cairo_format_stride_for_width is declared... yes >> checking whether poll is declared... yes >> checking whether strlcpy is declared... no >> checking whether strlcat is declared... no >> checking for size_t... yes >> checking for ssize_t... yes >> checking for pkg-config... /usr/bin/pkg-config >> checking pkg-config is at least version 0.9.0... yes >> checking for libavcodec... yes >> checking for libavformat... yes >> checking for libavutil... yes >> checking for libswscale... yes >> checking for openssl/ssl.h... yes >> checking for SSL_CTX_new in -lssl... yes >> checking whether DSA_SIG_get0 is declared... yes >> checking whether DSA_get0_pqg is declared... yes >> checking whether DSA_get0_key is declared... yes >> checking whether RSA_get0_key is declared... yes >> checking whether libssl requires threading callbacks... no >> checking for main in -lwsock32... no >> checking for vorbis/vorbisenc.h... yes >> checking for ogg_stream_init in -logg... yes >> checking for vorbis_block_init in -lvorbis... yes >> checking for vorbis_encode_init in -lvorbisenc... yes >> checking for pa_context_new in -lpulse... yes >> checking for pango... yes >> checking for pangocairo... yes >> checking for rfbInitClient in -lvncclient... yes >> checking whether LIBVNCSERVER_WITH_CLIENT_GCRYPT is declared... no >> checking for rfbClient.destHost... yes >> checking for rfbClient.destPort... yes >> checking whether listenForIncomingConnectionsNoFork is declared... yes >> checking for rfbClient.LockWriteToTLS... yes >> checking for rfbClient.UnlockWriteToTLS... yes >> checking for rfbClient.GetCredential... yes >> checking for freerdp2 freerdp-client2 winpr2... yes >> checking whether FreeRDPConvertColor is declared... yes >> checking whether FreeRDP appears to be a development version... checking >> how to run the C preprocessor... gcc -E >> no >> checking whether Bitmap_Free() frees the rdpBitmap and its image data... >> no >> checking whether pVirtualChannelWriteEx() frees the wStream upon >> completion... no >> checking whether rdpGlyph callbacks accept INT32 integer parameters... yes >> checking whether CLIPRDR callbacks require const for their final >> parameter... yes >> checking whether RAIL callbacks require const for their final >> parameter... yes >> checking for rdpSettings.AllowUnanouncedOrdersFromServer... yes >> checking for freerdp.VerifyCertificateEx... yes >> checking for libssh2_session_init_ex in -lssh2... yes >> checking for gcry_control in -lssh2... no >> checking for telnet_init in -ltelnet... yes >> checking for webp/encode.h... yes >> checking for WebPEncode in -lwebp... yes >> checking for lws_create_context in -lwebsockets... yes >> checking whether LWS_CALLBACK_CLIENT_CLOSED is declared... yes >> checking whether LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT is declared... yes >> checking whether LCCSCF_USE_SSL is declared... yes >> checking whether lws_callback_http_dummy is declared... yes >> checking that generated files are newer than configure... done >> configure: creating ./config.status >> config.status: creating Makefile >> config.status: creating doc/Doxyfile >> config.status: creating src/common/Makefile >> config.status: creating src/common/tests/Makefile >> config.status: creating src/common-ssh/Makefile >> config.status: creating src/common-ssh/tests/Makefile >> config.status: creating src/terminal/Makefile >> config.status: creating src/libguac/Makefile >> config.status: creating src/libguac/tests/Makefile >> config.status: creating src/guacd/Makefile >> config.status: creating src/guacd/man/guacd.8 >> config.status: creating src/guacd/man/guacd.conf.5 >> config.status: creating src/guacenc/Makefile >> config.status: creating src/guacenc/man/guacenc.1 >> config.status: creating src/guaclog/Makefile >> config.status: creating src/guaclog/man/guaclog.1 >> config.status: creating src/pulse/Makefile >> config.status: creating src/protocols/kubernetes/Makefile >> config.status: creating src/protocols/kubernetes/tests/Makefile >> config.status: creating src/protocols/rdp/Makefile >> config.status: creating src/protocols/rdp/tests/Makefile >> config.status: creating src/protocols/ssh/Makefile >> config.status: creating src/protocols/telnet/Makefile >> config.status: creating src/protocols/vnc/Makefile >> config.status: creating config.h >> config.status: executing depfiles commands >> config.status: executing libtool commands >> >> ------------------------------------------------ >> guacamole-server version 1.4.0 >> ------------------------------------------------ >> >> Library status: >> >> freerdp2 ............ yes >> pango ............... yes >> libavcodec .......... yes >> libavformat.......... yes >> libavutil ........... yes >> libssh2 ............. yes >> libssl .............. yes >> libswscale .......... yes >> libtelnet ........... yes >> libVNCServer ........ yes >> libvorbis ........... yes >> libpulse ............ yes >> libwebsockets ....... yes >> libwebp ............. yes >> wsock32 ............. no >> >> Protocol support: >> >> Kubernetes .... yes >> RDP ........... yes >> SSH ........... yes >> Telnet ........ yes >> VNC ........... yes >> >> Services / tools: >> >> guacd ...... yes >> guacenc .... yes >> guaclog .... yes >> >> FreeRDP plugins: /usr/lib/x86_64-linux-gnu/freerdp2 >> Init scripts: /etc/init.d >> Systemd units: no >> >> Type "make" to compile guacamole-server. >> >> *****@********:~/Downloads/guacamole-server-1.4.0$ make >> make all-recursive >> make[1]: Entering directory '/home/vrgyl/Downloads/guacamole-server-1.4.0' >> Making all in src/libguac >> make[2]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac' >> Making all in . >> make[3]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac' >> CC libguac_la-argv.lo >> CC libguac_la-audio.lo >> CC libguac_la-client.lo >> CC libguac_la-encode-jpeg.lo >> CC libguac_la-encode-png.lo >> CC libguac_la-error.lo >> CC libguac_la-hash.lo >> CC libguac_la-id.lo >> CC libguac_la-palette.lo >> CC libguac_la-parser.lo >> CC libguac_la-pool.lo >> CC libguac_la-protocol.lo >> CC libguac_la-raw_encoder.lo >> CC libguac_la-socket.lo >> CC libguac_la-socket-broadcast.lo >> CC libguac_la-socket-fd.lo >> CC libguac_la-socket-nest.lo >> CC libguac_la-socket-tee.lo >> CC libguac_la-string.lo >> CC libguac_la-timestamp.lo >> CC libguac_la-unicode.lo >> CC libguac_la-user.lo >> CC libguac_la-user-handlers.lo >> CC libguac_la-user-handshake.lo >> CC libguac_la-wait-fd.lo >> CC libguac_la-wol.lo >> CC libguac_la-encode-webp.lo >> CC libguac_la-socket-ssl.lo >> CCLD libguac.la >> make[3]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac' >> Making all in tests >> make[3]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests' >> make[3]: Nothing to be done for 'all'. >> make[3]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests' >> make[2]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac' >> Making all in src/common >> make[2]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common' >> Making all in . >> make[3]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common' >> CC libguac_common_la-io.lo >> CC libguac_common_la-blank_cursor.lo >> CC libguac_common_la-clipboard.lo >> CC libguac_common_la-cursor.lo >> CC libguac_common_la-display.lo >> CC libguac_common_la-dot_cursor.lo >> CC libguac_common_la-ibar_cursor.lo >> CC libguac_common_la-iconv.lo >> CC libguac_common_la-json.lo >> CC libguac_common_la-list.lo >> CC libguac_common_la-pointer_cursor.lo >> CC libguac_common_la-recording.lo >> CC libguac_common_la-rect.lo >> CC libguac_common_la-string.lo >> CC libguac_common_la-surface.lo >> CCLD libguac_common.la >> make[3]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common' >> Making all in tests >> make[3]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests' >> make[3]: Nothing to be done for 'all'. >> make[3]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests' >> make[2]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common' >> Making all in src/common-ssh >> make[2]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh' >> Making all in . >> make[3]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh' >> CC libguac_common_ssh_la-buffer.lo >> CC libguac_common_ssh_la-dsa-compat.lo >> CC libguac_common_ssh_la-rsa-compat.lo >> CC libguac_common_ssh_la-sftp.lo >> CC libguac_common_ssh_la-ssh.lo >> CC libguac_common_ssh_la-key.lo >> key.c: In function ‘guac_common_ssh_key_alloc’: >> key.c:63:9: error: ‘PEM_read_bio_RSAPrivateKey’ is deprecated: Since >> OpenSSL 3.0 [-Werror=deprecated-declarations] >> 63 | rsa_key = PEM_read_bio_RSAPrivateKey(key_bio, NULL, NULL, >> passphrase); >> | ^~~~~~~ >> In file included from key.c:33: >> /usr/include/openssl/pem.h:447:1: note: declared here >> 447 | DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, RSAPrivateKey, RSA) >> | ^~~~~~~~~~~~~~~~~~~~~~ >> key.c:79:9: error: ‘RSA_get0_key’ is deprecated: Since OpenSSL 3.0 >> [-Werror=deprecated-declarations] >> 79 | RSA_get0_key(rsa_key, &key_n, &key_e, NULL); >> | ^~~~~~~~~~~~ >> In file included from common-ssh/rsa-compat.h:26, >> from key.c:25: >> /usr/include/openssl/rsa.h:217:28: note: declared here >> 217 | OSSL_DEPRECATEDIN_3_0 void RSA_get0_key(const RSA *r, >> | ^~~~~~~~~~~~ >> key.c:105:9: error: ‘PEM_read_bio_DSAPrivateKey’ is deprecated: Since >> OpenSSL 3.0 [-Werror=deprecated-declarations] >> 105 | dsa_key = PEM_read_bio_DSAPrivateKey(key_bio, NULL, NULL, >> passphrase); >> | ^~~~~~~ >> In file included from key.c:33: >> /usr/include/openssl/pem.h:453:1: note: declared here >> 453 | DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, DSAPrivateKey, DSA) >> | ^~~~~~~~~~~~~~~~~~~~~~ >> key.c:121:9: error: ‘DSA_get0_pqg’ is deprecated: Since OpenSSL 3.0 >> [-Werror=deprecated-declarations] >> 121 | DSA_get0_pqg(dsa_key, &key_p, &key_q, &key_g); >> | ^~~~~~~~~~~~ >> In file included from common-ssh/dsa-compat.h:26, >> from key.c:23: >> /usr/include/openssl/dsa.h:201:28: note: declared here >> 201 | OSSL_DEPRECATEDIN_3_0 void DSA_get0_pqg(const DSA *d, const >> BIGNUM **p, >> | ^~~~~~~~~~~~ >> key.c:122:9: error: ‘DSA_get0_key’ is deprecated: Since OpenSSL 3.0 >> [-Werror=deprecated-declarations] >> 122 | DSA_get0_key(dsa_key, &pub_key, NULL); >> | ^~~~~~~~~~~~ >> In file included from common-ssh/dsa-compat.h:26, >> from key.c:23: >> /usr/include/openssl/dsa.h:204:28: note: declared here >> 204 | OSSL_DEPRECATEDIN_3_0 void DSA_get0_key(const DSA *d, const >> BIGNUM **pub_key, >> | ^~~~~~~~~~~~ >> key.c: In function ‘guac_common_ssh_key_free’: >> key.c:164:9: error: ‘RSA_free’ is deprecated: Since OpenSSL 3.0 >> [-Werror=deprecated-declarations] >> 164 | RSA_free(key->rsa); >> | ^~~~~~~~ >> In file included from common-ssh/rsa-compat.h:26, >> from key.c:25: >> /usr/include/openssl/rsa.h:293:28: note: declared here >> 293 | OSSL_DEPRECATEDIN_3_0 void RSA_free(RSA *r); >> | ^~~~~~~~ >> key.c:166:9: error: ‘DSA_free’ is deprecated: Since OpenSSL 3.0 >> [-Werror=deprecated-declarations] >> 166 | DSA_free(key->dsa); >> | ^~~~~~~~ >> In file included from common-ssh/dsa-compat.h:26, >> from key.c:23: >> /usr/include/openssl/dsa.h:127:28: note: declared here >> 127 | OSSL_DEPRECATEDIN_3_0 void DSA_free(DSA *r); >> | ^~~~~~~~ >> key.c: In function ‘guac_common_ssh_key_sign’: >> key.c:202:13: error: ‘RSA_sign’ is deprecated: Since OpenSSL 3.0 >> [-Werror=deprecated-declarations] >> 202 | if (RSA_sign(NID_sha1, digest, dlen, sig, &len, >> key->rsa) == 1) >> | ^~ >> In file included from common-ssh/rsa-compat.h:26, >> from key.c:25: >> /usr/include/openssl/rsa.h:348:27: note: declared here >> 348 | OSSL_DEPRECATEDIN_3_0 int RSA_sign(int type, const unsigned char >> *m, >> | ^~~~~~~~ >> key.c:208:13: error: ‘DSA_do_sign’ is deprecated: Since OpenSSL 3.0 >> [-Werror=deprecated-declarations] >> 208 | DSA_SIG* dsa_sig = DSA_do_sign(digest, dlen, >> key->dsa); >> | ^~~~~~~ >> In file included from common-ssh/dsa-compat.h:26, >> from key.c:23: >> /usr/include/openssl/dsa.h:113:32: note: declared here >> 113 | OSSL_DEPRECATEDIN_3_0 DSA_SIG *DSA_do_sign(const unsigned char >> *dgst, int dlen, >> | ^~~~~~~~~~~ >> cc1: all warnings being treated as errors >> make[3]: *** [Makefile:591: libguac_common_ssh_la-key.lo] Error 1 >> make[3]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh' >> make[2]: *** [Makefile:617: all-recursive] Error 1 >> make[2]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh' >> make[1]: *** [Makefile:538: all-recursive] Error 1 >> make[1]: Leaving directory '/home/vrgyl/Downloads/guacamole-server-1.4.0' >> make: *** [Makefile:460: all] Error 2 >> *****@********:~/Downloads/guacamole-server-1.4.0$ make install >> Making install in src/libguac >> make[1]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac' >> Making install in . >> make[2]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac' >> make[3]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac' >> /usr/bin/mkdir -p '/usr/local/lib' >> /bin/bash ../../libtool --mode=install /usr/bin/install -c >> libguac.la '/usr/local/lib' >> libtool: install: /usr/bin/install -c .libs/libguac.so.20.0.0 >> /usr/local/lib/libguac.so.20.0.0 >> /usr/bin/install: cannot create regular file >> '/usr/local/lib/libguac.so.20.0.0': Permission denied >> make[3]: *** [Makefile:615: install-libLTLIBRARIES] Error 1 >> make[3]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac' >> make[2]: *** [Makefile:1117: install-am] Error 2 >> make[2]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac' >> make[1]: *** [Makefile:954: install-recursive] Error 1 >> make[1]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac' >> make: *** [Makefile:538: install-recursive] Error 1 >> *****@********:~/Downloads/guacamole-server-1.4.0$ sudo make install >> [sudo] password for vrgyl: >> Making install in src/libguac >> make[1]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac' >> Making install in . >> make[2]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac' >> make[3]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac' >> /usr/bin/mkdir -p '/usr/local/lib' >> /bin/bash ../../libtool --mode=install /usr/bin/install -c >> libguac.la '/usr/local/lib' >> libtool: install: /usr/bin/install -c .libs/libguac.so.20.0.0 >> /usr/local/lib/libguac.so.20.0.0 >> libtool: install: (cd /usr/local/lib && { ln -s -f libguac.so.20.0.0 >> libguac.so.20 || { rm -f libguac.so.20 && ln -s libguac.so.20.0.0 >> libguac.so.20; }; }) >> libtool: install: (cd /usr/local/lib && { ln -s -f libguac.so.20.0.0 >> libguac.so || { rm -f libguac.so && ln -s libguac.so.20.0.0 libguac.so; }; >> }) >> libtool: install: /usr/bin/install -c .libs/libguac.lai /usr/local/lib/ >> libguac.la >> libtool: install: /usr/bin/install -c .libs/libguac.a >> /usr/local/lib/libguac.a >> libtool: install: chmod 644 /usr/local/lib/libguac.a >> libtool: install: ranlib /usr/local/lib/libguac.a >> libtool: finish: >> PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/sbin" >> ldconfig -n /usr/local/lib >> ---------------------------------------------------------------------- >> Libraries have been installed in: >> /usr/local/lib >> >> If you ever happen to want to link against installed libraries >> in a given directory, LIBDIR, you must either use libtool, and >> specify the full pathname of the library, or use the '-LLIBDIR' >> flag during linking and do at least one of the following: >> - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable >> during execution >> - add LIBDIR to the 'LD_RUN_PATH' environment variable >> during linking >> - use the '-Wl,-rpath -Wl,LIBDIR' linker flag >> - have your system administrator add LIBDIR to '/etc/ld.so.conf' >> >> See any operating system documentation about shared libraries for >> more information, such as the ld(1) and ld.so(8) manual pages. >> ---------------------------------------------------------------------- >> /usr/bin/mkdir -p '/usr/local/include/guacamole' >> /usr/bin/install -c -m 644 guacamole/argv.h guacamole/argv-constants.h >> guacamole/argv-fntypes.h guacamole/audio.h guacamole/audio-fntypes.h >> guacamole/audio-types.h guacamole/client-constants.h guacamole/client.h >> guacamole/client-fntypes.h guacamole/client-types.h guacamole/error.h >> guacamole/error-types.h guacamole/hash.h guacamole/layer.h >> guacamole/layer-types.h guacamole/object.h guacamole/object-types.h >> guacamole/parser-constants.h guacamole/parser.h guacamole/parser-types.h >> guacamole/plugin-constants.h guacamole/plugin.h guacamole/pool.h >> guacamole/pool-types.h guacamole/protocol.h guacamole/protocol-constants.h >> guacamole/protocol-types.h guacamole/socket-constants.h guacamole/socket.h >> guacamole/socket-fntypes.h guacamole/socket-types.h guacamole/stream.h >> guacamole/stream-types.h guacamole/string.h guacamole/timestamp.h >> guacamole/timestamp-types.h guacamole/unicode.h guacamole/user.h >> guacamole/user-constants.h guacamole/user-fntypes.h >> '/usr/local/include/guacamole' >> /usr/bin/install -c -m 644 guacamole/user-types.h guacamole/wol.h >> guacamole/wol-constants.h guacamole/socket-ssl.h >> '/usr/local/include/guacamole' >> make[3]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac' >> make[2]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac' >> Making install in tests >> make[2]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests' >> make[3]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests' >> make[3]: Nothing to be done for 'install-exec-am'. >> make[3]: Nothing to be done for 'install-data-am'. >> make[3]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests' >> make[2]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac/tests' >> make[1]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/libguac' >> Making install in src/common >> make[1]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common' >> Making install in . >> make[2]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common' >> make[3]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common' >> make[3]: Nothing to be done for 'install-exec-am'. >> make[3]: Nothing to be done for 'install-data-am'. >> make[3]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common' >> make[2]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common' >> Making install in tests >> make[2]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests' >> make[3]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests' >> make[3]: Nothing to be done for 'install-exec-am'. >> make[3]: Nothing to be done for 'install-data-am'. >> make[3]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests' >> make[2]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common/tests' >> make[1]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common' >> Making install in src/common-ssh >> make[1]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh' >> Making install in . >> make[2]: Entering directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh' >> CC libguac_common_ssh_la-key.lo >> key.c: In function ‘guac_common_ssh_key_alloc’: >> key.c:63:9: error: ‘PEM_read_bio_RSAPrivateKey’ is deprecated: Since >> OpenSSL 3.0 [-Werror=deprecated-declarations] >> 63 | rsa_key = PEM_read_bio_RSAPrivateKey(key_bio, NULL, NULL, >> passphrase); >> | ^~~~~~~ >> In file included from key.c:33: >> /usr/include/openssl/pem.h:447:1: note: declared here >> 447 | DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, RSAPrivateKey, RSA) >> | ^~~~~~~~~~~~~~~~~~~~~~ >> key.c:79:9: error: ‘RSA_get0_key’ is deprecated: Since OpenSSL 3.0 >> [-Werror=deprecated-declarations] >> 79 | RSA_get0_key(rsa_key, &key_n, &key_e, NULL); >> | ^~~~~~~~~~~~ >> In file included from common-ssh/rsa-compat.h:26, >> from key.c:25: >> /usr/include/openssl/rsa.h:217:28: note: declared here >> 217 | OSSL_DEPRECATEDIN_3_0 void RSA_get0_key(const RSA *r, >> | ^~~~~~~~~~~~ >> key.c:105:9: error: ‘PEM_read_bio_DSAPrivateKey’ is deprecated: Since >> OpenSSL 3.0 [-Werror=deprecated-declarations] >> 105 | dsa_key = PEM_read_bio_DSAPrivateKey(key_bio, NULL, NULL, >> passphrase); >> | ^~~~~~~ >> In file included from key.c:33: >> /usr/include/openssl/pem.h:453:1: note: declared here >> 453 | DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, DSAPrivateKey, DSA) >> | ^~~~~~~~~~~~~~~~~~~~~~ >> key.c:121:9: error: ‘DSA_get0_pqg’ is deprecated: Since OpenSSL 3.0 >> [-Werror=deprecated-declarations] >> 121 | DSA_get0_pqg(dsa_key, &key_p, &key_q, &key_g); >> | ^~~~~~~~~~~~ >> In file included from common-ssh/dsa-compat.h:26, >> from key.c:23: >> /usr/include/openssl/dsa.h:201:28: note: declared here >> 201 | OSSL_DEPRECATEDIN_3_0 void DSA_get0_pqg(const DSA *d, const >> BIGNUM **p, >> | ^~~~~~~~~~~~ >> key.c:122:9: error: ‘DSA_get0_key’ is deprecated: Since OpenSSL 3.0 >> [-Werror=deprecated-declarations] >> 122 | DSA_get0_key(dsa_key, &pub_key, NULL); >> | ^~~~~~~~~~~~ >> In file included from common-ssh/dsa-compat.h:26, >> from key.c:23: >> /usr/include/openssl/dsa.h:204:28: note: declared here >> 204 | OSSL_DEPRECATEDIN_3_0 void DSA_get0_key(const DSA *d, const >> BIGNUM **pub_key, >> | ^~~~~~~~~~~~ >> key.c: In function ‘guac_common_ssh_key_free’: >> key.c:164:9: error: ‘RSA_free’ is deprecated: Since OpenSSL 3.0 >> [-Werror=deprecated-declarations] >> 164 | RSA_free(key->rsa); >> | ^~~~~~~~ >> In file included from common-ssh/rsa-compat.h:26, >> from key.c:25: >> /usr/include/openssl/rsa.h:293:28: note: declared here >> 293 | OSSL_DEPRECATEDIN_3_0 void RSA_free(RSA *r); >> | ^~~~~~~~ >> key.c:166:9: error: ‘DSA_free’ is deprecated: Since OpenSSL 3.0 >> [-Werror=deprecated-declarations] >> 166 | DSA_free(key->dsa); >> | ^~~~~~~~ >> In file included from common-ssh/dsa-compat.h:26, >> from key.c:23: >> /usr/include/openssl/dsa.h:127:28: note: declared here >> 127 | OSSL_DEPRECATEDIN_3_0 void DSA_free(DSA *r); >> | ^~~~~~~~ >> key.c: In function ‘guac_common_ssh_key_sign’: >> key.c:202:13: error: ‘RSA_sign’ is deprecated: Since OpenSSL 3.0 >> [-Werror=deprecated-declarations] >> 202 | if (RSA_sign(NID_sha1, digest, dlen, sig, &len, >> key->rsa) == 1) >> | ^~ >> In file included from common-ssh/rsa-compat.h:26, >> from key.c:25: >> /usr/include/openssl/rsa.h:348:27: note: declared here >> 348 | OSSL_DEPRECATEDIN_3_0 int RSA_sign(int type, const unsigned char >> *m, >> | ^~~~~~~~ >> key.c:208:13: error: ‘DSA_do_sign’ is deprecated: Since OpenSSL 3.0 >> [-Werror=deprecated-declarations] >> 208 | DSA_SIG* dsa_sig = DSA_do_sign(digest, dlen, >> key->dsa); >> | ^~~~~~~ >> In file included from common-ssh/dsa-compat.h:26, >> from key.c:23: >> /usr/include/openssl/dsa.h:113:32: note: declared here >> 113 | OSSL_DEPRECATEDIN_3_0 DSA_SIG *DSA_do_sign(const unsigned char >> *dgst, int dlen, >> | ^~~~~~~~~~~ >> cc1: all warnings being treated as errors >> make[2]: *** [Makefile:591: libguac_common_ssh_la-key.lo] Error 1 >> make[2]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh' >> make[1]: *** [Makefile:617: install-recursive] Error 1 >> make[1]: Leaving directory >> '/home/vrgyl/Downloads/guacamole-server-1.4.0/src/common-ssh' >> make: *** [Makefile:538: install-recursive] Error 1 >> *****@********:~/Downloads/guacamole-server-1.4.0$ ldconfig >> /sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~: >> Permission denied >> *****@********:~/Downloads/guacamole-server-1.4.0$ sudo ldconfig >> *****@********:~/Downloads/guacamole-server-1.4.0$ >> >> It looks like you are trying to compile the Guacamole server with OpenSSL >> 3.0 and you are encountering errors related to deprecated functions. >> >> One potential solution would be to try compiling with OpenSSL 2.0 >> instead, as the deprecated functions might still be available in that >> version. You can check your current OpenSSL version by running openssl >> version. >> >> Alternatively, you could try updating the code in the key.c file to use >> the recommended replacements for the deprecated functions. For example, >> PEM_read_bio_RSAPrivateKey and PEM_read_bio_DSAPrivateKey have been >> replaced with PEM_read_bio_PrivateKey, and RSA_get0_key has been replaced >> with RSA_get0_key. >> >> I recommend consulting the OpenSSL documentation or asking for help in a >> forum or on a mailing list specifically for the Guacamole project for >> further assistance with this issue. >> >> Kazin Whitewind >> What steps do I take in updating the code in the key.c file to use the >> recommended replacements for the deprecated functions? >> To update the code in key.c to use the recommended replacements for the >> deprecated functions: >> >> Locate each instance of a deprecated function in the key.c file. >> Replace the deprecated function with the recommended alternative. >> Update the arguments for the new function to match its prototype. >> Here is an example of how you could replace a deprecated function in the >> key.c file: >> >> Copy code >> - RSA* rsa_key = PEM_read_bio_RSAPrivateKey(key_bio, NULL, NULL, >> passphrase); >> + EVP_PKEY *pkey = NULL; >> + PEM_read_bio_PrivateKey(key_bio, &pkey, NULL, passphrase); >> + RSA *rsa_key = EVP_PKEY_get1_RSA(pkey); >> In this example, the deprecated function PEM_read_bio_RSAPrivateKey is >> replaced with PEM_read_bio_PrivateKey, and the resulting EVP_PKEY is then >> converted to an RSA key using EVP_PKEY_get1_RSA. >> >> I recommend thoroughly testing your changes before deploying them in a >> production environment, as modifying the code in this way may introduce new >> errors or issues. If you have any problems or questions while updating the >> code, you can seek help in a forum or on a mailing list specifically for >> the Guacamole project. >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] > >
