2011-07-03 30 views
14

Làm cách nào để tạo và cài đặt tài liệu cho tất cả các gói cabal được cài đặt cục bộ? Tôi bật cờ tài liệu trong ~/.cabal/config có nghĩa là tất cả các gói mới được cài đặt sẽ có tài liệu cũng được tạo. Nhưng làm thế nào để tạo tài liệu cho tất cả các gói đã cài đặt?Haskell Cabal tái tạo tài liệu cho tất cả các gói đã cài đặt

Có cách nào để tự động cabal install --reinstall tất cả các gói đã được cài đặt không? Và quan trọng hơn, đó là một ý tưởng hay?

Trả lời

4

Nếu bạn có một phiên bản mới-ish của cabal-install (> = 0,10, tôi nghĩ), bạn có thể thử làm

$ cabal install --reinstall --upgrade-dependencies world 

Thật không may, nó đã không làm việc trong trường hợp của tôi:

$ cabal install --dry-run --reinstall world 
Resolving dependencies... 
cabal: cannot configure Agda-2.2.10. It requires haskell-src-exts >=1.9.6 && 
<1.10 
For the dependency on haskell-src-exts >=1.9.6 && <1.10 there are these 
packages: haskell-src-exts-1.9.6. However none of them are available. 
haskell-src-exts-1.9.6 was excluded because haskell-src-exts-1.11.1 was 
selected instead 
haskell-src-exts-1.9.6 was excluded because hlint-1.8.12 requires 
haskell-src-exts ==1.11.* 

Nếu bạn gặp phải lỗi như thế này, bạn có thể thử chỉnh sửa thủ công tệp ~/.cabal/world.

+0

Điều đó đã hiệu quả! Không hoàn hảo .. Nhưng gần như. Nó không nhận được tất cả các phụ thuộc của tất cả các gói và các tài liệu được tạo ra không có chỉ mục hoặc liên kết thích hợp với các nguồn nhưng đó là một cải tiến lớn so với việc không có bất kỳ tài liệu cục bộ nào cả. Cảm ơn! –

+0

Có, tệp thế giới chỉ liệt kê các gói được cài đặt theo cách thủ công, do đó, các phụ thuộc được cài đặt tự động không được cài đặt lại (trừ khi có phiên bản mới trên Hackage). –

+0

1.10 ??? Tôi có 0.10 ... – alternative

-1

Bạn có thể thử một cái gì đó như thế này trong bash.

for pkg in `ghc-pkg list --simple` 
do 
cabal install $pkg --reinstall 
done 

Nhưng tôi thực sự không biết, cho dù đó là một ý tưởng hay.

+6

nó sẽ cố gắng cài đặt lại 'ghc',' cơ sở', v.v. Không thử;) – Yuras

+1

Bạn có thể sử dụng 'ghc-pkg --simple --user' để chỉ liệt kê các gói do người dùng cài đặt. –

3

Xin lưu ý rằng cabal install --only-dep --reinstalldoes not work.

Nếu bạn đang sử dụng một sandbox, bạn có thể làm

cabal sandbox delete 
cabal sandbox init 
cabal install -j --only-dep --enable-documentation 

Tùy chọn -j cho phép nó để xây dựng song song.

Các vấn đề liên quan