Ubuntu: не может найти ndbm.h

Подайте вход на дескрипторе файла кроме стандартного входа.

find /some/path/ -type f | grep -vif blacklist |
mplayer -shuffle -playlist /dev/fd/3 3<&0 

Объяснение последней строки: данные из grep входят на стандартном входе, который является дескриптором файла 0. Нет никакого способа передать по каналу к где угодно, но стандартный вход в оболочке, но мы можем сделать немного дополнительной инфраструктуры. Во-первых, мы подключаем дескриптор файла 3 с тем, везде, где дескриптор файла 0: 3<&0. Затем мы соединяем дескриптор файла 0 (т.е. стандартный вход) к терминалу: . Мы говорим mplayer читать плей-лист из дескриптора файла 3; mplayer ожидает имя файла, таким образом, мы передадим его /dev/fd/3, который при открытии процессом ведет себя точно так же, как дескриптор файла 3 в том процессе в той точке.

Обратите внимание, что порядок перенаправлений важен, и парадоксален, если у Вас есть неправильная интуиция. 3<&0 считали fd 3 из где fd 0 чтений прежде и fd 0 чтений от /dev/tty. имел бы и fd 0 и fd 3 считанными из /dev/tty.

4
15.08.2016, 14:30
3 ответа

Тот файл здесь (Fedora 18) принадлежит gdbm-devel, пакет, содержащий его для Ubuntu, нужно назвать так же. Проверьте зависимости на источник, Вам, вероятно, будет нужен ряд -devel пакеты, соответствующие каждой зависимости.

Что Вам нужен устаревший апач, который, кроме того, знал уязвимости? Почему апач распределения не работает? Это - вероятно, намного лучшая идея портировать то независимо от того, что требует что апач вперед, чем застрять в предыстории...

4
27.01.2020, 20:49
  • 1
    Я загрузил тот пакет, но ndbm.h все еще не найден, потому что теперь у меня есть gdbm.h и gdbm-ndbm.h. Мне нужна та версия только из-за уязвимостей: Я должен сделать некоторое тестирование на возможность проникновения с помощью известного использования. –  Phate 04.03.2013, 19:36
  • 2
    В человечности нет никакого gdbm-devel пакета. Существует libgdbm-dev это является самым подобным по имени, к сожалению, это не содержит ndbm.h, однако это содержит /usr/include/gdbm-ndbm.h. Возможно, это - то, необходим, –  rush 04.03.2013, 19:46
  • 3
    Хорошо, я сделал символьную ссылку на этот последний файл, и он работал. Проблема состоит в том, что теперь это ищет db.h файл... –  Phate 04.03.2013, 19:53
  • 4
    db.h часть Беркли DB, другой проект заменить DBM (в настоящее время принадлежащий Oracle, в соответствии с некоторой небесплатной лицензией). Это, возможно, config сценарий lloking для доступной функциональности DBM? В этом случае необходимо просто оставить вещи быть. –  vonbrand 04.03.2013, 19:57

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

sudo apt-get install apt-file

обновите кэш с

apt-file update

и, чем Вы может для поиска пакета, с которым Вы нуждаетесь

apt-file search ndbm.h

Существует только tendra пакет, который содержит файл с таким именем.

Также libgdbm-dev содержит/usr/include/gdbm-ndbm.h. Может быть это - то, в котором Вы нуждаетесь. Можно попытаться скомпилировать с ним.

PS. Также можно использовать поиск на сайте человечности.

4
27.01.2020, 20:49
  • 1
    я не думаю tendra, имеет какое-либо отношение к этому. dbm была "база данных" (действительно библиотека для обработки таблицы базы данных только, части раннего Unix), который в свою очередь был заменен ndbm (новый DBM, имел некоторые проблемы лицензирования); gdbm (GNU dbm), был записан для замены обоих. Целая противная история освещена Википедией. Возможно, существует все еще a ndbm-dev пакет в некотором несвободном repo? –  vonbrand 04.03.2013, 19:53

Начиная с Debian 10 и Ubuntu 18.04 (, возможно, более ранних, но это самый старый поддерживаемый выпуск с этим пакетом ), соответствующие файлы доступны вlibgdbm-compat-dev:

apt install libgdbm-compat-dev
1
09.09.2020, 14:39

Теги

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