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。したがって、ファイルを追加(または削除)してすぐに使用するには、rootとして直接実行するlocate必要があります。updatedbこれでlocate新しいファイルも見つかります。

findLinuxで作業しているすべてのプログラマがこのことを知っておくと非常に便利です。何かをインストールした後、バージョン管理チェックを実行した後、またはビルドを実行した後locate

おすすめ記事