Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

IBM AIX 用の Apache の構築

Note:

ホストの Apache 構成の変更やソースからの Apache の再構築を決定する前に、このセクションをすべて熟読することをお勧めします。

ここは、Apache の IBM AIX ビルドで CSP ゲートウェイの動的共有オブジェクト (DSO) モジュールを使用することに関するセクションです。

CSPa[n][Sys].so
mod_csp[n].so

Apache Web サーバとリンクされる DSO は、以下の 2 つのコア Apache ライブラリに実装された機能に依存します。

libapr
libaprutil

これらの APR ライブラリはメイン Apache 構築プロシージャの一部として構築され、(CSP ゲートウェイのようなアドオンの DSO モジュールによって使用される) Apache API を実装するための機能を含んでいます。

UNIX システムでは、これらのライブラリは通常、動的にリンク可能な共有オブジェクトとして構築されます。

libapr.so or libapr-1.so
libaprutil.so or libaprutil-1.so

インターシステムズが提供する事前に構築済みの CSP ゲートウェイ DSO モジュールは、これらのモジュールが共有オブジェクトとして存在することを予想して構築されています。

ただし、AIX の下では、これらのライブラリはしばしばライブラリ・アーカイブとして構築され、Apache コア (httpd) に静的にリンクされます。 これは、Apache が使用するアドオン DSO モジュールにも静的にリンクする必要があることを意味します。これは実際には、Apache グループの apxs ツールを使用してソースから DSO が構築された場合に起こります。

NSD コンポーネントと共に使用されることが意図された軽量モジュールのソース・コード (mod_csp[n].so) は、事前構築済みでソース・コードとして提供されます。 Apache ライブラリの静的リンクが必要な場合は、このモジュールは元の位置でローカルに構築できます。

比較的大型のスタンドアロン・ゲートウェイ・モジュール (CSPa[n][Sys].so) は事前構築済みで出荷されており、ホストの Apache サーバがそのコア APR ライブラリに静的にリンクされている場合は使用できません。 これらのモジュールを使用しようとすると、Apache API が提供する機能がゲートウェイ DSO に不足していることを示す致命的エラー・メッセージが Apache の起動時に報告されます。 以下に例を示します。

httpd: SyntaSyntax error on line 2 of /usr/local/apache2/conf/trak.conf:
x error on line 411 of /usr/local/apache2/conf/httpd.conf:
Cannot load /opt/cspgateway/bin/CSPapSys.so into server: rtld: 0712-001
Symbol ap_table_set was referenced from module /opt/cspgateway/bin/CSPapSys.so(), 
but a runtime definition of the symbol was not found.\nrtld: 0712-001
Symbol ap_table_add was referenced from module /opt/cspgateway/bin/CSPapSys.so(), 
but a runtime definition of the symbol was not found.\nrtld: 0712-001
Symbol ap_send_http_header was referenced from module /opt/cspgateway/bin/CSPapSys.so(),  
but a runtime definition of the symbol was not found.\nrtld: 0712-001
Symbol ap_table_do was referenced from module /opt/cspgateway/bin/CSPapSys.so(), 
but a runtime definition of the symbol was not found.\nrtld: 0712-001
Symbol ap_table_get was referenced from module /opt/cspgateway/bin/CSPapSys.so(), 
but a runtime definition of the symbol was not found.\nrtld: 0712-002 fatal error: exiting.

不足しているシンボルは (共有オブジェクトとして実装される) APR ライブラリによって提供され、これらは通常、Apache /lib ディレクトリにインストールされます。以下にそのリストの例を示します。

$ ls
apr.exp      libapr-1.so        libaprutil-1.la        libexpat.a
aprutil.exp  libapr-1.so.0      libaprutil-1.so        libexpat.la
libapr-1.a   libapr-1.so.0.4.2  libaprutil-1.so.0      pkgconfig
libapr-1.la  libaprutil-1.a     libaprutil-1.so.0.3.9

上記のリストの例では、APR ライブラリは共有オブジェクトとして構築されており、ゲートウェイはそれらを使用できます。 共有オブジェクトのディレクトリへのパスが AIX LIBPATH 環境変数に含まれていることを確認し、含まれていない場合は含めてください。 以下に例を示します。

export LIBPATH=/usr/local/apache2/lib:$LIBPATH

ゲートウェイ DSO が APR 共有オブジェクトを利用できないインストールの場合は、サーバ API が依存する関数 (および他のシンボル) をエクスポート (または公開) するように、Apache コアを再構築してください。

Apache の再構築手順

Apache ディストリビューションを解凍して、コンパイルとリンクの環境の準備が整っていることを確認します。 例えば、64 ビット Apache インストールを構築するには、以下の環境変数を設定する必要があります。

CFLAGS="-qarch=com -q64"
LDFLAGS="-b64"
OBJECT_MODE=64
export CFLAGS LDFLAGS OBJECT_MODE

Apache は通常、以下の 3 つの手順で構築されますが、この変更された手順では、(1) と (2) の間に追加ステップを実行します。

  1. ./configure --enable-so -–prefix=[installation_directory]

  2. make

  3. make install

最終的な Apache 実行時環境をどこにインストールするかによって、スーパーユーザとしてインストール・フェーズを実行することが必要な場合があります。

sudo make install

非静的にリンクされるサードパーティ DSO が必要とするすべての関数およびシンボルをエクスポートする Apache 実行可能ファイルを作成する構築プロセスを構成するには、(前述の手順 1 のように) 最初に ‘configure’ スクリプトを実行します。

make コマンドを実行する (手順 2) 前に、configure プロシージャ (手順 1) で生成された Makefile を見つけて、テキスト・エディタに読み込みます。 この Makefile は、/server サブディレクトリ (構築コマンドが呼び出された場所の直下) に置かれています。

エクスポート・リストの作成を行う行を見つけます (このセクションは通常、ファイルの末尾近くにあります)。 以下はその例です。

# Rule to make exp file for AIX DSOs
httpd.exp: exports.c export_vars.h
    @echo "#! ." > $@
    @echo "* This file was AUTOGENERATED at build time." >> $@
    @echo "* Please do not edit by hand." >> $@
    $(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) exports.c | grep "ap_hack_" | grep -v apr_ | \
           sed -e 's/^.*[)]\(.*\);$$/\1/' >> $@
    $(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) export_vars.h | grep -v apr_ | sed -e 's/^\#[^!]*//' | sed -e '/^$$/d' >> $@

次に、Please do not edit by hand 行の直後に、エクスポートに必要な関数を追加します。

Note:

重要 — 関数名を指定する各行は、スペースではなくタブ文字 (ASCII 9) から開始する必要があります。 便宜上、下記では、これらの行はコピーして対象の Makefile に直接貼り付けることができるように、このような形式になっています。ただし、一部の行はこのドキュメントのオンラインの本番システムには長すぎるため、バックスラッシュ記号 (\) を使って継続されています。実際のファイルではバックスラッシュを除去して行を続けてください。

例 :

# Rule to make exp file for AIX DSOs
httpd.exp: exports.c export_vars.h
    @echo "#! ." > $@
    @echo "* This file was AUTOGENERATED at build time." >> $@
    @echo "* Please do not edit by hand." >> $@
    @echo "apr_brigade_cleanup" >> $@
    @echo "apr_brigade_create" >> $@
    @echo "apr_bucket_type_eos" >> $@
    @echo "apr_bucket_type_flush" >> $@
    @echo "apr_create_pool" >> $@
    @echo "apr_global_mutex_unlock" >> $@
    @echo "apr_global_mutex_trylock" >> $@
    @echo "apr_global_mutex_lock" >> $@
    @echo "apr_global_mutex_create" >> $@
    @echo "apr_global_mutex_child_init" >> $@
    @echo "apr_palloc" >> $@
    @echo "apr_pcalloc" >> $@
    @echo "apr_pool_cleanup_null" >> $@
    @echo "apr_pool_cleanup_register" >> $@
    @echo "apr_pool_userdata_get" >> $@
    @echo "apr_pool_userdata_set" >> $@
    @echo "apr_pool_destroy" >> $@
    @echo "apr_pstrcat" >> $@
    @echo "apr_pstrdup" >> $@
    @echo "apr_shm_create" >> $@
    @echo "apr_shm_destroy" >> $@
    @echo "apr_shm_attach" >> $@
    @echo "apr_shm_detach" >> $@
    @echo "apr_shm_baseaddr_get" >> $@
    @echo "apr_shm_size_get" >> $@
    @echo "apr_shm_pool_get" >> $@
    @echo "apr_sleep" >> $@
    @echo "apr_table_add" >> $@
    @echo "apr_table_addn" >> $@
    @echo "apr_table_do" >> $@
    @echo "apr_table_get" >> $@
    @echo "apr_table_make" >> $@
    @echo "apr_table_set" >> $@
    @echo "apr_time_now" >> $@
 $(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) exports.c | grep "ap_hack_" | grep -v apr_ | \
    sed -e 's/^.*[)]\(.*\);$$/\1/' >> $@
 $(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) export_vars.h | grep -v apr_ | \
    sed -e 's/^\#[^!]*//' | sed -e '/^$$/d' >> $@

上記のリストには、CSP ゲートウェイ DSO に最低限必要とされる関数およびシンボルのセットが含まれています。 完全なリストは以下に示します。これは、ゲートウェイ DSO が必要とするより多くの機能を必要とする、事前定義済みの他のサードパーティ DSO を使用する計画がある場合に使用できます。

# Rule to make exp file for AIX DSOs
httpd.exp: exports.c export_vars.h
    @echo "#! ." > $@
    @echo "* This file was AUTOGENERATED at build time." >> $@
    @echo "* Please do not edit by hand." >> $@
    @echo "apr_brigade_cleanup" >> $@
    @echo "apr_brigade_create" >> $@
    @echo "apr_bucket_type_eos" >> $@
    @echo "apr_bucket_type_flush" >> $@
    @echo "apr_create_pool" >> $@
    @echo "apr_global_mutex_unlock" >> $@
    @echo "apr_global_mutex_trylock" >> $@
    @echo "apr_global_mutex_lock" >> $@
    @echo "apr_global_mutex_create" >> $@
    @echo "apr_global_mutex_child_init" >> $@
    @echo "apr_palloc" >> $@
    @echo "apr_pcalloc" >> $@
    @echo "apr_pool_cleanup_null" >> $@
    @echo "apr_pool_cleanup_register" >> $@
    @echo "apr_pool_userdata_get" >> $@
    @echo "apr_pool_userdata_set" >> $@
    @echo "apr_pool_destroy" >> $@
    @echo "apr_pstrcat" >> $@
    @echo "apr_pstrdup" >> $@
    @echo "apr_shm_create" >> $@
    @echo "apr_shm_destroy" >> $@
    @echo "apr_shm_attach" >> $@
    @echo "apr_shm_detach" >> $@
    @echo "apr_shm_baseaddr_get" >> $@
    @echo "apr_shm_size_get" >> $@
    @echo "apr_shm_pool_get" >> $@
    @echo "apr_sleep" >> $@
    @echo "apr_table_add" >> $@
    @echo "apr_table_addn" >> $@
    @echo "apr_table_do" >> $@
    @echo "apr_table_get" >> $@
    @echo "apr_table_make" >> $@
    @echo "apr_table_set" >> $@
    @echo "apr_time_now" >> $@
    $(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) exports.c | grep "ap_hack_" | grep -v apr_ | \
        sed -e 's/^.*[)]\(.*\);$$/\1/' >> $@
    $(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) export_vars.h | grep -v apr_ | \
        sed -e 's/^\#[^!]*//' | sed -e '/^$$/d' >> $@

上記のリストには、CSP ゲートウェイ DSO に最低限必要とされる関数およびシンボルのセットが含まれています。 完全なリストは以下に示します。これは、ゲートウェイ DSO が必要とするより多くの機能を必要とする、事前定義済みの他のサードパーティ DSO を使用する計画がある場合に使用できます。


# Rule to make exp file for AIX DSOs
httpd.exp: exports.c export_vars.h
    @echo "#! ." > $@
    @echo "* File was AUTOGENERATED at build time." >> $@
    @echo "* Please do not edit by hand." >> $@
    @echo "apr_allocator_create" >> $@
    @echo "apr_allocator_destroy" >> $@
    @echo "apr_allocator_alloc" >> $@
    @echo "apr_allocator_free" >> $@
    @echo "apr_allocator_owner_set" >> $@
    @echo "apr_allocator_owner_get" >> $@
    @echo "apr_allocator_max_free_set" >> $@
    @echo "apr_allocator_mutex_set" >> $@
    @echo "apr_allocator_mutex_get" >> $@
    @echo "apr_dso_load" >> $@
    @echo "apr_dso_unload" >> $@
    @echo "apr_dso_sym" >> $@
    @echo "apr_dso_error" >> $@
    @echo "apr_env_get" >> $@
    @echo "apr_env_set" >> $@
    @echo "apr_env_delete" >> $@
    @echo "apr_strerror" >> $@
    @echo "apr_stat" >> $@
    @echo "apr_dir_open" >> $@
    @echo "apr_dir_close" >> $@
    @echo "apr_dir_read" >> $@
    @echo "apr_dir_rewind" >> $@
    @echo "apr_filepath_root" >> $@
    @echo "apr_filepath_merge" >> $@
    @echo "apr_filepath_list_split" >> $@
    @echo "apr_filepath_list_merge" >> $@
    @echo "apr_filepath_get" >> $@
    @echo "apr_filepath_set" >> $@
    @echo "apr_filepath_encoding" >> $@
    @echo "apr_file_open" >> $@
    @echo "apr_file_close" >> $@
    @echo "apr_file_remove" >> $@
    @echo "apr_file_rename" >> $@
    @echo "apr_file_copy" >> $@
    @echo "apr_file_append" >> $@
    @echo "apr_file_eof" >> $@
    @echo "apr_file_open_stder" >> $@r
    @echo "apr_file_open_stdout" >> $@
    @echo "apr_file_open_stdin" >> $@
    @echo "apr_file_read" >> $@
    @echo "apr_file_write" >> $@
    @echo "apr_file_writev" >> $@
    @echo "apr_file_read_full" >> $@
    @echo "apr_file_write_full" >> $@
    @echo "apr_file_putc" >> $@
    @echo "apr_file_getc" >> $@
    @echo "apr_file_ungetc" >> $@
    @echo "apr_file_gets" >> $@
    @echo "apr_file_puts" >> $@
    @echo "apr_file_flush" >> $@
    @echo "apr_file_dup" >> $@
    @echo "apr_file_dup2" >> $@
    @echo "apr_file_setaside" >> $@
    @echo "apr_file_seek" >> $@
    @echo "apr_file_pipe_create" >> $@
    @echo "apr_file_namedpipe_create" >> $@
    @echo "apr_file_pipe_timeout_get" >> $@
    @echo "apr_file_pipe_timeout_set" >> $@
    @echo "apr_file_lock" >> $@
    @echo "apr_file_unlock" >> $@
    @echo "apr_file_name_get" >> $@
    @echo "apr_file_data_get" >> $@
    @echo "apr_file_data_set" >> $@
    @echo "apr_file_printf" >> $@
    @echo "apr_file_perms_set" >> $@
    @echo "apr_file_attrs_set" >> $@
    @echo "apr_file_mtime_set" >> $@
    @echo "apr_dir_make" >> $@
    @echo "apr_dir_make_recursive" >> $@
    @echo "apr_dir_remove" >> $@
    @echo "apr_file_info_get" >> $@
    @echo "apr_file_trunc" >> $@
    @echo "apr_file_flags_get" >> $@
    @echo "apr_file_pool_get" >> $@
    @echo "apr_file_inherit_set" >> $@
    @echo "apr_file_inherit_unset" >> $@
    @echo "apr_file_mktemp" >> $@
    @echo "apr_temp_dir_get" >> $@
    @echo "apr_fnmatch" >> $@
    @echo "apr_fnmatch_test" >> $@
    @echo "apr_initialize" >> $@
    @echo "apr_app_initialize" >> $@
    @echo "apr_terminate" >> $@
    @echo "apr_terminate2" >> $@
    @echo "apr_generate_random_bytes" >> $@
    @echo "apr_getopt_init" >> $@
    @echo "apr_getopt" >> $@
    @echo "apr_getopt_long" >> $@
    @echo "apr_global_mutex_create" >> $@
    @echo "apr_global_mutex_child_init" >> $@
    @echo "apr_global_mutex_lock" >> $@
    @echo "apr_global_mutex_trylock" >> $@
    @echo "apr_global_mutex_unlock" >> $@
    @echo "apr_global_mutex_destroy" >> $@
    @echo "apr_global_mutex_pool_get" >> $@
    @echo "apr_hash_make" >> $@
    @echo "apr_hash_copy" >> $@
    @echo "apr_hash_set" >> $@
    @echo "apr_hash_get" >> $@
    @echo "apr_hash_first" >> $@
    @echo "apr_hash_next" >> $@
    @echo "apr_hash_this" >> $@
    @echo "apr_hash_count" >> $@
    @echo "apr_hash_overlay" >> $@
    @echo "apr_hash_merge" >> $@
    @echo "apr_hash_pool_get" >> $@
    @echo "apr_filepath_name_get" >> $@
    @echo "apr_vformatter" >> $@
    @echo "apr_password_get" >> $@
    @echo "apr_mmap_create" >> $@
    @echo "apr_mmap_dup" >> $@
    @echo "apr_mmap_delete" >> $@
    @echo "apr_mmap_offset" >> $@
    @echo "apr_socket_create" >> $@
    @echo "apr_socket_shutdown" >> $@
    @echo "apr_socket_close" >> $@
    @echo "apr_socket_bind" >> $@
    @echo "apr_socket_listen" >> $@
    @echo "apr_socket_accept" >> $@
    @echo "apr_socket_connect" >> $@
    @echo "apr_sockaddr_info_get" >> $@
    @echo "apr_getnameinfo" >> $@
    @echo "apr_parse_addr_port" >> $@
    @echo "apr_gethostname" >> $@
    @echo "apr_socket_data_get" >> $@
    @echo "apr_socket_data_set" >> $@
    @echo "apr_socket_send" >> $@
    @echo "apr_socket_sendv" >> $@
    @echo "apr_socket_sendto" >> $@
    @echo "apr_socket_recvfrom" >> $@
    @echo "apr_socket_sendfile" >> $@
    @echo "apr_socket_recv" >> $@
    @echo "apr_socket_opt_set" >> $@
    @echo "apr_socket_timeout_set" >> $@
    @echo "apr_socket_opt_get" >> $@
    @echo "apr_socket_timeout_get" >> $@
    @echo "apr_socket_atmark" >> $@
    @echo "apr_socket_addr_get" >> $@
    @echo "apr_sockaddr_ip_get" >> $@
    @echo "apr_sockaddr_equal" >> $@
    @echo "apr_getservbyname" >> $@
    @echo "apr_ipsubnet_create" >> $@
    @echo "apr_ipsubnet_test" >> $@
    @echo "apr_socket_protocol_get" >> $@
    @echo "apr_socket_inherit_set" >> $@
    @echo "apr_socket_inherit_unset" >> $@
    @echo "apr_poll" >> $@
    @echo "apr_pollset_create" >> $@
    @echo "apr_pollset_destroy" >> $@
    @echo "apr_pollset_add" >> $@
    @echo "apr_pollset_remove" >> $@
    @echo "apr_pollset_poll" >> $@
    @echo "apr_pool_initialize" >> $@
    @echo "apr_pool_terminate" >> $@
    @echo "apr_pool_create_ex" >> $@
    @echo "apr_pool_create_ex_debug" >> $@
    @echo "apr_pool_allocator_get" >> $@
    @echo "apr_pool_clear" >> $@
    @echo "apr_pool_clear_debug" >> $@
    @echo "apr_pool_destroy" >> $@
    @echo "apr_pool_destroy_debug" >> $@
    @echo "apr_palloc" >> $@
    @echo "apr_palloc_debug" >> $@
    @echo "apr_pcalloc_debug" >> $@
    @echo "apr_pool_abort_set" >> $@
    @echo "apr_pool_abort_get" >> $@
    @echo "apr_pool_parent_get" >> $@
    @echo "apr_pool_is_ancestor" >> $@
    @echo "apr_pool_tag" >> $@
    @echo "apr_pool_userdata_set" >> $@
    @echo "apr_pool_userdata_setn" >> $@
    @echo "apr_pool_userdata_get" >> $@
    @echo "apr_pool_cleanup_register" >> $@
    @echo "apr_pool_cleanup_kill" >> $@
    @echo "apr_pool_child_cleanup_set" >> $@
    @echo "apr_pool_cleanup_run" >> $@
    @echo "apr_pool_cleanup_null" >> $@
    @echo "apr_pool_cleanup_for_exec" >> $@
    @echo "apr_os_global_mutex_get" >> $@
    @echo "apr_os_file_get" >> $@
    @echo "apr_os_dir_get" >> $@
    @echo "apr_os_sock_get" >> $@
    @echo "apr_os_proc_mutex_get" >> $@
    @echo "apr_os_exp_time_get" >> $@
    @echo "apr_os_imp_time_get" >> $@
    @echo "apr_os_shm_get" >> $@
    @echo "apr_os_thread_get" >> $@
    @echo "apr_os_threadkey_get" >> $@
    @echo "apr_os_thread_put" >> $@
    @echo "apr_os_threadkey_put" >> $@
    @echo "apr_os_thread_current" >> $@
    @echo "apr_os_thread_equal" >> $@
    @echo "apr_os_file_put" >> $@
    @echo "apr_os_pipe_put" >> $@
    @echo "apr_os_pipe_put_ex" >> $@
    @echo "apr_os_dir_put" >> $@
    @echo "apr_os_sock_put" >> $@
    @echo "apr_os_sock_make" >> $@
    @echo "apr_os_proc_mutex_put" >> $@
    @echo "apr_os_imp_time_put" >> $@
    @echo "apr_os_exp_time_put" >> $@
    @echo "apr_os_shm_put" >> $@
    @echo "apr_os_dso_handle_put" >> $@
    @echo "apr_os_dso_handle_get" >> $@
    @echo "apr_os_default_encoding" >> $@
    @echo "apr_os_locale_encoding" >> $@
    @echo "apr_proc_mutex_create" >> $@
    @echo "apr_proc_mutex_child_init" >> $@
    @echo "apr_proc_mutex_lock" >> $@
    @echo "apr_proc_mutex_trylock" >> $@
    @echo "apr_proc_mutex_unlock" >> $@
    @echo "apr_proc_mutex_destroy" >> $@
    @echo "apr_proc_mutex_cleanup" >> $@
    @echo "apr_proc_mutex_lockfile" >> $@
    @echo "apr_proc_mutex_name" >> $@
    @echo "apr_proc_mutex_defname" >> $@
    @echo "apr_proc_mutex_pool_get" >> $@
    @echo "apr_shm_create" >> $@
    @echo "apr_shm_destroy" >> $@
    @echo "apr_shm_attach" >> $@
    @echo "apr_shm_detach" >> $@
    @echo "apr_shm_baseaddr_get" >> $@
    @echo "apr_shm_size_get" >> $@
    @echo "apr_shm_pool_get" >> $@
    @echo "apr_signal" >> $@
    @echo "apr_signal_description_get" >> $@
    @echo "apr_strnatcmp" >> $@
    @echo "apr_strnatcasecmp" >> $@
    @echo "apr_pstrdup" >> $@
    @echo "apr_pstrmemdup" >> $@
    @echo "apr_pstrndup" >> $@
    @echo "apr_pmemdup" >> $@
    @echo "apr_pstrcat" >> $@
    @echo "apr_pstrcatv" >> $@
    @echo "apr_pvsprintf" >> $@
    @echo "apr_psprintf" >> $@
    @echo "apr_cpystrn" >> $@
    @echo "apr_collapse_spaces" >> $@
    @echo "apr_tokenize_to_argv" >> $@
    @echo "apr_strtok" >> $@
    @echo "apr_snprintf" >> $@
    @echo "apr_vsnprintf" >> $@


    @echo "apr_itoa" >> $@
    @echo "apr_ltoa" >> $@
    @echo "apr_off_t_toa" >> $@
    @echo "apr_strtoi64" >> $@
    @echo "apr_atoi64" >> $@
    @echo "apr_strfsize" >> $@
    @echo "apr_table_elts" >> $@
    @echo "apr_is_empty_table" >> $@
    @echo "apr_is_empty_array" >> $@
    @echo "apr_array_make" >> $@
    @echo "apr_array_push" >> $@
    @echo "apr_array_pop" >> $@
    @echo "apr_array_cat" >> $@
    @echo "apr_array_copy" >> $@
    @echo "apr_array_copy_hdr" >> $@
    @echo "apr_array_append" >> $@
    @echo "apr_array_pstrcat" >> $@
    @echo "apr_table_make" >> $@
    @echo "apr_table_copy" >> $@
    @echo "apr_table_clear" >> $@
    @echo "apr_table_get" >> $@
    @echo "apr_table_set" >> $@
    @echo "apr_table_setn" >> $@
    @echo "apr_table_unset" >> $@
    @echo "apr_table_merge" >> $@
    @echo "apr_table_mergen" >> $@
    @echo "apr_table_add" >> $@
    @echo "apr_table_addn" >> $@
    @echo "apr_table_overlay" >> $@
    @echo "apr_table_do" >> $@
    @echo "apr_table_vdo" >> $@
    @echo "apr_table_overlap" >> $@
    @echo "apr_table_compress" >> $@
    @echo "apr_thread_cond_create" >> $@
    @echo "apr_thread_cond_wait" >> $@
    @echo "apr_thread_cond_timedwait" >> $@
    @echo "apr_thread_cond_signal" >> $@
    @echo "apr_thread_cond_broadcast" >> $@
    @echo "apr_thread_cond_destroy" >> $@
    @echo "apr_thread_cond_pool_get" >> $@
    @echo "apr_thread_mutex_create" >> $@
    @echo "apr_thread_mutex_lock" >> $@
    @echo "apr_thread_mutex_trylock" >> $@
    @echo "apr_thread_mutex_unlock" >> $@
    @echo "apr_thread_mutex_destroy" >> $@
    @echo "apr_thread_mutex_pool_get" >> $@
    @echo "apr_threadattr_create" >> $@
    @echo "apr_threadattr_detach_set" >> $@
    @echo "apr_threadattr_detach_get" >> $@
    @echo "apr_thread_create" >> $@
    @echo "apr_thread_exit" >> $@
    @echo "apr_thread_join" >> $@
    @echo "apr_thread_yield" >> $@
    @echo "apr_thread_once_init" >> $@
    @echo "apr_thread_once" >> $@
    @echo "apr_thread_detach" >> $@
    @echo "apr_thread_data_get" >> $@
    @echo "apr_thread_data_set" >> $@
    @echo "apr_threadkey_private_create" >> $@
    @echo "apr_threadkey_private_get" >> $@
    @echo "apr_threadkey_private_set" >> $@
    @echo "apr_threadkey_private_delete" >> $@
    @echo "apr_threadkey_data_get" >> $@
    @echo "apr_threadkey_data_set" >> $@
    @echo "apr_procattr_create" >> $@
    @echo "apr_procattr_io_set" >> $@
    @echo "apr_procattr_child_in_set" >> $@
    @echo "apr_procattr_child_out_set" >> $@
    @echo "apr_procattr_child_err_set" >> $@
    @echo "apr_procattr_dir_set" >> $@
    @echo "apr_procattr_cmdtype_set" >> $@
    @echo "apr_procattr_detach_set" >> $@
    @echo "apr_procattr_limit_set" >> $@
    @echo "apr_procattr_child_errfn_set" >> $@
    @echo "apr_procattr_error_check_set" >> $@
    @echo "apr_proc_fork" >> $@
    @echo "apr_proc_create" >> $@
    @echo "apr_proc_wait" >> $@
    @echo "apr_proc_wait_all_procs" >> $@
    @echo "apr_proc_detach" >> $@
    @echo "apr_proc_other_child_register" >> $@
    @echo "apr_proc_other_child_unregister" >> $@
    @echo "apr_proc_other_child_alert" >> $@
    @echo "apr_proc_other_child_refresh" >> $@
    @echo "apr_proc_other_child_refresh_all" >> $@
    @echo "apr_proc_kill" >> $@
    @echo "apr_pool_note_subprocess" >> $@
    @echo "apr_setup_signal_thread" >> $@
    @echo "apr_signal_thread" >> $@
    @echo "apr_thread_pool_get" >> $@
    @echo "apr_thread_rwlock_create" >> $@
    @echo "apr_thread_rwlock_rdlock" >> $@
    @echo "apr_thread_rwlock_tryrdlock" >> $@
    @echo "apr_thread_rwlock_wrlock" >> $@
    @echo "apr_thread_rwlock_trywrlock" >> $@
    @echo "apr_thread_rwlock_unlock" >> $@
    @echo "apr_thread_rwlock_destroy" >> $@
    @echo "apr_thread_rwlock_pool_get" >> $@
    @echo "apr_time_now" >> $@
    @echo "apr_time_ansi_put" >> $@
    @echo "apr_time_exp_tz" >> $@
    @echo "apr_time_exp_gmt" >> $@
    @echo "apr_time_exp_lt" >> $@
    @echo "apr_time_exp_get" >> $@
    @echo "apr_time_exp_gmt_get" >> $@
    @echo "apr_sleep" >> $@
    @echo "apr_rfc822_date" >> $@
    @echo "apr_ctime" >> $@
    @echo "apr_strftime" >> $@
    @echo "apr_time_clock_hires" >> $@
    @echo "apr_uid_current" >> $@
    @echo "apr_uid_name_get" >> $@
    @echo "apr_uid_get" >> $@
    @echo "apr_uid_homepath_get" >> $@
    @echo "apr_gid_name_get" >> $@
    @echo "apr_gid_get" >> $@
    @echo "apr_version" >> $@
    @echo "apr_version_string" >> $@
    @echo "apr_month_snames" >> $@
    @echo "apr_day_snames" >> $@
    @echo "apr_base64_encode_len" >> $@
    @echo "apr_base64_encode" >> $@
    @echo "apr_base64_encode_binary" >> $@
    @echo "apr_base64_decode_len" >> $@
    @echo "apr_base64_decode" >> $@
    @echo "apr_base64_decode_binary" >> $@
    @echo "apr_brigade_create" >> $@
    @echo "apr_brigade_destroy" >> $@
    @echo "apr_brigade_cleanup" >> $@
    @echo "apr_brigade_split" >> $@
    @echo "apr_brigade_partition" >> $@
    @echo "apr_brigade_length" >> $@
    @echo "apr_brigade_flatten" >> $@
    @echo "apr_brigade_pflatten" >> $@
    @echo "apr_brigade_split_line" >> $@
    @echo "apr_brigade_to_iovec" >> $@
    @echo "apr_brigade_vputstrs" >> $@
    @echo "apr_brigade_write" >> $@
    @echo "apr_brigade_writev" >> $@
    @echo "apr_brigade_puts" >> $@
    @echo "apr_brigade_putc" >> $@
    @echo "apr_brigade_putstrs" >> $@
    @echo "apr_brigade_printf" >> $@
    @echo "apr_brigade_vprintf" >> $@
    @echo "apr_bucket_alloc_create" >> $@
    @echo "apr_bucket_alloc_create_ex" >> $@
    @echo "apr_bucket_alloc_destroy" >> $@
    @echo "apr_bucket_alloc" >> $@
    @echo "apr_bucket_free" >> $@
    @echo "apr_bucket_setaside_noop" >> $@
    @echo "apr_bucket_setaside_notimpl" >> $@
    @echo "apr_bucket_split_notimpl" >> $@
    @echo "apr_bucket_copy_notimpl" >> $@
    @echo "apr_bucket_destroy_noop" >> $@
    @echo "apr_bucket_simple_split" >> $@
    @echo "apr_bucket_simple_copy" >> $@
    @echo "apr_bucket_shared_make" >> $@
    @echo "apr_bucket_shared_destroy" >> $@
    @echo "apr_bucket_shared_split" >> $@
    @echo "apr_bucket_shared_copy" >> $@
    @echo "apr_bucket_eos_create" >> $@
    @echo "apr_bucket_eos_make" >> $@
    @echo "apr_bucket_flush_create" >> $@
    @echo "apr_bucket_flush_make" >> $@
    @echo "apr_bucket_immortal_create" >> $@
    @echo "apr_bucket_immortal_make" >> $@
    @echo "apr_bucket_transient_create" >> $@
    @echo "apr_bucket_transient_make" >> $@
    @echo "apr_bucket_heap_create" >> $@
    @echo "apr_bucket_heap_make" >> $@
    @echo "apr_bucket_pool_create" >> $@
    @echo "apr_bucket_pool_make" >> $@
    @echo "apr_bucket_mmap_create" >> $@
    @echo "apr_bucket_mmap_make" >> $@
    @echo "apr_bucket_socket_create" >> $@
    @echo "apr_bucket_socket_make" >> $@
    @echo "apr_bucket_pipe_create" >> $@
    @echo "apr_bucket_pipe_make" >> $@
    @echo "apr_bucket_file_create" >> $@
    @echo "apr_bucket_file_make" >> $@
    @echo "apr_bucket_file_enable_mmap" >> $@
    @echo "apr_date_checkmask" >> $@
    @echo "apr_date_parse_http" >> $@
    @echo "apr_date_parse_rfc" >> $@
    @echo "apr_dbm_open_ex" >> $@
    @echo "apr_dbm_open" >> $@
    @echo "apr_dbm_close" >> $@
    @echo "apr_dbm_fetch" >> $@
    @echo "apr_dbm_store" >> $@
    @echo "apr_dbm_delete" >> $@
    @echo "apr_dbm_exists" >> $@
    @echo "apr_dbm_firstkey" >> $@
    @echo "apr_dbm_nextkey" >> $@
    @echo "apr_dbm_freedatum" >> $@
    @echo "apr_dbm_geterror" >> $@
    @echo "apr_dbm_get_usednames_ex" >> $@
    @echo "apr_dbm_get_usednames" >> $@
    @echo "apr_hook_sort_register" >> $@
    @echo "apr_hook_sort_all" >> $@
    @echo "apr_hook_debug_show" >> $@
    @echo "apr_hook_deregister_all" >> $@
    @echo "apr_md4_init" >> $@
    @echo "apr_md4_set_xlate" >> $@
    @echo "apr_md4_update" >> $@
    @echo "apr_md4_final" >> $@
    @echo "apr_md4" >> $@
    @echo "apr_md5_init" >> $@
    @echo "apr_md5_set_xlate" >> $@
    @echo "apr_md5_update" >> $@
    @echo "apr_md5_final" >> $@
    @echo "apr_md5" >> $@
    @echo "apr_md5_encode" >> $@
    @echo "apr_password_validate" >> $@
    @echo "apr_dynamic_fn_register" >> $@
    @echo "apr_dynamic_fn_retrieve" >> $@
    @echo "apr_optional_hook_add" >> $@
    @echo "apr_optional_hook_get" >> $@
    @echo "apr_queue_create" >> $@
    @echo "apr_queue_push" >> $@
    @echo "apr_queue_pop" >> $@
    @echo "apr_queue_trypush" >> $@
    @echo "apr_queue_trypop" >> $@
    @echo "apr_queue_size" >> $@
    @echo "apr_queue_interrupt_all" >> $@
    @echo "apr_queue_term" >> $@
    @echo "apr_reslist_create" >> $@
    @echo "apr_reslist_destroy" >> $@
    @echo "apr_reslist_acquire" >> $@
    @echo "apr_reslist_release" >> $@
    @echo "apr_rmm_init" >> $@
    @echo "apr_rmm_destroy" >> $@
    @echo "apr_rmm_attach" >> $@
    @echo "apr_rmm_detach" >> $@
    @echo "apr_rmm_malloc" >> $@
    @echo "apr_rmm_realloc" >> $@
    @echo "apr_rmm_calloc" >> $@
    @echo "apr_rmm_free" >> $@
    @echo "apr_rmm_addr_get" >> $@
    @echo "apr_rmm_offset_get" >> $@
    @echo "apr_rmm_overhead_get" >> $@
    @echo "apr_sdbm_open" >> $@
    @echo "apr_sdbm_close" >> $@
    @echo "apr_sdbm_lock" >> $@
    @echo "apr_sdbm_unlock" >> $@
    @echo "apr_sdbm_fetch" >> $@
    @echo "apr_sdbm_store" >> $@
    @echo "apr_sdbm_delete" >> $@
    @echo "apr_sdbm_firstkey" >> $@
    @echo "apr_sdbm_nextkey" >> $@
    @echo "apr_sdbm_rdonly" >> $@
    @echo "apr_sha1_base64" >> $@
    @echo "apr_sha1_init" >> $@
    @echo "apr_sha1_update" >> $@
    @echo "apr_sha1_update_binary" >> $@
    @echo "apr_sha1_final" >> $@
    @echo "apr_strmatch_precompile" >> $@
    @echo "apr_uri_port_of_scheme" >> $@
    @echo "apr_uri_unparse" >> $@
    @echo "apr_uri_parse" >> $@
    @echo "apr_uri_parse_hostinfo" >> $@
    @echo "apr_uuid_get" >> $@
    @echo "apr_uuid_format" >> $@
    @echo "apr_uuid_parse" >> $@
    @echo "apr_xlate_open" >> $@
    @echo "apr_xlate_sb_get" >> $@
    @echo "apr_xlate_conv_buffer" >> $@
    @echo "apr_xlate_conv_byte" >> $@
    @echo "apr_xlate_close" >> $@
    @echo "apr_text_append" >> $@
    @echo "apr_xml_parser_create" >> $@
    @echo "apr_xml_parse_file" >> $@
    @echo "apr_xml_parser_feed" >> $@
    @echo "apr_xml_parser_done" >> $@
    @echo "apr_xml_parser_geterror" >> $@
    @echo "apr_xml_to_text" >> $@
    @echo "apr_xml_empty_elem" >> $@
    @echo "apr_xml_quote_string" >> $@
    @echo "apr_xml_quote_elem" >> $@
    @echo "apr_xml_insert_uri" >> $@
    @echo "apr_bucket_type_flush" >> $@
    @echo "apr_bucket_type_eos" >> $@
    @echo "apr_bucket_type_file" >> $@
    @echo "apr_bucket_type_heap" >> $@
    @echo "apr_bucket_type_pool" >> $@
    @echo "apr_bucket_type_pipe" >> $@
    @echo "apr_bucket_type_immortal" >> $@
    @echo "apr_bucket_type_transient" >> $@
    @echo "apr_bucket_type_socket" >> $@
    @echo "apr_hook_global_pool" >> $@
    @echo "apr_global_hook_pool" >> $@
    @echo "apr_hook_debug_enabled" >> $@
    @echo "apr_debug_module_hooks" >> $@
    @echo "apr_hook_debug_current" >> $@
    @echo "apr_current_hooking_module" >> $@
    $(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) exports.c | grep "ap_hack_" | grep -v apr_ | \
        sed -e 's/^.*[)]\(.*\);\$$/\1/' >> $@
    $(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) export_vars.h | grep -v apr_ | \
        sed -e 's/^\#[^!]*//' | sed -e '/^$$/d' >> $@

インストールに適したリストを選択してください。 CSP ゲートウェイの要件のみを考慮する必要がある場合は、最初の ‘最低限’ のリストで十分です。

Makefile を変更したら、make およびインストールの段階 (手順 2 と 3) に進みます。 作成された Apache インストールは、インターシステムズが提供する事前構築済みのゲートウェイ DSO と共に動作します。

FeedbackOpens in a new tab