vim.basic 실행 파일에 대한 심볼릭 링크가 있습니다.
⤷ ls -l /etc/alternatives/vim
lrwxrwxrwx 1 root root 18 Apr 22 21:02 /etc/alternatives/vim -> /usr/bin/vim.basic
위 심볼릭 링크에 대한 또 다른 심볼릭 링크는 다음과 같습니다.
⤷ ls -l /usr/bin/vim
lrwxrwxrwx 1 root root 21 Apr 22 21:02 /usr/bin/vim -> /etc/alternatives/vim
그들의 시스템 구성은 새로운 대안에서 기대할 수 있는 것과 일치합니다. 때때로 Linux 커널 5.4에서 부팅하거나 일반적으로 동일한 루트 및 홈 파티션을 사용하여 4.15에서 부팅하는 것 외에는 아무것도 변경하지 않았습니다. 이로 인해 sudo가 실행되는 원인이 될 수 있습니다. 정력? :
⤷ sudo vim.basic #This works fine!
⤷ sudo /etc/alternatives/vim #This works fine!
⤷ sudo vim
vim: error while loading shared libraries: libncurses.so.6: cannot open shared object file: No such file or directory
libncurses.so는 LD_LIBRARY_PATH가 가리키는 경로에 설치됩니다.
⤷ echo $LD_LIBRARY_PATH
/home/akd/dotapps/local/lib:
⤷ ls -l /home/akd/dotapps/local/lib/libncurses.so.6
lrwxrwxrwx 1 akd akd 17 Nov 9 21:24 /home/akd/dotapps/local/lib/libncurses.so.6 -> libncurses.so.6.2
Sudo vim 작업에서 이중 심볼릭 링크가 libcurses.so.6을 찾을 수 없는 이유를 이해할 수 없는 것 같습니다. sudo가 없는 일반 vim 바이너리는 예상대로 작동합니다(ncurses lib는 불평하지 않습니다).
⤷ vim --version
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Feb 16 2021 13:33:23)
⤷ sudo --version
Sudo version 1.8.21p2
Sudoers policy plugin version 1.8.21p2
Sudoers file grammar version 46
Sudoers I/O plugin version 1.8.21p2
왜 이런 이상한 동작이 발생하는지 아시나요?
고쳐 쓰다:
요청 시 추가 정보를 추가하세요.
⤷ ldd $(which vim)
linux-vdso.so.1 (0x00007ffc9a2a6000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9d5e059000)
libncurses.so.6 => /home/akd/dotapps/local/lib/libncurses.so.6 (0x00007f9d5ddee000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9d5dbea000)
libpython3.6m.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0 (0x00007f9d5d53f000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f9d5d320000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9d5cf2f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9d5e909000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f9d5ccfd000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f9d5cae0000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f9d5c8dd000)
답변1
홈 디렉토리 libncurses.so
에 설치 하고 에 추가하여 사용 가능 하게 만든 것 같습니다 .akb
export ENVIRONMENT=/home/akb/.../lib
/home/akb/.bashrc
이는 모두 사용자별로 다릅니다. 다른 사용자( )로 실행하면 해당 사용자에게 읽기 권한 이 없어 라이브러리를 읽을 수 없는 sudo -u akc vim
문제가 발생합니다 . 환경도 새로 고쳐지므로 현재 있는 항목이 적용되지 않습니다.akc
/home/akb
akc
export
/home/akb/.bashrc
libncurses.so
이 문제를 해결하려면 시스템 전체에 설치 해야 합니다 . 권장되는 옵션은 배포판과 함께 제공된 버전을 사용하는 것입니다(예):
sudo apt install libncurses6
하지만 로컬 복사본이 있으니 거기에는 이유가 있다고 생각합니다. 이 경우 시스템 전체에 설치해야 합니다.
./configure
make
sudo make install DESTDIR=/usr/local
나예debian의 vim
8.2 릴리스에는 종속성이 없습니다 . 소스에서 빌드/설치한 경우 이 런타임 종속성이 누락되었을 가능성이 높습니다. 그러나 패키지를 통해 설치하는 경우 패키지 관리자가 구성된 모든 런타임 종속성을 자동으로 설치하기를 기대합니다. 따라서 패키지를 빌드할 때 잘못된 플래그가 전달되었거나 패키지 관리자에게 알려야 하는 플래그가 누락된 것처럼 들립니다 .vim.basic
ncurses
./configure
Depends: