apt-rdepends
делает это, без установка 50 + библиотеки хлама как ubuntu-dev-tools
.
durr@scraper:~$ apt-rdepends mercurial
Reading package lists... Done
Building dependency tree
Reading state information... Done
mercurial
Depends: libc6 (>= 2.14)
Depends: mercurial-common (= 2.8.2-1ubuntu1)
Depends: python (<< 2.8)
Depends: ucf (>= 2.0020)
libc6
Depends: libgcc1
libgcc1
Depends: gcc-4.9-base (= 4.9-20140406-0ubuntu1)
Depends: libc6 (>= 2.14)
PreDepends: multiarch-support
gcc-4.9-base
multiarch-support
Depends: libc6 (>= 2.3.6-2)
mercurial-common
Depends: python (<< 2.8)
Depends: python:any (>= 2.7.1-0ubuntu2)
python
Depends: libpython-stdlib (= 2.7.5-5ubuntu3)
Depends: python-minimal (= 2.7.5-5ubuntu3)
Depends: python2.7 (>= 2.7.5-1~)
libpython-stdlib
Depends: libpython2.7-stdlib (>= 2.7.5-1~)
libpython2.7-stdlib
Depends: libbz2-1.0
Depends: libc6 (>= 2.15)
Depends: libdb5.3
Depends: libexpat1 (>= 2.1~beta3)
Depends: libffi6 (>= 3.0.4)
Depends: libncursesw5 (>= 5.6+20070908)
Depends: libpython2.7-minimal (= 2.7.6-8)
Depends: libreadline6 (>= 6.0)
Depends: libsqlite3-0 (>= 3.5.9)
Depends: libssl1.0.0 (>= 1.0.0)
Depends: libtinfo5
Depends: mime-support
libbz2-1.0
Depends: libc6 (>= 2.4)
PreDepends: multiarch-support
libdb5.3
Depends: libc6 (>= 2.17)
PreDepends: multiarch-support
libexpat1
Depends: libc6 (>= 2.14)
PreDepends: multiarch-support
libffi6
Depends: libc6 (>= 2.14)
PreDepends: multiarch-support
libncursesw5
Depends: libc6 (>= 2.15)
Depends: libtinfo5 (= 5.9+20140118-1ubuntu1)
PreDepends: multiarch-support
libtinfo5
Depends: libc6 (>= 2.15)
PreDepends: multiarch-support
libpython2.7-minimal
libreadline6
Depends: libc6 (>= 2.15)
Depends: libtinfo5
Depends: readline-common
PreDepends: multiarch-support
readline-common
Depends: dpkg (>= 1.15.4)
Depends: install-info
dpkg
PreDepends: libbz2-1.0
PreDepends: libc6 (>= 2.14)
PreDepends: liblzma5 (>= 5.1.1alpha+20120614)
PreDepends: libselinux1 (>= 2.1.0)
PreDepends: tar (>= 1.23)
PreDepends: zlib1g (>= 1:1.1.4)
liblzma5
Depends: libc6 (>= 2.14)
PreDepends: multiarch-support
libselinux1
Depends: libc6 (>= 2.14)
Depends: libpcre3
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
install-info
Depends: libc6 (>= 2.14)
PreDepends: dpkg (>= 1.16.1)
libsqlite3-0
Depends: libc6 (>= 2.14)
PreDepends: multiarch-support
libssl1.0.0
Depends: debconf (>= 0.5)
Depends: debconf-2.0
Depends: libc6 (>= 2.14)
PreDepends: multiarch-support
debconf
PreDepends: perl-base (>= 5.6.1-4)
perl-base
PreDepends: dpkg (>= 1.14.20)
PreDepends: libc6 (>= 2.14)
debconf-2.0
mime-support
python-minimal
Depends: dpkg (>= 1.13.20)
Depends: python2.7-minimal (>= 2.7.5-1~)
python2.7-minimal
Depends: libpython2.7-minimal (= 2.7.6-8)
Depends: zlib1g (>= 1:1.2.0)
PreDepends: libc6 (>= 2.15)
python2.7
Depends: libpython2.7-stdlib (= 2.7.6-8)
Depends: mime-support
Depends: python2.7-minimal (= 2.7.6-8)
python:any
ucf
Depends: coreutils (>= 5.91)
Depends: debconf (>= 1.5.19)
coreutils
PreDepends: libacl1 (>= 2.2.51-8)
PreDepends: libattr1 (>= 1:2.4.46-8)
PreDepends: libc6 (>= 2.17)
PreDepends: libselinux1 (>= 1.32)
На моей чистой установке сервера человечности, apt-rdepends
только потребовал libapt-pkg-perl
для установки. Это намного легче затем ubuntu-dev-tools
и все же все еще рекурсивно, таким образом, Вы добираетесь весь зависимости, скорее затем просто зависимости первого порядка, как apt-cache depends
возвраты.
В частности, вызывает ли CFRunLoopStop () из другого потока [безопасно]?
Вот что говорит Управление циклом выполнения :
Функции Core Foundation: обычно потокобезопасен и может быть вызван из любого потока.
Так что, возможно, CFRunLoopStop безопасен. Но меня беспокоит использование ими слова «в целом». Мое правило: если Apple не говорит, что это безопасно, вы должны предполагать, что это не так.
Чтобы ошибиться, вы можете подумать о создании источника цикла выполнения, добавив его в свой цикл выполнения и сообщив этому источнику, когда пора закончить нить. В том же документе содержится пример источника настраиваемого цикла выполнения.