cxzlzy 2016-02-12 12:00 采纳率: 80%
浏览 2974

关于 Mac 上用 Homebrew 更新软件后无效的问题求助

半年以前可以用的 gtk+3 发现现在不能用了,用 homebrew 把所有软件更新了一道之后再编译就显示如下问题:

 $ gcc -o test1 test.c `pkg-config --libs --cflags gtk+-3.0`
Package 'gdk-3.0' requires 'cairo >= 1.14.0' but version of cairo is 1.12.16
test.c:1:10: fatal error: 'gtk/gtk.h' file not found
#include <gtk/gtk.h>
         ^
1 error generated.

但是我检查我的 cairo 版本发现已经是最新的 1.14.6

 e$ brew list cairo
/usr/local/Cellar/cairo/1.14.6/bin/cairo-sphinx
/usr/local/Cellar/cairo/1.14.6/bin/cairo-trace
/usr/local/Cellar/cairo/1.14.6/include/cairo/ (14 files)
/usr/local/Cellar/cairo/1.14.6/lib/libcairo-gobject.2.dylib
/usr/local/Cellar/cairo/1.14.6/lib/libcairo-script-interpreter.2.dylib
/usr/local/Cellar/cairo/1.14.6/lib/libcairo.2.dylib
/usr/local/Cellar/cairo/1.14.6/lib/cairo/ (9 files)
/usr/local/Cellar/cairo/1.14.6/lib/pkgconfig/ (13 files)
/usr/local/Cellar/cairo/1.14.6/lib/ (6 other files)
/usr/local/Cellar/cairo/1.14.6/share/gtk-doc/ (65 files)

表示要疯了 XD

  • 写回答

2条回答 默认 最新

  • devmiao 2016-02-13 01:09
    关注

    0 Homebrew是啥?

    “Homebrew installs the stuff you need that Apple didn’t.——Homebrew 使 OS X 更完整”。

    Homebrew的官网[1](多语言版本)简单明了地介绍了如何安装和使用这个工具,并提供了自己的Wiki。

    1 安装Homebrew

    brew的安装很简单,使用一条ruby命令即可,Mac系统上已经默认安装了ruby。

    gerryyang@mba:bin$ruby --version
    ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]

    关于安装brew的详细说明可以参考其github上的wiki说明[2]:

    "
    Installation

    The suggested and easiest way to install Homebrew is on the homepage. We don’t duplicate it here because it is asecurity risk to list it on a user-editable wiki.

    The standard script installs Homebrew to /usr/local so that you don’t need sudo when youbrew install. It is acareful script, it can be run even if you have stuff installed to/usr/local already. It tells you exactly what it will do before itdoes it too. And you have to confirm everything it will do before itstarts.

    There are other ways to install Homebrew which provide you with moreflexibility. They are listed below the requirements.

    "

    gerryyang@mba:~$ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

    It appears Homebrew is already installed. If your intent is to reinstall you

    should do the following before running this installer again:

    rm -rf /usr/local/Cellar /usr/local/.git && brew cleanup  
    

    由于我的系统上已经安装过brew,因此再次执行安装命令会提示我brew已经存在。

    2 Homebrew的用法

    查看brew的具体用法:

    gerryyang@mba:~$brew

    Example usage:

    brew [info | home | options ] [FORMULA...]

    brew install FORMULA...

    brew uninstall FORMULA...

    brew search [foo]

    brew list [FORMULA...]

    brew update

    brew upgrade [FORMULA...]

    brew pin/unpin [FORMULA...]

    Troubleshooting:

    brew doctor

    brew install -vd FORMULA

    brew [--env | --config]

    Brewing:

    brew create [URL [--no-fetch]]

    brew edit [FORMULA...]

    open https://github.com/Homebrew/homebrew/wiki/Formula-Cookbook

    Further help:

    man brew

    brew home

    gerryyang@mba:~$

    3 Homebrew的有趣问题

    下面关于Homebrew的一些常见问题[3]:

    (1) 在OS X中找不到想要的软件,可以使用brew安装;

    gerryyang@mba:~$brew install wget

    ==> Downloading http://ftpmirror.gnu.org/wget/wget-1.14.tar.gz

    ######################################################################## 100.0%

    ==> ./configure --prefix=/usr/local/Cellar/wget/1.14 --sysconfdir=/usr/local/etc

    ==> make install

    Warning: Could not link wget. Unlinking...

    Error: The brew link step did not complete successfully

    The formula built, but is not symlinked into /usr/local

    You can try again using `brew link wget'

    Possible conflicting files are:

    /usr/local/bin/wget

    /usr/local/share/man/man1/wget.1

    ==> Summary

    /usr/local/Cellar/wget/1.14: 8 files, 688K, built in 2.3 minutes

    由于之前使用源码方式安装过wget,因此再用brew安装时会提示冲突的错误,因为/usr/locat/bin/wget已经存在。实际上,Homebrew 将软件包分装到单独的目录(/usr/local/Cellar),然后 symlink 到 /usr/local 中。

    (2) 如何更新本地已安装的package呢?

    第一步:先更新brew:

    brew update

    gerryyang@mba:bin$brew update

    Already up-to-date.

    第二步:更新所有package:
    brew upgarde

    gerryyang@mba:bin$brew upgrade

    ==> Upgrading 1 outdated package, with result:

    wget 1.15

    ==> Upgrading wget

    ==> Installing wget dependency: openssl

    ==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/openssl-1.0

    ######################################################################## 100.0%

    ==> Pouring openssl-1.0.1f.mavericks.bottle.tar.gz

    ==> Caveats

    This formula is keg-only, so it was not symlinked into /usr/local.

    Mac OS X already provides this software and installing another version in

    parallel can cause all kinds of trouble.

    The OpenSSL provided by OS X is too old for some software.

    Generally there are no consequences of this for you. If you build your

    own software and it requires this formula, you'll need to add to your

    build variables:

    LDFLAGS:  -L/usr/local/opt/openssl/lib  
    CPPFLAGS: -I/usr/local/opt/openssl/include  
    

    ==> security find-certificate -a -p /Library/Keychains/System.keychain > '/usr/l

    ==> security find-certificate -a -p /System/Library/Keychains/SystemRootCertific

    ==> mv -f /usr/local/etc/openssl/osx_cert.pem.tmp /usr/local/etc/openssl/osx_cer

    ==> Summary

    /usr/local/Cellar/openssl/1.0.1f: 429 files, 15M

    ==> Installing wget

    ==> Downloading http://ftpmirror.gnu.org/wget/wget-1.15.tar.gz

    ######################################################################## 100.0%

    ==> ./configure --prefix=/usr/local/Cellar/wget/1.15 --sysconfdir=/usr/local/etc --with-ssl=openssl --with-libssl-prefix=/usr/local/opt/openssl --disable-iri

    ==> make install

    Warning: Could not link wget. Unlinking...

    Error: The brew link step did not complete successfully

    The formula built, but is not symlinked into /usr/local

    You can try again using `brew link wget'

    Possible conflicting files are:

    /usr/local/bin/wget

    /usr/local/share/man/man1/wget.1

    ==> Summary

    /usr/local/Cellar/wget/1.15: 8 files, 700K, built in 73 seconds

    gerryyang@mba:bin$

    (3) 如何删除Homebrew?

    If you installed to /usr/local then you can use the script in thisgist to uninstall — it will onlyremove Homebrew and the stuff Homebrew installed leaving anything elsein/usr/local alone.

    Provided you haven’t put anything else in Homebrew’s prefix(brew --prefix), you can generally justrm -rf that directory. Thisis because Homebrew won’t touch files outside its prefix.

    (4) Homebrew下载的package存放的路径在哪里?

    gerryyang@mba:bin$brew --cache

    /Library/Caches/Homebrew

    gerryyang@mba:bin$ls /Library/Caches/Homebrew/

    Formula/ wget-1.14.tar.gz

    coreutils-8.22.tar.xz wget-1.15.tar.gz

    openssl-1.0.1f.mavericks.bottle.tar.gz xz-5.0.5.mavericks.bottle.2.tar.gz

    gerryyang@mba:bin$ls /Library/Caches/Homebrew/Formula/

    coreutils.brewing openssl.brewing wget.brewing xz.brewing

    gerryyang@mba:bin$

    (5) 我可以安装自己的stuff在/usr/local吗?

    Yes, brew is designed to not get in your way so you can use it how youlike.

    Install your own stuff, but be aware that if you install commonlibraries, like libexpat yourself, it may cause trouble when trying tobuild certain Homebrew formula. As a resultbrew doctor will warn youabout this.

    Thus it’s probably better to install your own stuff to the Cellar andthen brew link it. Like so:

    $ cd foo-0.1
    $ brew diy
    ./configure —prefix=/usr/local/Cellar/foo/0.1
    $ ./configure —prefix=/usr/local/Cellar/foo/0.1
    [snip]
    $ make && make install
    $ brew link foo
    Linking /usr/local/Cellar/foo/0.1… 17 symlinks created
    在我的环境上检测是这样的:

    gerryyang@mba:bin$brew doctor

    Warning: Unbrewed dylibs were found in /usr/local/lib.

    If you didn't put them there on purpose they could cause problems when

    building Homebrew formulae, and may need to be deleted.

    Unexpected dylibs:

    /usr/local/lib/libboost_atomic.dylib

    /usr/local/lib/libboost_chrono.dylib

    /usr/local/lib/libboost_context.dylib

    /usr/local/lib/libboost_date_time.dylib

    /usr/local/lib/libboost_filesystem.dylib

    /usr/local/lib/libboost_graph.dylib

    /usr/local/lib/libboost_iostreams.dylib

    /usr/local/lib/libboost_locale.dylib

    /usr/local/lib/libboost_log.dylib

    /usr/local/lib/libboost_math_c99.dylib

    /usr/local/lib/libboost_math_c99f.dylib

    /usr/local/lib/libboost_math_c99l.dylib

    /usr/local/lib/libboost_math_tr1.dylib

    /usr/local/lib/libboost_math_tr1f.dylib

    /usr/local/lib/libboost_math_tr1l.dylib

    /usr/local/lib/libboost_prg_exec_monitor.dylib

    /usr/local/lib/libboost_program_options.dylib

    /usr/local/lib/libboost_python.dylib

    /usr/local/lib/libboost_random.dylib

    /usr/local/lib/libboost_regex.dylib

    /usr/local/lib/libboost_serialization.dylib

    /usr/local/lib/libboost_signals.dylib

    /usr/local/lib/libboost_system.dylib

    /usr/local/lib/libboost_thread.dylib

    /usr/local/lib/libboost_timer.dylib

    /usr/local/lib/libboost_unit_test_framework.dylib

    /usr/local/lib/libboost_wave.dylib

    /usr/local/lib/libboost_wserialization.dylib

    Warning: Unbrewed static libraries were found in /usr/local/lib.

    If you didn't put them there on purpose they could cause problems when

    building Homebrew formulae, and may need to be deleted.

    Unexpected static libraries:

    /usr/local/lib/libboost_atomic.a

    /usr/local/lib/libboost_chrono.a

    /usr/local/lib/libboost_context.a

    /usr/local/lib/libboost_coroutine.a

    /usr/local/lib/libboost_date_time.a

    /usr/local/lib/libboost_exception.a

    /usr/local/lib/libboost_filesystem.a

    /usr/local/lib/libboost_graph.a

    /usr/local/lib/libboost_iostreams.a

    /usr/local/lib/libboost_locale.a

    /usr/local/lib/libboost_log.a

    /usr/local/lib/libboost_math_c99.a

    /usr/local/lib/libboost_math_c99f.a

    /usr/local/lib/libboost_math_c99l.a

    /usr/local/lib/libboost_math_tr1.a

    /usr/local/lib/libboost_math_tr1f.a

    /usr/local/lib/libboost_math_tr1l.a

    /usr/local/lib/libboost_prg_exec_monitor.a

    /usr/local/lib/libboost_program_options.a

    /usr/local/lib/libboost_python.a

    /usr/local/lib/libboost_random.a

    /usr/local/lib/libboost_regex.a

    /usr/local/lib/libboost_serialization.a

    /usr/local/lib/libboost_signals.a

    /usr/local/lib/libboost_system.a

    /usr/local/lib/libboost_test_exec_monitor.a

    /usr/local/lib/libboost_thread.a

    /usr/local/lib/libboost_timer.a

    /usr/local/lib/libboost_unit_test_framework.a

    /usr/local/lib/libboost_wave.a

    /usr/local/lib/libboost_wserialization.a

    Warning: You have unlinked kegs in your Cellar

    Leaving kegs unlinked can lead to build-trouble and cause brews that depend on

    those kegs to fail to run properly once built. Run brew link on these:

    wget  
    

    gerryyang@mba:bin$

    (6) 为什么选择Homebrew这个名字?
    mxcl was too concerned with the beer theme and didn’t consider that the project may actually prove popular. By the time he realized it was too late. However, today, the first google hit for “homebrew” is not beer related ;-)

    看来作者是个酒鬼!

    (7) 关于更多地QA可以参考Homebrew的Wiki[4]

    (8) 一些常用安装推荐

    gerryyang@mba:bin$brew list

    coreutils openssl wget xz

    Introduction to Coreutils

    The GNU Core Utilities are the basic file, shell and text manipulationutilities of the GNU operating system.
    These are the core utilitieswhich are expected to exist on every operating system.

    http://www.gnu.org/software/coreutils/

    4 参考

    [1] http://brew.sh/index_zh-cn.html

    [2] https://github.com/Homebrew/homebrew/wiki/Installation

    [3] https://github.com/Homebrew/homebrew/wiki/FAQ

    [4] https://github.com/Homebrew/homebrew/wiki

    评论

报告相同问题?

悬赏问题

  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误