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]

Reply via email to