apt-get이 cdefs.h 설치를 거부하는 이유는 무엇입니까(symlink 제외)?

apt-get이 cdefs.h 설치를 거부하는 이유는 무엇입니까(symlink 제외)?

더 많은 종속성이 있는 패키지에 대해 32비트 헤더를 설치하려고 했습니다.64비트오늘 밤에는 Kali Linux를 사용하지만 이 문제를 디버깅할 만큼 Linux C 빌드 시스템을 잘 모릅니다. 파일은 cdefs.h입니다. 내가 아는 한, cdefs.h는 32비트 Linux에서만 나타납니다.

cdefs.h를 찾을 수 없어 빌드 프로세스가 중단되었으므로 계속해서 찾으려고 했습니다.

root@kali:~# dpkg -S /usr/include/sys/cdefs.h
libc6-dev-i386: /usr/include/sys/cdefs.h

따라서 dpkg는 cdefs.h가 libc6-dev-i836에 존재한다고 생각합니다.

root@kali:~# apt-get install libc6-dev-i386
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libc6-dev-i386 is already the newest version.
The following packages were automatically installed and are no longer required:
  lib32asan1 lib32atomic1 lib32cilkrts5 lib32gcc1 lib32gomp1 lib32itm1 lib32quadmath0 lib32stdc++6
  lib32ubsan0 libc6-amd64:i386 libltdl-dev xinit
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 12 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Setting up libc6-amd64 (2.19-18+deb8u3) ...
Processing triggers for libc-bin (2.19-18+deb8u3) ...

가는 게 좋지, 그렇지?

root@kali:~# locate cdefs.h
/usr/i686-w64-mingw32/include/sys/cdefs.h
/usr/include/bsd/sys/cdefs.h
/usr/share/mingw-w64/include/sys/cdefs.h

아뇨, 거기 없어요.

root@kali:~# ls /usr/include/sys/cdefs.h
/usr/include/sys/cdefs.h

이것은 심볼릭 링크입니다.

root@kali:~# cd /usr/include/sys/
root@kali:/usr/include/sys# ls
acct.h      fcntl.h     klog.h         procfs.h    sendfile.h   swap.h       timex.h        utsname.h
auxv.h      file.h      mman.h         profil.h    shm.h        syscall.h    ttychars.h     vfs.h
bitypes.h   fsuid.h     mount.h        ptrace.h    signalfd.h   sysctl.h     ttydefaults.h  vlimit.h
cdefs.h     gmon.h      msg.h          queue.h     signal.h     sysinfo.h    types.h        vm86.h
debugreg.h  gmon_out.h  mtio.h         quota.h     socket.h     syslog.h     ucontext.h     vt.h
dir.h       inotify.h   param.h        raw.h       socketvar.h  sysmacros.h  uio.h          vtimes.h
elf.h       ioctl.h     pci.h          reboot.h    soundcard.h  termios.h    ultrasound.h   wait.h
epoll.h     io.h        perm.h         reg.h       statfs.h     timeb.h      un.h           xattr.h
errno.h     ipc.h       personality.h  resource.h  stat.h       time.h       unistd.h
eventfd.h   kdaemon.h   poll.h         select.h    statvfs.h    timerfd.h    user.h
fanotify.h  kd.h        prctl.h        sem.h       stropts.h    times.h      ustat.h

모든 심볼릭 링크.

root@kali:/usr/include/sys# ls -la
total 32
drwxr-xr-x  2 root root 12288 Aug 23 21:18 .
drwxr-xr-x 76 root root 20480 Aug 23 21:34 ..
lrwxrwxrwx  1 root root    30 Feb 11  2016 acct.h -> ../x86_64-linux-gnu/sys/acct.h
lrwxrwxrwx  1 root root    30 Feb 11  2016 auxv.h -> ../x86_64-linux-gnu/sys/auxv.h
lrwxrwxrwx  1 root root    33 Feb 11  2016 bitypes.h -> ../x86_64-linux-gnu/sys/bitypes.h
lrwxrwxrwx  1 root root    31 Feb 11  2016 cdefs.h -> ../x86_64-linux-gnu/sys/cdefs.h
lrwxrwxrwx  1 root root    34 Feb 11  2016 debugreg.h -> ../x86_64-linux-gnu/sys/debugreg.h
lrwxrwxrwx  1 root root    29 Feb 11  2016 dir.h -> ../x86_64-linux-gnu/sys/dir.h
lrwxrwxrwx  1 root root    29 Feb 11  2016 elf.h -> ../x86_64-linux-gnu/sys/elf.h
lrwxrwxrwx  1 root root    31 Feb 11  2016 epoll.h -> ../x86_64-linux-gnu/sys/epoll.h
lrwxrwxrwx  1 root root    31 Feb 11  2016 errno.h -> ../x86_64-linux-gnu/sys/errno.h
lrwxrwxrwx  1 root root    33 Feb 11  2016 eventfd.h -> ../x86_64-linux-gnu/sys/eventfd.h
lrwxrwxrwx  1 root root    34 Feb 11  2016 fanotify.h -> ../x86_64-linux-gnu/sys/fanotify.h
lrwxrwxrwx  1 root root    31 Feb 11  2016 fcntl.h -> ../x86_64-linux-gnu/sys/fcntl.h
lrwxrwxrwx  1 root root    30 Feb 11  2016 file.h -> ../x86_64-linux-gnu/sys/file.h
lrwxrwxrwx  1 root root    31 Feb 11  2016 fsuid.h -> ../x86_64-linux-gnu/sys/fsuid.h
lrwxrwxrwx  1 root root    30 Feb 11  2016 gmon.h -> ../x86_64-linux-gnu/sys/gmon.h
lrwxrwxrwx  1 root root    34 Feb 11  2016 gmon_out.h -> ../x86_64-linux-gnu/sys/gmon_out.h
lrwxrwxrwx  1 root root    33 Feb 11  2016 inotify.h -> ../x86_64-linux-gnu/sys/inotify.h
lrwxrwxrwx  1 root root    31 Feb 11  2016 ioctl.h -> ../x86_64-linux-gnu/sys/ioctl.h
lrwxrwxrwx  1 root root    28 Feb 11  2016 io.h -> ../x86_64-linux-gnu/sys/io.h
lrwxrwxrwx  1 root root    29 Feb 11  2016 ipc.h -> ../x86_64-linux-gnu/sys/ipc.h

아, 그러면 그들이 어디를 가리키는지 확인해서 상태가 좋은지 확인할 수 있을 것 같아요.

root@kali:/usr/include/sys# cd ../x86_64-linux-gnu/
root@kali:/usr/include/x86_64-linux-gnu# ls
gnu

무엇을 기다립니다. 모든 것이 가리키는 sys 폴더는 어디에 있습니까?

root@kali:/usr/include/x86_64-linux-gnu# locate vfs.h
/usr/include/glib-2.0/gio/gvfs.h
/usr/src/linux-headers-4.0.0-kali1-common/include/linux/vfs.h
root@kali:/usr/include/x86_64-linux-gnu# locate cdefs.h
/usr/i686-w64-mingw32/include/sys/cdefs.h
/usr/include/bsd/sys/cdefs.h
/usr/share/mingw-w64/include/sys/cdefs.h

아직 여기에 없습니다. 여기서 정말 어리석은 것을 놓치고 있습니까? dkpg에서 게시한 파일이 설치되지 않는 이유는 무엇입니까? 무엇이 그들을 방해하고 있습니까? 그것들은 어디에 존재해야 하는가? cdefs의 Windows 전용 버전이 BSD 버전인 이유는 무엇입니까?

답변1

의견을 바탕으로 답변:

귀하의 질문에있는 명령은 길게 표시된 apt-get다음 locate따릅니다.

작동 방식은 locate파일 시스템에 자체 파일 데이터베이스가 있다는 것입니다. 데이터베이스는 updatedb일반적으로 매일 밤 에 의해 실행되는 명령을 사용하여 업데이트됩니다 cron. 따라서 파일을 추가(또는 제거)한 후 즉시 사용하려면 루트로 직접 실행 locate해야 합니다 . updatedb그러면 locate새 파일도 발견됩니다 .

findLinux에서 작업하는 모든 프로그래머가 이 사실 을 알아두면 매우 유용합니다. 무언가를 설치한 후, 버전 제어 확인을 수행한 후 또는 빌드를 수행한 후 locate.

관련 정보