понедельник, 7 декабря 2009 г.

Установка индивидуальных deb пакетов с автоматическим удовлетворением зависимостей

Ситуация:
Из источников, близких к сомнительных, нам достался deb пакет (например Skype, Opera, MySQL Workbench ...). Возникает желание поставить его быстро, а не заниматься удовлетворением зависимостей.

Как выяснилось, все очень просто:

dpkg -i имя_пакета.deb || apt-get -f install

или с sudo:

sudo dpkg -i имя_пакета.deb || sudo apt-get -f install

Теперь о том, что здесь происходит.
Оказывается dpkg -i сначала распаковывает пакет и регистрирует его в системе, и лишь потом проверяет удовлетворены ли все зависимости этого пакета. Получается, что пакет уже как бы установлен но в состоянии "not fully installed or removed" как отзывается о нем apt-get.

Ключ -f для apt-get говорит о том, что apt-get'у надо поправить все несуразности в базе пакетов т.е. установит все, что недоустановлено и удалить то, что недоудалено.

P.S. А самое удивительное во всей этой истории то, что до этого метода я додумался только сейчас!