post:: 2019/01/13
   :tags: Ubuntu, 2019
   :category: Ubuntu


==========================================
オフラインのUbuntuにパッケージインストール
==========================================

.. attention::

   ローカルにパッケージリポジトリ作る等の方が良いかもしれない。
   試したら追記する。

   ごちゃごちゃしてるから今度書き直す。

オンラインのマシンが必要になる。
オンラインの方でファイルをDL、オフラインの方でインストールという流れ。

オンラインでファイルを取得
==========================
apt-get install
---------------
`/var/cache/apt/archives` に自動的にファイルをDLしてくる。

.. code-block:: none

   $ apt-get install --download-only [package name]

.. note::

   既にオンラインの方にインストールされているパッケージはファイルを落とせない模様。

apt-get download
----------------
カレントディレクトリにファイルをDL。
インストール済でも問題ないので上より良さそう。

.. code-block:: none

   $ apt-get download [package name]

以下のコマンドで依存パッケージもDLできる。
なお、不要な依存パッケージを無視できないのでエラーになる。

.. code-block:: none

   $ apt-get download $(apt-rdepends [package name]|grep -v "^ ")

参考
^^^^
- https://stackoverflow.com/questions/13756800/how-to-download-all-dependencies-and-packages-to-directory
- https://superuser.com/questions/1112525/ignore-apt-get-download-errors


オフラインでインストール
========================
apt install -f
--------------
`-f` オプションでファイルからインストールできるようだ。
しかし、最初はネットに接続しに行く(謎)。

.. code-block:: none

   $   apt install -f [.deb file path]

面倒だったらパッケージリポジトリの設定ファイルをリネームしておけば良さそう。

.. code-block:: none

   $ mv /etc/apt/sources.list /etc/apt/sources.list.bk

.. attention::

   apt install -f を実行すると、他のパッケージを削除しようとする(よく分からない)。
   dpkg -i を代わりに使う方が良いみたいだ。

dpkg
----
[.deb file path]を `*` にもできるが、依存の解決はしないので順番にやっていくしかない。

.. code-block:: none

   $ sudo dpkg -i [.deb file path]

参考
^^^^
- https://www.ostechnix.com/download-packages-dependencies-locally-ubuntu/

余談:せやかてsudo
------------------
sudoが入っていない。

.. code-block:: none

   $ root@cd6e0f83b594:/# sudo
   bash: sudo: command not found

.debファイルからインストールすれば使えるようになる。

.. code-block:: none

   $ apt install -f ./sudo_1.8.16-0ubuntu1_amd64.deb

less等も入っていないので同様に.debからインストールしておくのが吉。

gdebi
-----
`dpkg -i` だと依存関係を解決せずにインストールする。

gdebiというパッケージを使用すると依存関係を解決してインストールできるらしい。

参考
^^^^
- http://mickey-happygolucky.hatenablog.com/entry/2017/08/05/062959