Из полученных данных вы пытаетесь скомпилировать 32-битную сборку apache на 64-битной системе. Это из intput для настройки здесь:
--host=x86_32-unknown-linux-gnu host_alias=x86_32-unknown-linux-gnu CFLAGS=-m32 LDFLAGS=-m32
Также смотрите строки вывода, подтверждающие это:
configure:3629: checking build system type
configure:3643: result: x86_64-unknown-linux-gnu
configure:3663: checking host system type
configure:3676: result: x86_32-unknown-linux-gnu
configure:3696: checking target system type
configure:3709: result: x86_32-unknown-linux-gnu
Здесь используется 64-битная система сборки, но 32-битный хост/целевая система. Далее мы видим:
ac_cv_env_CFLAGS_set=set
ac_cv_env_CFLAGS_value=-m32
Этот флаг говорит gcc выдавать 32-битные объекты. Ваша ошибка, что компилятор Си не может выдать исполняемый файл, скорее всего, вызвана отсутствием 32-битного инструментария.
Вы можете протестировать это, скомпилировав небольшой пример на Си с флагом -m32
.
// Minimal C example
#include <stdio.h>
int main()
{
printf("This works\n");
return 0;
}
Компиляция:
gcc -m32 -o m32test m32test.c
Если эта команда не удастся, то у Вас возникнет проблема с возможностью компиляции 32-х битных объектов. Сообщения об ошибках, выдаваемые компилятором, могут быть полезны для исправления этой ситуации.
Эта команда сводится к следующему:
rsync --delete --recursive /etc/logrotate.d/{httpd,mariadb,php-fpm,ppp,wpa_supplicant,yum} root@my.ipaddress:/etc
The .
там имеет буквальное значение - это часть названия - так что проблема не в этом. Часть в {}
подвергается расширению скобками : каждая часть, разделенная запятыми, расширяется и соединяется с той частью аргумента, которая была до этого (/etc/logrotate.d/
). (Он также получит что угодно после, если бы было что-нибудь: a{BC}d
расширяется до aBd aCd
).
Итак, эта команда эквивалентна
rsync --delete --recursive /etc/logrotate.d/httpd /etc/logrotate.d/mariadb /etc/logrotate.d/php-fpm /etc/logrotate.d/ppp /etc/logrotate.d/wpa_supplicant /etc/logrotate.d/yum root@my.ipaddress:/etc
или для выбора только одного каталога, поэтому она короткая:
rsync --delete --recursive /etc/logrotate.d/httpd root@my.ipaddress:/etc
rsync интерпретирует "из" местоположения как единственную сущность, и если она не заканчивается на /
, она делает новый файл или каталог с только последней частью этого имени внутри заданного пути назначения: вот, это httpd
. Таким образом, он делает /etc/httpd
по назначению и копирует в него содержимое /etc/logrotate.d/httpd
.
С помощью --delete
затем удалит все , что не было в /etc/logrotate.d/httpd
на источнике. Проблема - так как /etc/logrotate.d/httpd
, вероятно, вообще не существует, копирование и удаление любых файлов, которых не было в исходнике, означает удаление всего во всех этих каталогах. Если он действительно существует, его содержимое не будет совпадать с содержимым /etc/httpd
, так что (почти) все будет удалено.
Так что проблема в том, что у вас там вообще есть часть logrotate.d
, когда вы действительно хотели скопировать те же самые каталоги в /etc
. Вероятно, вы имели в виду просто:
rsync --progress --delete -avhHe ssh /etc/{httpd,mariadb,php-fpm,ppp,wpa_supplicant,yum} root@my.ipaddress:/etc
, который копирует /etc/httpd
и его содержимое в /etc/httpd
по месту назначения, и так далее. Если вы хотели скопировать что-то внутри logrotate.d
, поместите это в путь с обеих сторон.
Одна вещь, которую вы можете найти полезной - опция -n
или --dry-run
от до rsync
:
-n, --dry-run выполните пробный запуск без изменений
, который покажет вам, что произойдет, но на самом деле не внесет никаких изменений ни на одном из концов. Вы можете использовать это, чтобы проверить, что вы хотите, прежде чем запустить реальную вещь.
Вы спросили, как предотвратить расширение оболочки в аргументах, которые вы дали rsync
. Как и выше, я не думаю, что на самом деле это то, что вы хотите, учитывая проблему, которая у вас была, но если вам когда-нибудь понадобится: расширения в скобках не происходят в кавычках, так что "a{BC}d"
остается как a{BC}d
буквально.