2012-01-14 32 views
0

我有一些其他的問題,建立一些錯誤的CPU架構的端口,我試圖重建所有東西都是通用的。macports的問題

我已經完成:sudo port upgrade outdated +universal,它運行了很長時間,似乎安裝了很多我不需要的東西。但它並沒有失敗。

然後我試圖與我以前有問題的圖書館之一:

$ sudo port install cairo +universal 
Password: 
---> Building libpixman 
Error: Target org.macports.build returned: shell command failed (see log for details) 
Log for libpixman is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_graphics_libpixman/libpixman/main.log 
Error: Unable to upgrade port: 1 
Error: Unable to execute port: upgrade libpixman failed 
To report a bug, see <http://guide.macports.org/#project.tickets> 

日誌是在這裏http://hpaste.org/56449 (OSX 10.6.8,Intel酷睿i5)

+3

這些評論re-homebrew是真的脫離主題 - 這是主觀 – Mark 2012-01-14 19:09:00

回答

1

問題是你指定+universal,所以它試圖建立32個和64位架構下(x86_64和i386) ...

:info:build ---> Building libpixman for architecture x86_64 

...and then later... 

:info:build ---> Building libpixman for architecture i386 

但在32位未能建立

:info:build ld: warning: in /opt/local/lib/libpng14.dylib, file was built for unsupported file format which is not the architecture being linked (i386) 

它在32位建立的libpng,因爲內置了64位,並且不能與32位版本的鏈接失敗。

如果您不需要通用版本,請刪除+universal,問題應該消失!

如果你確實需要一個通用的構建......那麼,macports應該弄明白。我相信問題是libpixman不會聲明任何依賴關係(libpng似乎是一個可選的dep)。 Macports無法知道它必須構建一個32位版本的libpng。無論如何,這是我最好的猜測。

這是exactly your bug。不幸的是,維護者的結論是,你應該手動強制重新編譯libpng爲32位。這是一個糟糕的解決方案,因爲它打破了gtk2及以後的自動化通用構建。真正的問題是缺少依賴關係,並且Macports無法知道沒有它就重建libpng。

+0

謝謝!我強迫它安裝32位libpng並解決了問題。 – 2012-01-14 20:37:24

3

sudo port upgrade outdated +universal只會升級端口從安裝它們以來它們已經發生了變化,所以如果端口沒有改變,它將不會被安裝/重新編譯。

第一步不是嚴格要求的,但是當你有多個版本的特定端口時會刪除一些問題。這一步是刪除所有不活動的端口sudo port uninstall inactive

要重新編譯您的所有端口使用sudo port upgrade --force installed +universal安裝的關鍵字將得到所有的端口和-force將確保所有的端口都被重建。

爲了使事情變得更容易,您應該更改macports配置以構建通用,而無需在port命令上執行此操作。您可以通過添加+通用這樣做是爲了/opt/local/etc/macports/variants.conf