Powered by Six Apart

« 6.HDL-GXR 完成(まとめ?) | メイン | google がなにやら最近重くない?、そしてウザクない? »

2011年6月20日 (月)

ローカルパッケージをAPTで操作できるようにする 其の壱

Debianでローカルなパッケージをインストールする際、依存関係を手入力で解決するのは非常に面倒です。
そこで、ローカルのパッケージもAPTで操作する方法を見つけましたので書き残しておきます。

私的には、この方法が非常に簡単で気に入っています。

[参考にしたサイト]
APT HOWTO (Obsolete Documentation) > 第 2 章 - 基本的な設定 > 2.2 ローカルでの APT の使い方
http://www.debian.org/doc/manuals/apt-howto/ch-basico.ja.html

----------------------------------------------------------------------
 
 
 
1. deb ファイルを収めるディレクトリを作ります

ここでは、USBに接続されたUSBドライブの/mnt/build/usl-5p/debian-sh/lennyディレクトリの下にパッケージを置くようにします。
# mount /dev/sdc1 /mnt/build
# mkdir /mnt/build/usl-5p/debian-sh/lenny
# mkdir /mnt/build/usl-5p/debian-sh/lenny/packages
# mkdir /mnt/build/usl-5p/debian-sh/lenny/packages/debs
# ls -l /mnt/build/usl-5p/debian-sh/lenny/packages
合計 4
drwxr-xr-x 2 root root 4096 2011-03-26 20:29 debs
# ls -l /mnt/build/usl-5p/debian-sh/lenny/packages/debs
合計 0
 
 
 
2. APT のレポジトリが必用な空のファイル(ここではlenny-packages)を作ります

# touch /mnt/build/usl-5p/debian-sh/lenny/packages/lenny-packages
# ls -l /mnt/build/usl-5p/debian-sh/lenny/packages
合計 4
drwxr-xr-x 2 root root 4096 2011-03-26 20:59 debs
-rw-r--r-- 1 root root    0 2011-03-26 21:16 lenny-packages
 
 
 
3. パッケージに関する各種情報を管理するファイルを生成します
debs/Packages.gz という名のパッケージに関する各種情報を含んだファイルを生成します。このファイルが APT に使われるようです。
# cd /mnt/build/usl-5p/debian-sh/lenny/packages
# dpkg-scanpackages debs lenny-packages | gzip > debs/Packages.gz
Wrote 0 entries to output Packages file.     ← パッケージが何もいれてないのでこうなります。

# ls -l
合計 4
drwxr-xr-x 2 root root 4096 2011-03-26 21:21 debs
-rw-r--r-- 1 root root    0 2011-03-26 21:16 lenny-packages
# ls -l ./debs
合計 4
-rw-r--r-- 1 root root 20 2011-03-26 21:21 Packages.gz

この ./debsディレクトリの中にローカルなパッケージを入れます。
 
 
 

4. sources.list にレポジトリを追加
ローカルのパッケージを使用するため sources.list にレポジトリを追加します。

# vim /etc/apt/sources.list
# cat /etc/apt/sources.list
   deb     http://www.si-linux.co.jp/pub/debian-sh         lenny           main
   deb-src http://ftp.debian.org/debian/                   lenny           main contrib non-free
   deb-src http://security.debian.org/                     lenny/updates   main contrib non-free
   deb-src http://volatile.debian.org/debian-volatile      lenny/volatile  main contrib non-free
   deb     file:/mnt/build/usl-5p/debian-sh/lenny/packages debs/  ← ローカルのパッケージ情報を追加

これで、設定の変更は完了です。


 
  
5. 使い方
 
APTで操作したいパッケージを上の./debsディレクトリに置きます。
それから、
   # cd /mnt/build/usl-5p/debian-sh/lenny/packages
   # dpkg-scanpackages debs lenny-packages | gzip > debs/Packages.gz
   # aptitude update
        無視 file: debs/ Release.gpg
        無視 file: debs/ Translation-ja
        無視 file: debs/ Release
        無視 file: debs/ Packages
        無視 http://www.si-linux.co.jp lenny Release.gpg
        無視 http://www.si-linux.co.jp lenny/main Translation-ja
        発見 http://www.si-linux.co.jp lenny Release
        無視 http://www.si-linux.co.jp lenny/main Packages/DiffIndex
        無視 http://www.si-linux.co.jp lenny/main Packages
        発見 http://www.si-linux.co.jp lenny/main Packages
                :
                :
                :
        発見 http://security.debian.org lenny/updates/non-free Sources
        41.6kB を 14s 秒でダウンロードしました (2910B/s)
       
コマンドを実行しパッケージの情報を反映させます。
(パッケージを変更した際、必ず行う必要があります)

ちゃんと、ローカルのパッケージも見に行ってるのでOKですね。

 
で、
        # aptitude upgrade
       や
        # aptitude install ooooooo

など、パッケージの操作を行ってください。
 
 
 
また、こんなこともできるようです。

./debsディレクトリに下に分類用のディレクトリを置きその中に分類したパッケージを置く何てこともできるようです。

./debs---+------ a ディレクトリ--+--- パッケージ a-1
         |                     +--- パッケージ a-2
         |
         +------ b ディレクトリ--+--- パッケージ b-1
         |                     +--- パッケージ a-2
         |                              :
                                        :
                               +--- パッケージ a-10

こういう構成でも入力するコマンドに変更はありません。

トラックバック

このページのトラックバックURL:
http://app.blog.bbiq.jp/t/trackback/543398/26658784

ローカルパッケージをAPTで操作できるようにする 其の壱を参照しているブログ:

コメント

コメントを投稿