Using autotools to configure, make, and install a program

6.34. Пакет Autoconf-2.68

В пакете Autoconf находятся программы создания скриптов командной оболочки, которые могут автоматически конфигурировать исходный код.

Приблизительное время сборки: 4,8 SBU

Требуемое дисковое пространство: 12,4 MB

6.34.1. Установка пакета Autoconf

Подготовьте пакет Autoconf для компиляции:

./configure --prefix=/usr

Откомпилируйте пакет:

make

Чтобы проверить результаты, наберите:

make check

На это потребуется продолжительное время, приблизительно 4,7 SBU. Кроме того, будут пропущены 6 тестов, в которых используется Automake. Для выполнения полного набора тестов, пакет Autoconf следует протестировать снова, после того, как будет установлен пакет Automake.

Установите пакет:

make install

6.34.2. Описание пакета Autoconf

Установленные программы: autoconf, autoheader, autom4te, autoreconf, autoscan, autoupdate и ifnames

Установленные директории: /usr/share/autoconf

Краткое описание

autoconf

Создает скрипты командной оболочки, которые автоматически конфигурируют пакеты с исходным кодом так, чтобы их можно было использовать в Unix-подобных системах различного вида. Эти конфигурационные скрипты, которые он создает, являются независимыми – их запуск не требует программы autoconf

autoheader

Инструмент для создания файлов шаблонов с инструкциями #define языка С, используемыми для конфигурирования

autom4te

Команда-обвертка (wrapper) для макропроцессора M4

autoreconf

Автоматически в правильном порядке запускает utoconf, autoheader, aclocal, automake, gettextize и libtoolize с тем, чтобы сохранить время, когда в файлах шаблонов autoconf и automake делаются изменения

autoscan

Помогает для пакетов программ создавать файл ; проверяет файлы с исходными кодами, расположенными в дереве директориев, ищет варианты, допускающие их перемещение на другие системы, и создает файл , который используется в пакете как предварительный вариант файла

autoupdate

Изменяет файл , обновляя старые имена макровызовов autoconf на новые

ifnames

Помогает в написании файлов для пакета программ; выдает идентификаторы, которые используется в пакете препроцессором С в условных выражениях. Если пакет уже настроен на определенную переносимость, эта программа может помочь определить, что должен проверять скрипт configure. Он также может заполнить некоторые пропуски в файле , созданном с помощью autoscan.

Предыдущий раздел: Оглавление Следующий раздел:
Пакет Perl-5.12.3   Пакет Automake-1.11.1

Включение библиотеки с использованием пути включения

Может случиться так, что вы включите библиотеку, например Zend Framework, используя относительный или абсолютный путь. Например :

Но тогда вы все равно получаете такую ​​же ошибку.

Это может произойти из-за того, что файл, который вы (успешно) включили, сам имеет оператор включения для другого файла, и этот второй оператор включения предполагает, что вы добавили путь этой библиотеки к пути включения.

Например, упомянутый ранее файл Zend Framework может содержать следующее:

который не является ни включением ни по относительному пути, ни по абсолютному пути. Предполагается, что каталог Zend Framework был добавлен в путь включения.

В таком случае единственное практическое решение — добавить каталог к ​​вашему пути включения.

4 ответа

Команда./configure запускается только при сборке определенных приложений из исходного кода.

Загруженные установочные файлы Java — это не исходный код, а предварительно скомпилированные двоичные файлы. Для получения инструкций по установке Java взгляните на страницу в Ubuntu Wiki, так как здесь есть несколько разных опций.

Я рекомендую использовать опцию под названием «Использование поразительно простого метода webupd8.org». поскольку он будет интегрировать установку Java с вашей системой управления пакетами и автоматически поддерживать ее в актуальном состоянии вместе с остальной частью вашей системы.

5

2013-07-25 10:37

Это случилось со мной при установке контроллера домена samba, и вы можете загрузить пакет, подобный мне, как показано ниже: (Команды относятся к установке samba!!)

и вы в папке сказать (например: папка1) и когда вы печатаете

(Например: )

это выдает ошибку

Так что здесь я должен был пойти внутри папки Samba в папке 1

/ home / ubuntu / folder1 / samba # Я знаю, что ответ очень поздний, но это может помочь:)

2017-07-06 20:30

У меня тоже была эта проблема. Короткий ответ: вы должны напечатать когда внутри распакован каталог файлов. Вот где файл есть.

2015-01-20 15:26

преамбула

Причина, по которой вы получаете «bash: ./configure: Нет такого файла или каталога», заключается в том, что вы находитесь не в том каталоге, где находится загружаемый файл, который вы собираетесь установить.

Чтобы исправить это

(а) СЛЕДУЮЩАЯ ИНСТРУКЦИЯ README

  1. Найдите, где ваш загруженный файл Java tar.gz.
  2. Извлеките файл, щелкнув по нему правой кнопкой мыши и выбрав «Извлечь здесь».
  3. Найдите файл «Readme text» и откройте его.
  4. Следуйте инструкциям по установке файла в тексте Readme (установка файла tar.gz может отличаться от обычных команд, используемых для установки файлов в Ubuntu).

(б) ИСПОЛЬЗОВАНИЕ ОБЩИХ КОМАНД

  1. Откройте терминал, нажав CTRL + ALT + T.
  2. Введите tar -zxvf.tar.gz.
  3. Введите sudo su и введите свой пароль root.
  4. введите cd и добавьте путь к загруженному файлу. Если вы не знаете путь к загруженному файлу, введите ls -a, чтобы вывести список всех каталогов и найти каталог с файлами.
  5. Введите ./configure и нажмите клавишу ВВОД
  6. Введите make и нажмите клавишу ВВОД.
  7. Введите make install и нажмите клавишу ВВОД.

(c) ИСПОЛЬЗОВАНИЕ ПРОГРАММНОГО ЦЕНТРА UBUNTU

  1. Открытый Ubuntu Software Center

  2. Введите Java в поиске

  3. Найдите Java SE 7 и нажмите «Установить», чтобы установить его.

2013-07-25 13:04

Требования к конфигурации

Чтобы удовлетворить основным требованиям Automake, можно использовать
макрос (see section ). Но если хотите, то
можете совершить требуемые шаги вручную:

  • Определить переменные и с помощью
    .

    Переменная должна содержать имя пакета, в том виде, в
    котором оно используется при создании дистрибутива. Например, Automake определяет
    переменную со значением `automake’. Переменная
    должна содержать номер разрабатываемой версии. Мы
    рекомендуем хранить номер версии в единственном месте, а именно, в файле
    `configure.in': это упрощает выпуск новых версий.

    Automake не производит никакой интерпретации переменных
    или , за исключением работы в режиме `Gnits’
    (see section ).

  • Если программа или скрипт устанавливаются, то используйте макрос
    . See section `Преобразование имен при установке’ in Руководство Autoconf.

  • Используйте макрос если пакет не является
    плоским. See section `Создание файлов вывода’ in Руководство Autoconf.

  • Используйте макрос для того, чтобы убедиться, что
    среда, в которой будет производится сборка пакета, является нормальной.

  • Вызовите макрос (see section `Проверка отдельных программ’ in Руководство Autoconf).

  • Используйте макрос для того, чтобы убедиться, что
    программы , , ,
    и находятся в среде в которой
    производится сборка пакета. Вот как это сделано:

    missing_dir=`cd $ac_aux_dir && pwd`
    AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
    AM_MISSING_PROG(AUTOCONF, autoconf-ru, $missing_dir)
    AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
    AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
    AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
    

Вот список других макросов, которые требуются Automake, но которые не
запускаются макросом :

Automake использует этот макрос для определения того, какие файлы
необходимо создавать (see section `Создание выходных файлов’ in Руководство Autoconf). Файлы с именем `Makefile' из
этого списка считаются файлами для программы . Остальные
файлы интерпретируются по разному. В настоящее время
отличие состоит лишь в том, что файлы `Makefile' удаляются , тогда как другие файлы удаляются командой .

2 ответа

Лучший ответ

Ваш почти в порядке. Единственная проблема — это пробел между и круглой скобкой. Пробелы между именем макроса и открывающей скобкой в ​​скриптах не допускаются. Это правильный синтаксис:

Обновить

Я заметил еще одну проблему в вашем .

Это причина упомянутой вами ошибки .

Обновите свой комментарий

Во-первых, выполнение самой системной команды, например , не переносимо. Вы должны сначала проверить, например, с на его наличие.

Что касается синтаксиса, то сначала я бы получил вывод команды с помощью обратных кавычек: , а затем протестировал бы результат: . нужен, чтобы избежать проблем с пустым значением в некоторых оболочках.

Наконец, я сомневаюсь, подходит ли сценарий configure для всех сообщений, специфичных для этого дистрибутива. Вы можете разместить его в файле README.

2

baf
6 Май 2015 в 18:36

Избегайте этих системных сообщений.

Распечатайте одно сообщение, которое позволяет людям выяснить, какой пакет установить в их соответствующей системе, но избегайте именования системных имен пакетов и системных инструментов установки.

Вы никогда не сможете добавлять сообщения для всех систем, поэтому лучше пройти ту часть пути, которую вы знаете, и позволить своим пользователям пройти остальную часть пути, потому что они знают свои системы лучше, чем вы.

Правильным способом было бы написать программный пакет снаружи, но вызываемый из вашего , который, учитывая имя файла заголовка, имя файла , имя библиотеки и т. Д., Определяет, как установить его в соответствующей системе. Затем позвольте специалистам по обслуживанию конкретной системы исправить этот пакет и вызвать его из , если он установлен, и выдать общее сообщение об ошибке в противном случае.

Переносимый сценарий оболочки, локальный для вашего программного пакета, может в некоторой степени выполнять ту же работу. Тем не менее, вам все равно придется поддерживать все системные части для всех возможных систем.

Хм … теперь, когда я думаю об этом, идея кажется не такой уж плохой. Я мог бы добавить такой сценарий в некоторые из поддерживаемых мной проектов и посмотреть, как он будет применяться на практике.

Тем не менее, я бы все же постарался сохранить большую часть этой логики за пределами .

ndim
12 Сен 2017 в 21:38

Не удается установить средство .NET

Установка глобального или локального средства .NET может завершиться сбоем по ряду причин. Если при установке средства происходит сбой, появляется примерно следующее сообщение:

Помимо предыдущего сообщения, пользователю также выводятся сообщения NuGet, помогающие диагностировать эти сбои. Сообщение NuGet может помочь определить причину проблемы.

Изменение имен пакетов

Корпорация Майкрософт изменила правила в отношении идентификаторов пакетов для средств, из-за чего некоторые средства теперь невозможно найти по прежним именам. Согласно новым правилам имена средств Майкрософт должны иметь префикс «Microsoft.». Этот префикс зарезервирован и может использоваться только для пакетов, подписанных с помощью авторизованного сертификата Майкрософт.

Во время перехода некоторые средства Майкрософт будут иметь старую форму идентификатора пакета, а другие — новую форму:

По мере обновления идентификаторов пакетов необходимо будет перейти на новый идентификатор, чтобы получить последние обновления. Пакеты с упрощенными именами средств станут нерекомендуемыми.

Предварительные выпуски

Вы пытаетесь установить предварительный выпуск и не использовали параметр —version для указания версии.

Если средство .NET находится на стадии предварительной версии, это должно быть указано в части имени. Указывать предварительную версию полностью не нужно. Если номера версий имеют ожидаемый формат, можно использовать нечто подобное:

Пакет не является средством .NET

Пакет NuGet с таким именем найден, но не является средством .NET.

При попытке установить пакет NuGet, который является обычным пакетом NuGet, а не средством .NET, вы увидите такое сообщение об ошибке:

Веб-канал NuGet недоступен

Не удается получить доступ к требуемому веб-каналу NuGet, возможно, из-за проблемы с подключением к Интернету.

Для установки средства требуется доступ к веб-каналу NuGet, содержащему пакет средства. Установка завершается сбоем, если этот веб-канал недоступен. Вы можете изменить веб-каналы с помощью , запросить определенный файл или указать дополнительные веб-каналы с помощью параметра . По умолчанию NuGet выдает ошибку для каждого веб-канала, к которому не удается подключиться. Флаг позволяет пропускать недоступные источники.

Неправильный идентификатор пакета

Вы неправильно ввели имя средства.

Распространенной причиной ошибок является неправильное имя средства. Такое может случаться из-за ошибок при вводе или из-за того, что средство было перемещено либо устарело. Если средство размещено на сайте NuGet.org, один из способов гарантировать правильность имени — выполнить поиск средства на сайте NuGet.org и скопировать команду установки.

401 (не санкционировано)

Скорее всего, вы указали альтернативный канал NuGet, и этот канал требует проверки подлинности. Вот несколько разных способов решить проблему:

  • Добавьте параметр , чтобы обойти ошибку из закрытого канала и использовать общедоступный канал Майкрософт.

    Если вы устанавливаете средство из канала Microsoft NuGet, пользовательский канал возвращает эту ошибку, прежде чем канал Microsoft NuGet вернет результат. Ошибка завершает запрос, отменяя любые другие ожидающие запросы канала, который может быть каналом Microsoft NuGet. Добавление параметра приводит к тому, что команда обрабатывает эту ошибку как предупреждение и позволяет другим каналам обработать запрос.

  • Принудительно используйте канал Microsoft NuGet с параметром .

    Возможно, в глобальном или локальном файле конфигурации NuGet отсутствует общедоступный канал Microsoft NuGet. Используйте сочетание параметров и , чтобы избежать ошибочного канала и использовать общедоступный веб-канал Майкрософт.

  • Используйте настраиваемую конфигурацию NuGet, параметр .

    Создайте локальный файл nuget.config, используя только общедоступный веб-канал Microsoft NuGet, и сошлитесь на него с помощью параметра :

    Пример файла конфигурации:

    Дополнительные сведения см. в справочнике по файлу nuget.config.

  • Добавьте необходимые учетные данные в файл конфигурации.

    Если пакет точно существует в настроенном веб-канале, укажите учетные данные для входа в файле конфигурации NuGet. Дополнительные сведения об учетных данных в файле конфигурации NuGet см. в .

Автоматическая генерация `aclocal.m4′

Automake содержит некоторое количество макросов Autoconf, которые
могут быть использованы в вашем пакете; в некоторых ситуациях они
требуются для работы Automake. Эти макросы должны быть определены в
вашем файле `aclocal.m4'; иначе они не будут обнаружены программой
.

Программа автоматически создает файл `aclocal.m4' на
основе содержимого `configure.in'. Это обеспечивает удобный способ
для получения макросов Automake, без выполнения дополнительного
поиска. Механизм является также расширяемым для
использования другими пакетами.

При запуске программа производит поиск макроопределений
во всех файлах `.m4', которые она может найти. Затем она сканирует
`configure.in'. Любое упоминание одного из найденных на первом
этапе макросов приводит к тому, что этот макрос и все макросы,
требуемые для его работы, будут помещены в файл `aclocal.m4'.

Если файл `acinclude.m4' существует, то его содержимое также будет
автоматически включено в `aclocal.m4'. Это полезно для включения
локальных макросов в `configure'.

Программа работает со следующими ключами командной строки:

Заставляет программу искать файлы с макросами в каталоге dir, вместо
каталога, куда производилась установка программы. Этот ключ в основном
используется для отладки.

Напечатать справку по ключам командной строки и закончить работу.

Добавляет каталог dir в список каталогов, в которых производится поиск
файлов `.m4′.

Вывод производится в файл file, а не в файл `aclocal.m4'.

Печатает имя каталога, в котором будет производить поиск
файлов `.m4'. При задании этого ключа подавляется обычная обработка.
Этот ключ используется пакетом для определения места, куда будет
производиться установка файлов с макросами.

Печатает имена обрабатываемых файлов.

Выдает номер версии и заканчивает работу.

Запуск программы от имени администратора

Как бы банально это ни звучало, но часто запуск OpenServer от имени администратора решает все неполадки. Дело в том, что сам компонент тесно связан с сетью и файлами, отвечающими за соединение, поэтому и требует определенных привилегий при взаимодействии с ними. Если права доступа отсутствуют, соответственно, и запуска программы не произойдет.

Вам понадобится выйти из панели управления, найти файл программы в корневом каталоге, щелкнуть по нему правой кнопкой мыши и в контекстном меню выбрать пункт «‎Запуск от имени администратора». Подождите несколько секунд и проверьте, появилась ли на экране какая-либо информация, свидетельствующая о начале работы локального веб-сервера.

Если этот метод оказался эффективным, но вы не хотите каждый раз запускать программу таким образом, выполните простую настройку. Для этого снова кликните по исполняемому файлу правой кнопкой мыши и перейдите в «‎Свойства». Там найдите вкладку «‎Совместимость» и установите галочку возле пункта «Запускать эту программу от имени администратора‎».

После применения настроек софт всегда будет стартовать с повышенными привилегиями, что позволит избавиться от проблем с запуском.

Создание Makefile.am и src/Makefile.am

Но работающего скрипта configure недостаточно. Наша цель, чтобы программа также собиралась по команде make и устанавливалась по make install. За это отвечает уже automake. Для него нам потребуется создать два файла: корневой Makefile.am и Makefile.am для каталога src/, в котором и должен располагаться файл hello.c

Не забудьте его переместить.

Для нашей программы они очень простые:

Makefile.am

SUBDIRS = src

src/Makefile.am:

bin_PROGRAMS = hello
hello_SOURCES = hello.c

SUBDIRS сообщает make’у о каталоге src, в который обязательно необходимо «заглянуть»

bin_PROGRAMS задаёт имя нашей программы, а позже мы указываем какие исходные файлы нужно будет компилировать. Более нам ничего не нужно указывать — automake сам всё поймёт.

Некоторые изменения также нужно внести в configure.in, чтобы при вызове configure создавались необходимые Makefile’ы:

 AC_PREREQ(2.59)
 AC_INIT(, , )
-AC_CONFIG_SRCDIR()
+AC_CONFIG_SRCDIR([src/hello.c])
 AM_INIT_AUTOMAKE
 
 # Checks compiler
 AC_PROG_CC
 
 AC_CONFIG_FILES([Makefile src/Makefile])
 AC_OUTPUT

Объясню подробнее назначение добавленных макросов: AM_INIT_AUTOMAKE сообщает autoconf о том, что мы намерены использовать automake. AC_CONFIG_FILES говорит, что из указанных файлов, с постфиксом .in, нужно создать результирующие файлы с приведёнными именами. Иными словами, во время вызова configure из файла Makefile.in будет создаваться Makefile. (А Makefile.in создаётся автоматически из Makefile.am)

использование дополнительных аргументов макроса AM_INIT_AUTOMAKE для передачи аргументов программе automake

Далее выполните:

aclocal
automake --foreign --add-missing
autoconf

После чего будут сгенерированы все нужные Makefile’ы, создан configure скрипт и наша программа готова к распространению. Остался лишь один штрих: make dist и вуаля — hello-1.0.tar.gz готов к использованию и распространению между пользователями.

Conclusion

Now you’re able to use Autotools to compile and distribute your application, and you’re able to do it in a way that ensures it’s portable across a variety of systems. From here, you can start looking into automating this procedure and other ways to integrate Autotools directly into your daily development.

The great advantage of using something like Autotools is that you’ll be using a system that has been in place for many years, is well-documented, and widely used. Many developers are comfortable installing applications using what Autotools produces, so it can make your application much more familiar and accessible.

If your project becomes more complex and Autotools maintenance becomes a burden, earthly is a great solution for containerized builds.

SELinux

Если вы используете Linux с усиленной безопасностью, причиной проблемы может быть отказ в доступе к файлу с сервера.

Чтобы проверить, включен ли SELinux в вашей системе, запустите команду в терминале. Если команда не существует, значит, SELinux отсутствует в вашей системе. Если он существует, он должен сообщить вам, применяется оно или нет.

Чтобы проверить, являются ли политики SELinux причиной проблемы, попробуйте временно отключить ее. Однако будьте ОСТОРОЖНЫ, так как это полностью отключит защиту. Не делайте этого на рабочем сервере.

Если проблема с выключенным SELinux больше не возникает, значит, это основная причина.

Чтобы решить эту проблему , вам необходимо соответствующим образом настроить SELinux.

Потребуются следующие типы контекста:

  • для файлов, которые вы хотите, чтобы ваш сервер мог читать
  • для файлов, к которым требуется доступ для чтения и записи
  • для файлов журнала
  • для каталога кеша

Например, чтобы назначить тип контекста корневому каталогу вашего веб-сайта, выполните:

Если ваш файл находится в домашнем каталоге, вам также нужно будет включить логическое значение :

В любом случае, может быть множество причин, по которым SELinux отказывает в доступе к файлу, в зависимости от ваших политик. Так что вам нужно будет узнать об этом. Здесь — это руководство по настройке SELinux для веб-сервера.

4 ответа

У меня тоже была эта проблема. Краткий ответ: вы должны ввести , находясь внутри распакованного каталога файлов . Вот где находится файл .

ответ дан
25 July 2013 в 12:25

Преамбула

Причина, по которой вы получаете «bash: ./configure: Нет такого файла или каталога», заключается в том, что вы находитесь не в правильном каталоге, в котором вы скачали файл. собираются установить находится.

Чтобы исправить это

(a.) СЛЕДУЮЩУЮ ИНСТРУКЦИЮ README

  1. Найдите, где вы скачали файл Java tar.gz.
  2. Извлеките файл, щелкнув по нему правой кнопкой мыши и выбрав «Извлечь здесь».
  3. Найдите файл «Readme text» и откройте его.
  4. Следуйте инструкциям по установке файла в тексте Readme (установка файла tar.gz может отличаться от обычных команд, используемых для установки файлов в Ubuntu).

(б) ИСПОЛЬЗОВАНИЕ ОБЩИХ КОМАНД

  1. Откройте терминал, нажав CTRL + ALT + T .
  2. Введите tar -zxvf .tar.gz .
  3. Введите sudo su и введите свой корневой пароль.
  4. введите cd и добавьте путь к загруженному файлу . Если вы не знаете путь к загруженному файлу, введите ls -a , чтобы вывести список всех каталогов и найти каталог вашего файла.
  5. Введите ./ configure и нажмите клавишу ENTER
  6. Введите make и нажмите клавишу ENTER.
  7. Введите , выполните установку и нажмите клавишу ENTER.

(c) ИСПОЛЬЗОВАНИЕ ПРОГРАММНОГО ЦЕНТРА UBUNTU

  1. Открытый центр программного обеспечения Ubuntu

  2. Введите java в поиске

  3. Найдите Java SE 7 и нажмите «Установить», чтобы установить его.

ответ дан
25 July 2013 в 12:25

Это произошло со мной при установке контроллера домена samba, и вы можете загрузить пакет, подобный мне, как показано ниже: (Команды относятся к установке samba !!)

и вы в папке сказать ( например: папка1) и когда вы набираете

(например: )

, возникает ошибка

ответ дан
25 July 2013 в 12:25

Команда ./configure запускается только при сборке определенных приложений из исходного кода.

Установочные файлы Java, которые вы скачали, не являются исходным кодом, они являются предварительно скомпилированными двоичными файлами. Для получения инструкций по установке Java посмотрите на страницу в Ubuntu Wiki , так как здесь есть несколько различных опций.

Я рекомендую использовать опцию под названием «Использование поразительно простого метода webupd8.org». поскольку он будет интегрировать установку Java с вашей системой управления пакетами и автоматически поддерживать ее в актуальном состоянии вместе с остальной частью вашей системы.

ответ дан
25 July 2013 в 12:25

Другие случаи

Если ничего из вышеперечисленного не помогло диагностировать проблему, могут возникнуть следующие особые ситуации:

1. Включение библиотеки на основе пути включения

Может случиться так, что вы подключаете библиотеку, например, платформу Zend, используя относительный или абсолютный путь. Например:

require «/usr/share/php/libzend-framework-php/Zend/Mail/Protocol/Imap.php»

Но по-прежнему получаете такую же ошибку.

Это могло произойти из-за того, что файл, который вы (успешно) включили, сам имеет оператор include для другого файла, и этот второй оператор include предполагает, что вы добавили путь этой библиотеки к пути включения.

Например, упомянутый ранее файл фреймворка Zend может включать следующее:

include «Zend/Mail/Protocol/Exception.php» 

что не является включением ни по относительному пути, ни по абсолютному пути. Предполагается, что каталог фреймворка Zend был добавлен в путь включения.

В таком случае единственное практическое решение — добавить каталог в ваш путь включения.

2. SELinux

Если вы используете Linux с усиленной безопасностью, причиной проблемы может быть отказ в доступе к файлу с сервера.

Чтобы проверить, включен ли SELinux в вашей системе, запустите команду sestatus в терминале. Если команда не существует, значит, SELinux отсутствует в вашей системе. Если же существует, команда должна сообщить вам, применяется это или нет.

Чтобы проверить, являются ли политики SELinux причиной проблемы, вы можете попробовать временно отключить ее. Однако будьте ОСТОРОЖНЫ, так как это полностью отключит защиту. Не делайте этого на рабочем сервере.

setenforce0

Если проблема с выключенным SELinux больше не возникает, то это основная причина.

Чтобы решить эту проблему, вам необходимо соответствующим образом настроить SELinux.

Потребуются следующие варианты:

  • httpd_sys_content_t для файлов, которые ваш сервер может читать;

  • httpd_sys_rw_content_t для файлов, к которым необходимо дать доступ для чтения и записи;

  • httpd_log_t для файлов журнала;

  • httpd_cache_t для каталога кэша.

Например, чтобы назначить httpd_sys_content_t к корневому каталогу вашего веб-сайта, выполните:

semanage fcontext -a -t httpd_sys_content_t «/path/to/root(/.*)?»

restorecon -Rv /path/to/root

Если ваш файл находится в домашнем каталоге, вам также необходимо включить httpd_enable_homedirs

setsebool -P httpd_enable_homedirs 1

В любом случае может быть множество причин, по которым SELinux отказывает в доступе к файлу, в зависимости от ваших политик. Так что вам нужно будет узнать об этом в руководстве по настройке SELinux для веб-сервера.

3. Symfony

Если вы используете Symfony и получаете эту ошибку при загрузке на сервер, возможно, кэш приложения не был сброшен, либо потому, что app/cache был загружен, либо этот кэш не был очищен.

Для этого надо выполнить следующую консольную команду:

cache:clear

4. Внутри Zip-файла символы, отличные от ASCII

По-видимому, эта ошибка может произойти также при вызове zip->close(), когда некоторые файлы внутри zip имеют в своем имени не-ASCII символы, такие как, например, «é».

Потенциальное решение — обернуть имя файла, используя utf8_decode(), перед созданием целевого файла.

В SELinux

если вы работаете с улучшенной безопасностью Linux, то это может быть причиной проблемы, отказывая в доступе к файлу с сервера.

чтобы проверить, включен ли SELinux в вашей системе запустите команда в терминале. Если команда не существует, то SELinux не в системе. Если он существует, то он должен сказать вам, является ли он принудительным или нет.

чтобы проверить, являются ли политики SELinux причиной для проблемы, вы можете попробовать повернуть его временно выключен. Однако будьте осторожны, так как это полностью отключит защиту. Не делайте этого на рабочем сервере.

если у вас больше нет проблемы с выключенным SELinux, то это является основной причиной.

решить, вам придется настроить SELinux соответственно.

необходимы следующие типы контекста:

  • для файлов, которые вы хотите, чтобы ваш сервер мог читать
  • для файлов, которые вы хотите читать и писать к
  • для файлов журнала
  • для каталога кэша

например, чтобы назначить введите контекст в корневой каталог вашего сайта, запустите:

если ваш файл находится в домашнем каталоге, вы также должны включить boolean:

в любом случае, могут быть различные причины почему SELinux будет отказывать в доступе к файлу, в зависимости от ваших политик. Поэтому вам нужно будет исследовать это. здесь — это учебник по настройке SELinux для веб-сервера.

Для чего предназначено System32 и какие компоненты входят в ее состав

Перед тем как непосредственно приступить к рассмотрению анонсированных ошибок и проблем, следует уделить некоторое время на выяснение основных задач, которые возложены на «system 32» и на его содержимое.

Итак, данный каталог находится на разделе (обычно ему присваивается буква «C») физического носителя, на который ранее была установлена операционная система, и находится в папке «Windows», то есть имеет путь следующего вида «C:\Windows\System32».

Сразу необходимо отметить, что этот каталог удалять категорически запрещено, несмотря на то, что в интернет-просторах всё ещё встречаются «шутники-подстрекатели», любящие подшутить над малоопытными пользователями, кроме того это невозможно осуществить просто, нажав на кнопку «Удалить».

Если обратить внимание на содержимое, то можно увидеть огромное количество различных подпапок и файлов, которые представлены в двух основных расширениях – «.dll» и «.exe», и об этом поподробнее. «DLL», она же «DynamicLinkLibrary» — это «библиотека динамической компоновки» или «динамически подключаемая библиотека», используемая всеми видами программного обеспечения (далее ПО) (системного и стороннего), и без которой невозможна работа нынешней операционной системы Windows

По сути, это своего рода «столб» на котором и зиждиться вся работоспособность ПО, а, следовательно, большая часть проблем так или иначе связана с «.dll»

«DLL», она же «DynamicLinkLibrary» — это «библиотека динамической компоновки» или «динамически подключаемая библиотека», используемая всеми видами программного обеспечения (далее ПО) (системного и стороннего), и без которой невозможна работа нынешней операционной системы Windows. По сути, это своего рода «столб» на котором и зиждиться вся работоспособность ПО, а, следовательно, большая часть проблем так или иначе связана с «.dll».

«EXE» — расширение исполняемых файлов, то есть файлов, имеющих в своей структуре программное обеспечение в том виде, который может быть распознан и исполнен операционной системой. Например, каждый знает о «Диспетчере задач», который всегда придёт на помощь в трудную ситуацию, так вот, когда пользователь запускает его привычным для него способом, операционная система открывается исполняемый файл «Taskmgr.exe», находящейся в этом самом каталоге «System 32».

Также в рамках данной статьи определённое внимание будет уделяться папкам «drivers» и «config», имеющие самое непосредственное отношение к корректной работе подключаемого оборудования и к настройкам всех важнейших элементов в операционной системе Windows. Исходя из вышеизложенной информации можно сделать логичный вывод, что всё в каталоге взаимосвязано и объединено единой структурой

А это ещё раз подтверждает факт, что необдуманные манипуляции с системными компонентами никогда ни к чему хорошему не приведёт

Исходя из вышеизложенной информации можно сделать логичный вывод, что всё в каталоге взаимосвязано и объединено единой структурой. А это ещё раз подтверждает факт, что необдуманные манипуляции с системными компонентами никогда ни к чему хорошему не приведёт.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: