как установить файл deb, с помощью dpkg -i или apt?

<p>у меня есть пакет deb для установки.</p><p>должен ли я установить <code>dpkg -i my.deb</code> или по методу?</p><p>будут ли оба хорошо решать проблему зависимости от программного обеспечения?</p><p>если по apt, как я могу установить с deb по apt?</p>

<p>когда вы используете <code>apt</code> для установки пакета, <a href="https://wiki.debian.org/debianpackagemanagement">под капотом</a> он использует <code>dpkg</code>. когда вы устанавливаете пакет с помощью apt, он сначала создает список всех зависимостей и загружает его из репозитория.</p><p>после завершения загрузки он вызывает <code>dpkg</code> для установки всех этих файлов, удовлетворяющих всем зависимостям.</p><h3>так что если у вас есть <code>.deb</code> файл, вы можете установить его:</h3><ol> <li> <p>с помощью:</p> <pre><code>sudo dpkg -i /path/to/deb/file sudo apt-get install -f </code></pre></li> <li> <p>с помощью:</p> <pre><code>sudo apt install ./name.deb </code></pre> <p>или</p> <pre><code>sudo apt install /path/to/package/name.deb </code></pre> <p>со старым <code>apt-get</code> версии, вы должны сначала переместить файл deb в <code>/var/cache/apt/archives/</code> каталог. для обоих, после выполнения этой команды, она автоматически загрузит свои зависимости.</p> </li> <li> <p>сначала установите <code>gdebi</code>, а затем откройте файл .deb, используя его (<em> щелкните правой кнопкой мыши</em> -> <em> откройте с помощью</em>). он установит ваш пакет .deb со всеми его зависимостями.</p> <p><strong> примечание </strong>: apt поддерживает индекс пакетов, который представляет собой базу данных доступных пакетов, доступных в репозитории, определенном в <code>/etc/apt/sources.list</code> файл и в <code>/etc/apt/sources.list.d</code> каталог. все эти методы не смогут удовлетворить программную зависимость, если зависимости, требуемые deb, отсутствуют в индексе пакета.</p> </li> </ol><hr><h3>зачем использовать <code>sudo apt-get install -f</code> после <code>sudo dpkg -i /path/to/deb/file</code> (как указано в методе 1)?</h3><p>от <code>man apt-get</code>:</p><pre><code> -f, --fix-broken fix; attempt to correct a system with broken dependencies in place. </code></pre><p>когда <code>dpkg</code> устанавливает пакет и зависимость пакета не удовлетворяется, он оставляет пакет в "ненастроенном" состоянии, и этот пакет считается поврежденным.</p><p><code>sudo apt-get install -f</code> команда пытается исправить этот поврежденный пакет, установив отсутствующую зависимость.</p>

<p>установите свой <code>foo.deb</code> файл с <code>dpkg -i foo.deb</code>. если есть ошибки с неразрешенными зависимостями, запустите <code>apt-get install -f</code> потом.</p>

<p>вот лучший способ установить <code>.deb</code> файл в ubuntu из командной строки:</p><pre><code>sudo gdebi skype.deb </code></pre><p>если у вас еще не установлено <code>gdebi</code>, установите его с помощью <code>sudo apt install gdebi-core</code>.</p><h1>почему гдеби?</h1><p><code>gdebi</code> будет искать все зависимости <code>.deb</code> и установит их перед попыткой установить <code>.deb</code> файл. я считаю, что это гораздо предпочтительнее, чем <code>sudo dpkg -i skype.deb && sudo apt install -f</code>. последний слишком стремится удалить зависимости в определенных ситуациях. например, когда я пытался установить skype, он попытался удалить 96 (!) пакетов, включая такие пакеты, как <code>compiz</code> и <code>unity</code>! <code>gdebi</code> дал гораздо более четкое сообщение об ошибке:</p><pre><code> $ sudo gdebi skype.deb cannot install 'libqtgui:i386' </code></pre><p>(вот <a href="https://askubuntu.com/a/553283/2355">решение этой конкретной проблемы</a> , кстати.)</p>

<p>вы можете установить локальный пакет .deb:</p><pre><code>sudo apt install ./foo.deb </code></pre><p>обязательно укажите локальный относительный или абсолютный путь (<code>./</code> если в текущем каталоге), иначе он будет искать <code>foo.deb</code> в удаленных репозиториях и сбой.</p>

<p>проверьте зависимости с помощью <code>dpkg -i my.deb</code> а также <code>apt-get install</code> зависимости до <code>dpkg -i my.deb</code>.</p><p>
может быть, вы можете скопировать <code>my.deb</code> в <code>/var/cache/apt/archives</code> и установите его непосредственно с помощью <code>apt-get</code> но я никогда не пробовал.
 не работает, <code>apt-get</code> и <code>dpkg</code> ищут пакеты, перечисленные в архивах.</p>

<p>самый простой ответ - использовать dpkg, запустив <code>dpkg -i packagename.deb</code>. затем вы можете удалить его, запустив <code>dpkg -r packagename.deb</code>.<br> <code>apt-get</code> - установщик более высокого уровня, основанный на dpkg, и поэтому вы можете <code>apt-get install packagename.deb</code>.<br> было бы полезно добавить его в каталог архивов apt-get (<code>/var/cache/apt/archives</code>) чтобы вы могли ссылаться на него как на пакет с зависимостями, а не на отдельный архив .deb.<br> кроме того, добавив его в свой каталог архивов apt-get, вы сможете использовать зависимости с <code>apt-get install packagename</code>. это позволит вам установить его с любыми добавленными зависимостями вместо автономной системы на основе архива dpkg.</p>

<p>современный apt-get можно использовать для установки пакета просто с помощью <code>apt-get install /path/to/package/name.deb</code>.</p><p>(должно быть сделано как правка для верхнего ответа, но оно было отклонено - см. <a href="https://unix.stackexchange.com/posts/159114/edit">https://unix.stackexchange.com/posts/159114/edit</a> )</p>