tmux가 다음을 통해 사용자 이름을 보고할 수 없는 문제를 해결하고 싶습니다 logname
.
logname: no login name
다음 단계를 사용하고 있습니다.
# lets assume all other prerequisites are compiled already
# and staged/installed to $HOME/opt
# libutempter (http://freecode.com/projects/libutempter)
# URL : ftp://ftp.altlinux.org/pub/people/ldv/utempter/libutempter-1.1.5.tar.bz2
tar xvfj libutempter-1.1.5.tar.bz2
cd libutempter-1.1.5
vi Makefile
grep 'DESTDIR =' Makefile
---
DESTDIR = /home/xxxxxx/opt
make
make install
# tmux (http://tmux.sourceforge.net/)
# URL : git://git.code.sf.net/p/tmux/tmux-code
git clone git://git.code.sf.net/p/tmux/tmux-code tmux
cd tmux
sh autogen.sh
CFLAGS="-I$HOME/opt/include -I$HOME/opt/usr/include -I$HOME/opt/include/ncurses" \
CPPFLAGS="-I$HOME/opt/include -I$HOME/opt/usr/include -I$HOME/opt/include/ncurses" \
LDFLAGS="-L$HOME/opt/lib -L$HOME/opt/include/ncurses -L$HOME/opt/include -L$HOME/opt/usr/lib" \
./configure --enable-static
CPPFLAGS="-I$HOME/opt/include -I$HOME/opt/usr/include -I$HOME/opt/include/ncurses" \
LDFLAGS="-static -L$HOME/opt/include -L$HOME/opt/usr/include -L$HOME/opt/include/ncurses -L$HOME/opt/lib -L$HOME/opt/usr/lib" \
make
그러나 tmux는 여전히 로그인을 보고하지 못합니다 logname
.
(루트 액세스 없이) 패키지를 설치할 수 없습니다.
환경 변수와 플래그를 업데이트했는데 ldd는 공유 라이브러리가 없다고 보고했지만 tmux는 여전히 로그 이름으로 로그인을 표시할 수 없습니다.
답변1
이는 의도된 목적이지만 libutempter
일정 수준의 애플리케이션 지원도 필요합니다 tmux
.최근까지(2014년 2월)안으로 들어갔다주인사용 중인 분기이지만 아직 사용할 준비가 되지 않았을 수 있습니다.
현재 1.9a 소스 배포판의 FAQ:
* How is tmux different from GNU screen?
[...]
- screen has support for updating utmp. Nobody has really come up with a clean,
portable way to do this without making tmux setuid or setgid yet.
마스터 브랜치온라인 FAQCHANGES
문서가 업데이트되지 않았지만 이는 완전히 무시됩니다.
실행한 후 정의를 확인하십시오 HAVE_UTEMPTER
( Makefile
예상되지 않음!). 정의가 없으면 빌드 환경에 어떤 문제가 있는지 확인하기 위해 읽어야 합니다.config.h
configure
config.log
현재 내 최선의 추측은 다음과 같습니다.
libutempter.a
, 만이 없으므로libutempter.so
이를 사용하면-static
링크할 수 없기 때문에 libtempter 감지가 실패합니다.- 감지되고 컴파일되지만
utempter
(업데이트된 권한 있는 작업이 위임되는) 도우미가utmp
setgid(보통 setgid utmp)가 아닙니다. - 일부 시스템은알려진 제한된 액세스그 도우미에게어리석음을 방지하다이므로 호출 바이너리(예:
tmux
)는 다음과 같아야 합니다.반품setgid입니다(보통 setgid utempter).
직접 만들면 libutempter
만들어야지둘 다정적 및 동적 버전이 있지만 배포 패키지에는 동적 버전만 포함될 것 같습니다.
루트 액세스 권한이 없으면할 수 없다utmp
자신만의 libutempter를 올바르게 설치하세요. 시스템 / 파일을 유지할 수 없습니다 wtmp
. 시스템에 설치된 libutemper가 누락된 경우 정적 구성/링크를 위해 자체 libutemper를 컴파일 하고 설치된 시스템 setgid 도우미(일반적 으로 또는 )를 사용할 libutempter.a
수 있어야 합니다 . 바이너리에 대한 액세스도 제한되는 경우, 즉 이를 실행하려면 setgid가 필요한 경우 문제에 대한 해결책이 없습니다.libutempter.a
tmux
/usr/lib/utempter/utempter
/usr/libexec/utempter/utempter
tmux
tmux
새로운 libutetemper 기능에 대한 오류 처리는 현재 불완전합니다. -DUTEMPTER_DEBUG
위의 작업 중 어느 것도 수행되지 않은 경우 이를 사용하여 libutetemper를 다시 빌드할 수 있으면 도움이 될 수 있습니다.
make CFLAGS=-DUTEMPTER_DEBUG