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]
