Macports 解决某些包同时依赖不同版本库的办法

问题很奇葩:

最初是想在 CLISP 上用 portableaserve,于是用 quicklisp 安装

(ql:quickload :aserve)

结果出现各种问题,包括修改代码什么的,具体内容如下:

执行
[8]> (ql:quickload :aserve)
To load “aserve”:
Install 5 Quicklisp releases:

cl-ppcre ironclad nibbles portableaserve puri

; Fetching #

; 33.99KB

34,803 bytes in 0.10 seconds (323.79KB/sec)
; Fetching #

; 20.58KB

21,075 bytes in 0.19 seconds (110.67KB/sec)
; Fetching #

; 504.70KB

516,817 bytes in 2.40 seconds (210.39KB/sec)
; Fetching #

; 154.37KB

158,070 bytes in 1.34 seconds (114.81KB/sec)
; Fetching #

; 579.26KB

593,163 bytes in 163.05 seconds (3.55KB/sec)
; Loading “aserve”
[package nibbles]……………………………
[package ironclad]…………………………..
…………………………………………..
[package cl-ppcre]…………………………..
[package puri]………………………………
[package acl-compat.excl]…………………….
[package acl-compat.mp]………………………
[package de.dataheaven.chunked-stream-mixin]……
[package acl-compat.socket]…………………..
[package acl-compat.system]…………………..
[package gray-stream]………………………..
[package net.html.generator]………………….
[package net.aserve]…………………………
[package net.aserve.client]
*** - READ from

   #<INPUT BUFFERED FILE-STREAM CHARACTER
     #P"/Users/admin/LispBox-0.93/dists/quicklisp/software/portableaserve-20130420-git/aserve/main.cl" @218>
  : there is no package with name "UNIX"

The following restarts are available:
RETRY :R1 Retry compiling # .
ACCEPT :R2 Continue, treating compiling # as having been successful.
ABORT :R3 Give up on “aserve”
ABORT :R4 Abort main loop
Break 1 NET.ASERVE[9]>

打开 /Users/admin/LispBox-0.93/dists/quicklisp/software/portableaserve-20130420-git/aserve/main.cl

原语句为:

+(and clisp unix)

(defun getpid () (unix:getpid))

修改为:

+(and clisp unix)

(defun getpid () (getpid))

不过修改后再次加载出现了符号重复冲突,于是一时不慎就把 .cache 里 dist 下的 portableaserve 目录扔到废纸篓,然后直接删除了,于是就各种杯具,再也不能用 quicklisp,每次都提示 .Trash 找不到文件。。。

更大的杯具即将发生,于是干脆用 macport 卸载掉了 CLISP,打算重装,却没想到当初的 CLISP 是在 OSX 10.7 下编译安装的,现在系统升级到了 10.9,其中有一个依赖包 llvm-3.0 不再被 支持了。

搜索半天终于找到一篇解决这个的办法(),就是把对 llvm-3.0 的依赖更新到 llvm-3.3,于是一些包就存在两种依赖,比如 cctools 和 ld64,现在进行到删除他们对 llvm-3.0 的依赖,如下:

<!-- lang: shell -->
Air:~ admin$ sudo port -v uninstall cctools

—> The following versions of cctools are currently installed:
—> cctools @822_2+llvm30
—> cctools @855_1+llvm33+universal (active)
Error: port uninstall failed: Registry error: Please specify the full version as recorded in the port registry.
Air:~ admin$ sudo port -v uninstall cctools @822_2+llvm30
—> Uninstalling cctools @822_2+llvm30
—> Cleaning cctools
—> Removing work directory for cctools
Air:~ admin$ sudo port -v uninstall ld64
—> The following versions of ld64 are currently installed:
—> ld64 @128.2_4+llvm30
—> ld64 @236.3_1+llvm33+universal (active)
Error: port uninstall failed: Registry error: Please specify the full version as recorded in the port registry.
Air:~ admin$ sudo port -v uninstall ld64 @128.2_4+llvm30
—> Uninstalling ld64 @128.2_4+llvm30
—> Cleaning ld64
—> Removing work directory for ld64
Air:~ admin$

卸载掉 llvm-3.0

Air:~ admin$ sudo port -v uninstall llvm-3.0
—> Deactivating llvm-3.0 @3.0_5
—> Cleaning llvm-3.0
—> Removing work directory for llvm-3.0
—> Uninstalling llvm-3.0 @3.0_5
—> Cleaning llvm-3.0
—> Removing work directory for llvm-3.0
Air:~ admin$

后续进展继续更新。。。

结果发展到所有的包都无法安装,每次都因为无法 upgrade dbus 而停止,尝试了各种办法,搜索了N多人的经验,最后觉得没希望了,就安装了一个 homebrew,于是轻松地把 CLISP 安装好了。

接着回头继续考虑 macport 和 dbus 的问题,结果是无解,于是注册了一个 macports 站点的用户,准备去提交一个问题报告,提交之前先浏览一下关于 dbus 的问题单,结果还真发现一个比较接近的,于是仔细看了看,发现讨论来讨论去都没找到问题根源,最终的解决办法是把 macports 的安装好的目录全部改名(那几个哥们儿讨论了很多,也试过各种定位,https://trac.macports.org/ticket/43947 ),然后重新安装 macports,看来我也不必提什么单了,直接重装好了:

Air:opt admin$ sudo mv /opt/local ~/macports
Password:
Air:opt admin$            

然后从 macports 网站下载了最新的 2.3.1 的 dmg,看看后续如何

你可能感兴趣的:(Macports 解决某些包同时依赖不同版本库的办法)