Почему моя сборка пакета libpam -ldap в Ubuntu 18.04 не работает?

Существует несколько программ, реализующих язык /bin/sh. В Ubuntu /bin/sh— это тире, которое предназначено для быстрой работы, использования небольшого объема памяти и не поддерживает намного больше, чем минимум, ожидаемый от /bin/sh. В RHEL /bin/sh— это bash, который медленнее и использует больше памяти, но имеет больше возможностей. Одной из таких функций является оператор ==для условного синтаксиса [. Dash поддерживает [, базовую функцию sh, но не имеет оператора ==, являющегося расширением bash (, а также ksh и zsh ).

Вы можете переключить свою систему на использование bash. В Ubuntu /bin/shявляется символической ссылкой на dash. Вместо этого вы можете сделать это символической ссылкой на bash. Текущие версии Debian и Ubuntu (и производные )делают этот вариант установки dash. Чтобы изменить его, запустите

sudo dpkg-reconfigure dash

и ответьте «да», чтобы оставить тире как /bin/sh, или «нет», чтобы переключиться на bash.

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


Для дистрибутивов, в которых нет интерфейса для выбора между реализациями /bin/sh, вот как переключиться на bash.

sudo ln -s bash /bin/sh.bash
sudo mv /bin/sh.bash /bin/sh

Держите терминал открытым и убедитесь, что вы все еще можете запускать shскрипты после этого. Если вы ошибетесь с этой командой, ваша система станет непригодной для использования. (Между прочим, причина, по которой я использовал несколько команд выше, а не простое -, выглядящее как sudo ln -sf bash /bin/sh, заключается в том, что ln -sfне является атомарным. В маловероятном случае, если ваш компьютер выйдет из строя во время этой операции, вам потребуется загрузиться с загрузочного носителя, чтобы восстановить его. Напротив, mvявляется атомарным.)

Для восстановления тире как/bin/sh:

sudo ln -s dash /bin/sh.dash
sudo mv /bin/sh.dash /bin/sh

Обратите внимание, что если в вашем дистрибутиве по умолчанию установлено значение /bin/bash,переключение на тире может привести к сбою скриптов, потому что bash имеет гораздо больше возможностей, чем тире. Скрипты Bash должны начинаться с #!/bin/bash, а сценарии, начинающиеся с #!/bin/sh, не должны использовать специфические функции bash -, но дистрибутивы, которые поставляются с bash as /bin/sh, могут использовать специфические функции bash -в скриптах #!/bin/sh, которые специфичны для этого дистрибутива (, это нормально, если нет ожидания, что пользователи смогут переключиться на dash как /bin/shи нет ожидания, что эти скрипты будут работать в другом дистрибутиве ).

0
23.12.2020, 20:09
1 ответ

Сборка пакета запускается autoreconfза вас, что гарантирует, что сборка использует установленный вами autoconf. Чтобы использовать это, вместо того, чтобы выяснять команды сборки из журналов, запустите

cd ldap_pam-186
sudo apt build-dep libpam-ldap
dpkg-buildpackage -us -uc

Это создаст .debфайлов в родительском каталоге.

1
18.03.2021, 22:41

Теги

Похожие вопросы