Monthly Archiv: Сентябрь, 2011

"Даунгрейд" или Понижаем версию deb-пакета

Если вы являетесь активным пользователям Ubuntu и используете сторонние ppa или же отдельно взятые пакеты, рано или поздно, при установке или сборке нового пакета, вы можете столкнуться с проблемой, когда уже имеющиеся в системе пакеты не позволяют установить новый. Это может происходить в ситуации, когда устанавливаемый пакет зависит от других, устаревших, или же в случае, когда зависимости этого пакета планировались исходя из состава «родного» репозитория Canonical, тогда как версии, установленные из  сторонних ppa или вручную оказываются слишком «свежими».
Банальным решением является удаление «конфликтного» пакета вручную, удаления (или отключения) ссылки на репозиторий, откуда был установлен «свежий» пакет и повторная установка из репозиториев Canonical.
Однако это решение, во-первых, не очень изящное, а во-вторых, не всегда подходит, например, в случае, когда от удаляемого пакета зависит чуть ли не вся система.

В этом случае нам поможет явное указание более старой версии при установке.
Посмотреть доступные версии в репозиториях мы можем при помощи команды

apt-cache showpkg имя_пакета

в разделе  Provides: 

Например, у меня в системе команда

apt-cache showpkg vlc

сообщит о таком:

Provides:
1.1.11-1~getdeb1 — mp3-decoder
1.1.9-1ubuntu1.3 — mp3-decoder
1.1.9-1ubuntu1 — mp3-decoder
1.0.6-1~getdeb1 — mp3-decoder

а  

apt-cache showpkg audacity

выдаст

Provides:
1.3.13+svn20110917+r6859-0~natty1 —
1.3.13-3ubuntu1 —
1.3.12~beta-1~getdeb2

Зная доступные в репозиториях версии, мы можем указать их при установке явно, при  помощи знака = после имени пакета.
Например,
sudo aptitude install vlc=1.1.9-1ubuntu1
или же,

sudo apt-get install audacity=1.3.13-3ubuntu1