preserved libs
Aug 20 2008Тыя карыстальнікі Gentoo, каторыя не баяцца карыстацца нестабільнай веткай пакетаў (накшталт ~x86), пасьля не такіх ужо даўніх аднаўленьняў на portage-2.2 маглі час ад часу пачаць заўважаць наступныя паведамленьні:
!!! existing preserved libs:
>>> package: media-libs/libdvdread-9999
* – /usr/lib/libdvdread.so.3
* – /usr/lib/libdvdread.so.3.2.1
Use emerge @preserved-rebuild to rebuild packages using these libraries
Страшэннага ў іх нічога няма, зараз я распавяду, штэ гэта азначае. Я ж таксама люблю bleeding edge, чаго ўжо там хаваць.
Дык вось, preserved libs – файлы, якія павінны былі быць выдаленыя сістэмай portage зь сістэмы, як файлы, якія належаць старой вэрсіі пакету. Напрыклад: у мяне стаіць (дакладней стаяў) libdvdread-9999. Заставім незамаскіраванасьць вэрсіі пакету на сумленьні гаспадароў овэрлэю berkano. Пры аднаўленьні са звычайнай вэрсіі ў libdvdread зьмянілася api, што аўтаматычна застаўляе распрацоўшчыкаў зьмяніць адну з апошніх лічбаў у назове файла бібліятэкі. У звычайнай вэрсіі быў libdvdread.so.3, а ў svn вэрсіі стаў libdvdread.so.4. Праграма, якія выкарыстоўвалі старую вэрсію api па ідэі павінны згубіць сваю апору, таму што libdvdread.so.3 павінен быць выдалены зь сістэмы як састарэўшы. Але ня так усё галіма, як падаецца, таму што новая фіча portage менавіта тым і займаецца, што вышуквае падобнага рожу праблемы і застаўляе старыя вэрсіі бібліятэк нараўне з новымі.
Portage таксама складае набор праграмаў, якія залежаць ад старой бібліятэкі і параіць іх перасабраць. Вельмі верагодна, што лінкоўка атрымаецца і з новай вэрсіяй. Для гэтага існуе каманда
emerge @preserved-rebuild
Згадзіцеся, даволі карысная фіча ;) Пасьля выкананьня ўсех залежнасьцяў старая вэрсія бібліятэкі будзе выдалена зь сістэмы. Праблема накшталт паломкі сістэмы праз аднаўленьне expat (больш-менш сталыя карыстальнікі павінны памятаць) вырашана, шыкоўна!
У мяне ня выйшла перасабраць k3b, таму я проста замаскіраваў libdvdread:
echo '=media-libs/libdvdread-9999' >> /etc/portage/package.mask




Recent Comments