понедельник, 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. А самое удивительное во всей этой истории то, что до этого метода я додумался только сейчас!

4 комментария:

  1. Пару раз помог этот совет. Спасибо. Страница в закладках.

    ОтветитьУдалить
  2. фигня:
    dpkg -i имя_пакета.deb - ставит пакет
    apt-get -f install - говорит что имя_пакета поломаный и удаляет его...

    Короче ничего не получилось.

    ОтветитьУдалить
    Ответы
    1. Скорее всего неободимой зависимости просто нету в репозитарии а apt-get -f install доставит зависимости только из репозитария.

      Удалить