Осень, сентябрь. В автобусах, в закусочных то и дело слышны разговоры про непочиненность glib и vty-ui. Всё верно, планета медленно переползает на 7.6.1 с 7.4.2.
Да, для большинства пакетиков делаются специальные подпорочки, версии зависимостей бампаются, тупая неинтересная скучная обыденная банальная рутина. Но то и дело находится герой, ломающий всё окружение целиком.
Типичный пример:
$> cabal-dev install
Resolving dependencies...
In order, the following would be installed:
bytestring-0.9.2.1 (new version)
containers-0.4.2.1 (new version)
binary-0.6.1.0 (new version)
cereal-0.3.5.2 (reinstall) changes: bytestring-0.10.0.0 -> 0.9.2.1,
containers-0.5.0.0 -> 0.4.2.1
curl-1.3.7 +new-base (reinstall) changes: bytestring-0.10.0.0 -> 0.9.2.1,
containers-0.5.0.0 -> 0.4.2.1
entropy-0.2.1 (reinstall) changes: bytestring-0.10.0.0 -> 0.9.2.1
crypto-api-0.10.2 (reinstall) changes: bytestring-0.10.0.0 -> 0.9.2.1
pureMD5-2.1.2.1 (reinstall) changes: binary-0.5.1.1 -> 0.6.1.0,
bytestring-0.10.0.0 -> 0.9.2.1
template-haskell-2.8.0.0 (reinstall) changes: containers-0.5.0.0 -> 0.4.2.1
text-0.11.2.3 (reinstall) changes: bytestring-0.10.0.0 -> 0.9.2.1
attoparsec-0.10.2.0 (reinstall) changes: bytestring-0.10.0.0 -> 0.9.2.1,
containers-0.5.0.0 -> 0.4.2.1
blaze-builder-0.3.1.0 (reinstall) changes: bytestring-0.10.0.0 -> 0.9.2.1
hashable-1.1.2.5 (reinstall) changes: bytestring-0.10.0.0 -> 0.9.2.1
parsec-3.1.3 (reinstall) changes: bytestring-0.10.0.0 -> 0.9.2.1
unix-2.6.0.0 (reinstall) changes: bytestring-0.10.0.0 -> 0.9.2.1
directory-1.2.0.0 (reinstall)
network-2.3.1.0 (reinstall) changes: bytestring-0.10.0.0 -> 0.9.2.1
process-1.1.0.2 (reinstall)
hslogger-1.2.1 (new version)
unordered-containers-0.2.2.1 (reinstall)
aeson-0.6.0.2 (reinstall) changes: bytestring-0.10.0.0 -> 0.9.2.1,
containers-0.5.0.0 -> 0.4.2.1
urlencoded-0.3.0.1 (reinstall)
utf8-string-0.3.7 -bytestring-in-base (reinstall) changes: bytestring-0.10.0.0
-> 0.9.2.1
libmpd-0.8.0 (new package)
xml-1.3.12 (reinstall) changes: bytestring-0.10.0.0 -> 0.9.2.1
liblastfm-0.0.3.6 (reinstall) changes: bytestring-0.10.0.0 -> 0.9.2.1
loh-0.0.0 (new package)
cabal: The following packages are likely to be broken by the reinstalls:
io-choice-0.0.2
ghc-7.6.1
haddock-2.12.0
ghc-syb-utils-0.2.1.1
concrete-typerep-0.1.0.1
derive-2.5.11
cmdargs-0.10
hoogle-4.2.13
QuickCheck-2.5
show-0.4.1.2
Stream-0.4.6
arrows-0.4.4.1
IOSpec-0.2.5
xml-types-0.3.3
xml-conduit-1.0.3.1
texmath-0.6.0.6
pandoc-1.9.4.2
Graphalyze-0.13.0.1
citeproc-hs-0.3.4
wl-pprint-text-1.1.0.0
graphviz-2999.14.1.0
wai-1.3.0
warp-1.3.1
tagsoup-0.12.8
system-filepath-0.4.7
polyparse-1.8
vty-4.7.0.14
regex-tdfa-1.1.8
simple-sendfile-0.2.7
oeis-0.3.1
network-conduit-0.5.0.1
hslogger-1.2.0
cgi-3001.1.8.3
HTTP-4000.2.4
json-0.5
highlighting-kate-0.5.2
csv-0.1.2
http-types-0.7.3.0.1
vault-0.2.0.1
uniplate-1.6.7
hlint-1.8.31
case-insensitive-0.4.0.3
enumerator-0.4.19
blaze-builder-enumerator-0.2.0.5
conduit-0.5.2.4
blaze-builder-conduit-0.5.0.1
attoparsec-conduit-0.5.0.1
blaze-markup-0.5.1.1
blaze-html-0.5.1.0
zip-archive-0.1.1.8
xmonad-contrib-0.10
xmonad-0.10
unlambda-0.1
unix-compat-0.3.0.2
shellish-0.1.4
temporary-1.1.2.3
readline-1.0.1.0
language-c-0.4.2
haskell98-2.0.0.2
dyre-0.8.8
Cabal-1.16.0
bin-package-db-0.0.0.0
hscurses-1.4.1.2
executable-path-0.0.3
xdg-basedir-0.2.1
tar-0.4.0.0
silently-1.2.0.2
hpc-0.6.0.0
hashed-storage-0.5.9
cpphs-1.14
haskell-src-exts-1.13.5
brainfuck-0.1
X11-xft-0.3.1
Use --force-reinstalls if you want to install anyway.
Чудесный кристально ясный выхлоп кабан-девы позволяет моментально понять причину блокировки и предпосылку к ФОРСИРОВАННОМУ ДАУНГРЕЙДУ ЕДРЁНОЙ ТОННЫ ПАКЕТОВ.
Да, либмпд всё сломал своей зависимостью от старых девятых байтострингов, в то время как в ведущих домах Венеции все разгуливают в десятых байтострингах.
Не знаю как для остальных людей, но лично для меня до сих пор остаётся загадкой, по какой причине детективное расследование по выуживанию виновника торжества из всей этой феерической кавалькады стрелочек и наименований пакетов остаётся рутинной операцией, возлагаемой на худенькие плечики обладателя худеньких ручек, в сотый раз набирающих cabal-dev install.
У меня такой ощущение, что я что-то пропускаю. Что в какой-то параллельной вселенной все нормальные люди нажимают кабан-инсталл и моментально видят строки «дружище, да у тебя же байтостринги десятые, а либмпд хочет девятые».
upd: Да, cabal - не пакетный менеджер, но тем не менее обладает информацией, из-за какого именно пакета происходит конфликт, но не обладает возможностью предоставить её вменяемым образом, как, например, это делает тот же emerge.