[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

А почему ‘bash’ не зависит от ‘libreadline’?



Добрых суток уважаемой рассылке.

Наткнулся только что на тот факт, что ‘bash’ как пакет не имеет в
зависимостях libreadline6 (и 5 тоже) [A]. Будучи убежденным, что GNU
Bash, GNU readline все-таки использует, о чем сообщается даже ман [B], 
я удивился.

Взглянув же на вывод зависимостей фактических:

$ ldd /bin/bash
linux-vdso.so.1 (0x00007ffff3375000)
libncurses.so.5 => /lib/x86_64-linux-gnu/libncurses.so.5 (0x00007f368453a000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f3684310000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f368410b000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3683d62000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3684792000)

я удивился еще больше — Баш и фактически не связан с libreadline.
Возможно, ncurses слинкован с readline? Но нет¹:

$ ldd /lib/x86_64-linux-gnu/libncurses.so.5
linux-vdso.so.1 (0x00007fff8dbff000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5938db2000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f5938bae000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f5938983000)
/lib64/ld-linux-x86-64.so.2 (0x00007f59393b3000)

Чего я не понимаю, господа?

---
¹ Обратное, к слову, было бы странно, ибо readline — под GNU GPL, а
ncurses — один из немногих пакетов GNU на условиях лицензии X11.

--- Приложение A ---
$ apt-rdepends bash
bash
  Depends: base-files (>= 2.1.12)
  Depends: debianutils (>= 2.15)
  PreDepends: dash (>= 0.5.5.1-2.2)
  PreDepends: libc6 (>= 2.15)
  PreDepends: libncurses5 (>= 5.5-5~)
  PreDepends: libtinfo5
base-files
  PreDepends: awk
awk
debianutils
  Depends: sensible-utils
  PreDepends: libc6 (>= 2.15)
sensible-utils
libc6
  Depends: libgcc1
libgcc1
  Depends: gcc-4.9-base (= 4.9.1-19)
  Depends: libc6 (>= 2.14)
  PreDepends: multiarch-support
gcc-4.9-base
multiarch-support
  Depends: libc6 (>= 2.3.6-2)
dash
  Depends: debianutils (>= 2.15)
  Depends: dpkg (>= 1.15.0)
  PreDepends: libc6 (>= 2.14)
dpkg
  PreDepends: libbz2-1.0
  PreDepends: libc6 (>= 2.14)
  PreDepends: liblzma5 (>= 5.1.1alpha+20120614)
  PreDepends: libselinux1 (>= 2.3)
  PreDepends: tar (>= 1.23)
  PreDepends: zlib1g (>= 1:1.1.4)
libbz2-1.0
  Depends: libc6 (>= 2.4)
  PreDepends: multiarch-support
liblzma5
  Depends: libc6 (>= 2.14)
  PreDepends: multiarch-support
libselinux1
  Depends: libc6 (>= 2.14)
  Depends: libpcre3 (>= 8.10)
  PreDepends: multiarch-support
libpcre3
  Depends: libc6 (>= 2.14)
  PreDepends: multiarch-support
tar
  PreDepends: libacl1 (>= 2.2.51-8)
  PreDepends: libc6 (>= 2.17)
  PreDepends: libselinux1 (>= 1.32)
libacl1
  Depends: libattr1 (>= 1:2.4.46-8)
  Depends: libc6 (>= 2.14)
  PreDepends: multiarch-support
libattr1
  Depends: libc6 (>= 2.4)
  PreDepends: multiarch-support
zlib1g
  Depends: libc6 (>= 2.14)
  PreDepends: multiarch-support
libncurses5
  Depends: libc6 (>= 2.15)
  Depends: libtinfo5 (= 5.9+20140913-1+b1)
  PreDepends: libtinfo5 (>= 5.9-3)
  PreDepends: multiarch-support
libtinfo5
  Depends: libc6 (>= 2.15)
  PreDepends: multiarch-support

--- Приложение B. Выдержка из bash(1) ---

READLINE
       This is the library that handles reading input when using an
       interactive shell, unless the --noediting option is given at
       shell invocation.  Line  editing  is also  used when using the -e
       option to the read builtin.


Reply to: