Можно использовать getent
, который идет glibc
(таким образом, у Вас почти наверняка есть он на Linux). Это разрешает использование gethostbyaddr/gethostbyname2 и так также проверит /etc/hosts
/NIS/etc:
getent hosts unix.stackexchange.com | awk '{ print $1 }'
Или, как Heinzi заявил ниже, можно использовать dig
с +short
аргумент (запрашивает серверы DNS непосредственно, не смотрит на /etc/hosts
/NSS/etc):
dig +short unix.stackexchange.com
Если dig +short
недоступно, любое из следующего должно работать. Все они запрашивают DNS непосредственно и игнорируют другие средства разрешения:
host unix.stackexchange.com | awk '/has address/ { print $4 }'
nslookup unix.stackexchange.com | awk '/^Address: / { print $2 }'
dig unix.stackexchange.com | awk '/^;; ANSWER SECTION:$/ { getline ; print $5 }'
Если Вы хотите только распечатать один IP, то добавьте exit
команда к awk
рабочий процесс.
dig +short unix.stackexchange.com | awk '{ print ; exit }'
getent hosts unix.stackexchange.com | awk '{ print $1 ; exit }'
host unix.stackexchange.com | awk '/has address/ { print $4 ; exit }'
nslookup unix.stackexchange.com | awk '/^Address: / { print $2 ; exit }'
dig unix.stackexchange.com | awk '/^;; ANSWER SECTION:$/ { getline ; print $5 ; exit }'
Попытка:
DIR="$HOME/.bin-libevent"
./configure CFLAGS="-I$DIR/include" LDFLAGS="-L$DIR/lib"
(Я уверен, что должен быть лучший способ настроить пути к библиотеке с автоконференцией. Обычно существует a --with-libevent=dir
опция. Но здесь, кажется, что нет такой опции.)
Перед конфигурацией и компиляцией tmux (или любая программа) необходимо сказать это, где это может найти библиотеки, этому нужно. При установке некоторой библиотеки в нестандартном месте можно использовать переменную окружения LD_LIBRARY_PRELOAD
сказать, где некоторые библиотеки расположены.
Я Ваш случай:
$ export LD_LIBRARY_PRELOAD=$HOME/.bin-libevent/lib
И затем продолжайте конфигурацию/компиляцию.
Позже, двоичный файл должен будет также знать, где Ваши дополнительные библиотеки могут быть найдены, таким образом, необходимо будет поместить export
оператор в Вашем .bashrc
(если удар является Вашей оболочкой входа в систему).
find .bin-libevent -name 'libevent.so*'
показать?
– rozcietrzewiacz
02.08.2011, 20:42
$ find .bin-libevent -name 'libevent.so*'
находит .bin-libevent/lib/libevent.so
– volker
02.08.2011, 20:47
$HOME/.bin-libevent/lib
(обновленный ответ)
– rozcietrzewiacz
02.08.2011, 20:48
Я имел ту же проблему о RHEL 5.4 и на самом деле нашел, что libevent установлен, но нет никакой libevent.so символьной ссылки, только реальная версия библиотеки:
/usr/lib64/libevent-1.1a.so.1
/usr/lib64/libevent-1.1a.so.1.0.2
Так, ln -s /usr/lib64/libevent-1.1a.so.1 /usr/lib64/libevent.so
работы вполне прилично для меня без потребности установить или изменить что-либо. Никакая идея, почему libevent об/мин Redhat не создал символьную ссылку. Возможно, ошибка для создания отчетов?
Но теперь, это жалуется для этого: error: event.h: No such file or directory
.
error: event.h: No such file or directory
.
– gkb0986
07.08.2013, 21:00
tmux='LD_PRELOAD=/opt-local/lib/libevent-2.0.so.5 /opt-local/bin/tmux'
. Работы как очарование!
– csl
04.12.2014, 17:00
Я имел подобную проблему и обнаружил что после выполнения sudo yum install libevent-devel
Я смог успешно сделать и установить tmux.
Править: При установке этого на машине Red Hat необходимо будет также посетить выбор каналов для сервера в Сети Red Hat и добавить Сервер RHEL Дополнительный канал. Это предоставит Вам доступ к-devel пакетам для libevent (основные и дополнительные каналы не обеспечивают его).
В CentOS 6 скомпилируйте и установите libevent в каталог / opt / libevent
с помощью команды:
# ./configure --prefix=/opt/libevent
# make
# make install
Затем установите мое приложение (в данном случае PgBouncer)
# ./configure --prefix=/opt/ *--with-libevent=/opt/libevent/*
Йо Вы можете менять каталоги, где хотите.
У меня та же проблема, и мне кажется, что ответ, получивший наибольшее количество голосов, не сработал. Я использую Fedora 22 Workstation. Вот что я сделал, чтобы это исправить:
1. Установите пакет libevent-devel
. 2. Установите пакет ncurses-devel
$ dnf install libevent-devel`
$ dnf install ncurses-devel
Первый не решит проблему event.h
, а второй решит проблему не удается найти проклятия. Кстати, описанный выше метод softlink также работает для меня во время ./ configure
.
Hay una esencia enhttps://gist.github.com/ryin/3106801:
#!/bin/bash
# Script for installing tmux on systems where you don't have root access.
# tmux will be installed in $HOME/local/bin.
# It's assumed that wget and a C/C++ compiler are installed.
# exit on error
set -e
TMUX_VERSION=1.8
# create our directories
mkdir -p $HOME/local $HOME/tmux_tmp
cd $HOME/tmux_tmp
# download source files for tmux, libevent, and ncurses
wget -O tmux-${TMUX_VERSION}.tar.gz http://sourceforge.net/projects/tmux/files/tmux/tmux-${TMUX_VERSION}/tmux-${TMUX_VERSION}.tar.gz/download
wget https://github.com/downloads/libevent/libevent/libevent-2.0.19-stable.tar.gz
wget ftp://ftp.gnu.org/gnu/ncurses/ncurses-5.9.tar.gz
# extract files, configure, and compile
############
# libevent #
############
tar xvzf libevent-2.0.19-stable.tar.gz
cd libevent-2.0.19-stable
./configure --prefix=$HOME/local --disable-shared
make
make install
cd..
############
# ncurses #
############
tar xvzf ncurses-5.9.tar.gz
cd ncurses-5.9
./configure --prefix=$HOME/local
make
make install
cd..
############
# tmux #
############
tar xvzf tmux-${TMUX_VERSION}.tar.gz
cd tmux-${TMUX_VERSION}
./configure CFLAGS="-I$HOME/local/include -I$HOME/local/include/ncurses" LDFLAGS="-L$HOME/local/lib -L$HOME/local/include/ncurses -L$HOME/local/include"
CPPFLAGS="-I$HOME/local/include -I$HOME/local/include/ncurses" LDFLAGS="-static -L$HOME/local/include -L$HOME/local/include/ncurses -L$HOME/local/lib" make
cp tmux $HOME/local/bin
cd..
# cleanup
rm -rf $HOME/tmux_tmp
echo "$HOME/local/bin/tmux is now available. You can optionally add $HOME/local/bin to your PATH."
Принятый ответ хорош, но, по крайней мере, в tmux 2.8 есть поддержка указания местоположения libevent с помощью переменных среды.
Сначала установите libevent в желаемое место. Я использовал cmake, потому что у меня была проблема с autoconf
cmake -DCMAKE_INSTALL_PREFIX=$HOME/usr..
make install
Затем соберите и установите tmux:
export LIBEVENT_CFLAGS=-I${HOME}/usr/include
export LIBEVENT_LIBS="-L${HOME}/usr/lib -levent"
./configure --prefix=$HOME/usr
make install
Переменная среды LIBEVENT_CFLAGS
переопределяет pkg-config
включает настройки для libevent, а LIBEVENT_LIBS
переопределяет настройки флага компоновщика.
make
наконец работа. Я пытался установить другие переменные среды и установитьprefix
иexec-prefix
, но после того как я включал эти флаги материал, на самом деле был создан. – wizonesolutions 10.01.2013, 18:34./configure CFLAGS="-I$DIR/include:/usr/otherdir" LDFLAGS="-L$DIR/lib:/usr/otherdir"
но никакой успех – lucaswxp 22.08.2015, 22:12CFLAGS="-Idir1 -Idir2 -Idir3" LDFLAGS="-Ldira -Ldirb -Ldirb"
– Kusalananda♦ 29.07.2016, 11:28