オフライン環境におけるapt-getの使用

オフライン環境でパッケージをインストールしたい場合、

  •  リポジトリのミラーリングを行い、ミラーサーバからインストールする。
  • (debianパッケージの場合)dpkgコマンドでインストールする。
といった方法がありますが、前者を使うまでもないが後者では面倒といった状況があるかと思います。ここではdpkgコマンド一発ではインストールできないパッケージインストール方法について紹介します。この方法では、オフライン環境と同等のオンライン環境を利用します。

オンライン環境での作業

あらかじめオフライン環境相当としておいてください。
  • apt-get cleanコマンドでアーカイブファイルを消去する。
  • オフライン環境でインストールしたいパッケージをapt-get installコマンドでインストールする。
  • 上記でインストールされたパッケージは /var/cache/apt/archives ディレクトリにキャッシュされている。このディレクトリにあるdebファイル群をオフライン作業用に使用する。

オフライン環境での作業

メインとなるオフライン環境での作業です。
  • オンライン環境で準備したdebファイル群を適当な場所に格納する。
  • apt-ftparchiveコマンドでdebファイルのパッケージを作成する。
    sudo apt-ftparchive Packages . |gzip > Packages.gz
  • /etc/apt/sources.list にて以下の変更を行う。
    • 全てコメントアウトするか削除する。
    • apt-ftparchiveコマンドで作成したパッケージファイルがあるディレクトリをdeb fileとして追加する。
      deb file:{パッケージファイルのあるディレクトリ} ./
  • apt-get updateコマンドを実行し、インデックスを更新する。
  • apt-get installコマンドでパッケージをインストールする。
この方法に関するポイントは以下のとおりです。
  • dpkgコマンドでは依存関係を解決しないため、多数の依存関係をもつパッケージをインストールするのであれば、apt-getコマンドを使った方が簡単である。
  • オンライン環境下でapt-get updateコマンドによるインデックス作成済みの場合、apt-get install時にオンラインでしか繋がらないサイトへアクセスするかもしれない。sources.list でオンラインに関する情報を全て除去し、apt-get updateすることによってオフライン専用のインデックスとする。
  • ここではPackages.gzのみの作成としたが、他のアーカイブも作成する必要があればapt-ftparchiveコマンドについて調べて作成すればよい。
なお、gdebiという依存関係も解決してくれるdpkgコマンドがあるようですが、オフライン環境だとgdebiインストールステップそのものが発生するので試していません。

コメント

このブログの人気の投稿

ひかり電話をSIPクライアントアプリで使う

Linux日本語ファイル名文字化け