ローカルマシンにリポジトリを作成してパッケージをインストールできるようにする手順を記載します。
Table of Contents
1 debパッケージを用意する
こちらのスクリプトを利用して、ubuntu-desktopのdebパッケージと依存パッケージをダウンロードします。
$ sudo apt install -y apt-rdepends $ mkdir deb $ cd deb $ ../download-deb-package.sh ubuntu-desktop $ cd ..
2 GPGキーを用意する
gpgを作成する場合に以下のメッセージが出る場合があります。マウス操作等でランダム値へのノイズを発生させてやることで解消されますが、SSH経由の場合はマウス操作できません。
Not enough random bytes available. Please do some other work to give
そこでrng-toolsでランダム値を更新します。
$ sudo apt install -y rng-tools $ sudo rngd -r /dev/urandom
gpgをbatch処理で作成する為の設定ファイルを作成します。
$ cat <<EOF > gpg.txt Key-Type: RSA Subkey-Type: RSA Name-Real: hiroom2 Expire-Date: 0 %pubring public.key %secring signing.key %commit EOF
GPGキーをbatch処理で作成してインポートします。
$ gpg --batch --gen-key gpg.txt $ gpg --import public.key signing.key
3 リポジトリを作成する
リポジトリを作成するrepreproをインストールします。
$ sudo apt install -y reprepro
リポジトリ作成で利用するsubkeyの値を取得します。
$ dir=`pwd` $ subkey=`gpg --list-keys --keyring ${dir}/public.key --no-default-keyring | \ grep sub | awk '{ print $2 }' | awk -F'/' '{ print $2 }'`
repoというディレクトリを作成し、repreproの設定ファイルを作成します。
$ mkdir repo $ cd repo $ mkdir conf $ cat <<EOF > conf/distributions Codename: xenial Architectures: amd64 Components: main SignWith: ${subkey} EOF
repreproでリポジトリを追加します。
$ reprepro includedeb xenial ~/deb/*.deb
GPGキーの公開鍵をrepoディレクトリに格納します。
$ cp ../public.key .
4 リポジトリの追加
apt-add-repositoryでリポジトリを追加します。
$ sudo apt-add-repository "deb file:/home/hiroom2/repo xenial main"
apt-add-repositoryで/etc/apt/sources.listは以下のように変更されます。
$ diff -uprN /etc/apt/sources.list{.org,} --- /etc/apt/sources.list.org 2016-08-13 07:43:32.618218136 +0900 +++ /etc/apt/sources.list 2016-08-13 07:49:19.777011499 +0900 @@ -48,4 +48,6 @@ deb-src http://security.ubuntu.com/ubunt deb http://security.ubuntu.com/ubuntu xenial-security universe deb-src http://security.ubuntu.com/ubuntu xenial-security universe deb http://security.ubuntu.com/ubuntu xenial-security multiverse +deb file:/home/hiroom2/repo xenial main +# deb-src file:/home/hiroom2/repo xenial main deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse
apt-keyでGPGキーを追加します。
$ sudo apt-key add /home/hiroom2/repo/public.key
これ以降はネットワークが動作しない状態でもDVDからパッケージをインストールできます。
$ sudo apt update -y $ sudo apt install -y ubuntu-desktop
5 HTTPで公開する
apache2でリポジトリを公開します。
$ sudo apt install -y apache2 $ sudo cp -a repo /var/www/html/
クライアント側でapt-add-repositoryでリポジトリを追加します。
$ sudo apt-add-repository "deb http://ubuntu-16.04-apt.hiroom2.com/repo xenial main"
クライアント側のapt-keyでGPGキーを追加します。
$ wget -O - http://ubuntu-16.04-apt.hiroom2.com/repo/public.key | \ sudo apt-key add -
これ以降はクライアント側でHTTPサーバからパッケージをインストールできます。
$ sudo apt update -y $ sudo apt install -y ubuntu-desktop