パッケージやパッケージシステムの FAQ

----

#contents

----

* パッケージシステムの FAQ [#l9b39c71]

**apt の使い方を知りたい [#be46e41f]

[[APT HOWTO>http://www.jp.debian.org/doc/manuals/apt-howto/index.ja.html]] という素敵なドキュメントがあります。

**apt ではなく dpkg を使ってもパッケージの管理ができますか [#m530e86e]

apt は基本的に dpkg が適切に処理できるように、パッケージの取得や依存関係の解決などを行ない、整理したものを dpkg に渡す仕事をしているだけです。
apt を使わない場合、これらをすべて自力で行なわなくてはならず面倒ではありますが、管理自体は充分に可能です。

これらの関係を Red Hat Enterprise Linux で置き替えるならば dpkg が rpm コマンド、apt が yum コマンドに相当します。
rpm コマンドで管理する場合と手間も似たようなものです。

dpkg によるインストールでは、依存関係で必要なすべてのファイルをあらかじめ手元に用意しておく必要があります。

具体例を挙げると、dpkg コマンドでバージョン 4.50-1 の lv パッケージをインストールするには

-バージョン 4.50-1 の lv パッケージ
-バージョン 4.50-1 の lv パッケージが依存している、バージョン 2.3.2.ds1-4 以降の libc6 パッケージ
-バージョン 4.50-1 の lv パッケージが依存している、バージョン 5.3.20030510-1 以降の libncurses5 パッケージ

の中でインストール済みのパッケージを除く、すべてのパッケージファイル (*.deb) が必要です。

ファイルを (例えばカレントディレクトリに) 用意できたら、まず lv が依存しているパッケージ群を順番にインストールします。
インストールでは、パッケージ名 (libc6) ではなくパッケージのファイル (例:libc6_2.3.2.ds1-22_i386.deb) を指定します。
 # dpkg -i ./libc6_2.3.2.ds1-22_i386.deb
 # dpkg -i ./libncurses5_5.4-7_i386.deb
最後に lv をインストールします:
 # dpkg -i ./lv_4.50-1_i386.deb
同時にインストールしてしまってもオッケーですが順序に注意のこと。
 # dpkg -i ./libc6_2.3.2.ds1-22_i386.deb ./libncurses5_5.4-7_i386.deb ./lv_4.50-1_i386.deb

**dpkg の基本的なコマンドを知りたい [#a8069aa2]
よく使うと思われる代表的なコマンドには、次のものがあります。
|dpkg|コマンド|h
|新規/アップグレード・インストール時|# dpkg -i '''パッケージファイル名'''|
|アンインストール (削除) 時|# dpkg -r '''パッケージ名'''|

その他のコマンド / オプション (他にも多数あるので関連項目を参照)
|コマンド|機能・簡単な説明|h
|$ dpkg -l|インストール済みパッケージの一覧を表示させる|
|$ dpkg -s '''パッケージ名'''|パッケージの詳細情報を表示させる|
//|-force-depends|依存関係を無視してインストール (削除) する|

-関連項目でよく出て来る dselect は、dpkg のフロントエンドに当たります。

**インストール済のすべてのパッケージの一覧が見たい [#fd9250e4]

 $ dpkg -l
ページャなどに出力すると読み易いです
 $ dpkg -l | pager
また、環境変数  COLUMNS でリストのコラム数を指定できます
 $ COLUMNS=100 dpkg -l

**インストール済のパッケージに含まれているファイルの一覧を見たい [#ne72a427]

 $ dpkg -L (パッケージ名)

ページャなどに出力すると読み易いです

 $ dpkg -L | pager

**インストール済のコマンドやファイルがどのパッケージに入ってるか探したい [#td0e2f4b]
-dpkg と which で探す

 $ dpkg -S `which (コマンド名)`
 例)
 $ dpkg -S `which ps`
 procps: /bin/ps

-dlocate で探す

 # aptitude install dlocate
 # update-dlocatedb
 $ dlocate (コマンド名やファイル名)

**初回インストール時の質問による設定をもう一度したい [#sbed9bac]
 # dpkg-reconfigure (パッケージ名)
 例)
 # dpkg-reconfigure debconf

**インストールしてないコマンドやファイルがどのパッケージに入ってるか探したい [#re47b3e1]

-本家のサイトにある「パッケージの内容を検索」で探す

http://www.jp.debian.org/distrib/packages#search_contents

-apt-cache コマンドを使う。

パッケージ名と description しか検索しないので見つからないかも。

 $ apt-cache search (コマンドやファイル名、関連するキーワードなど)

-別途 CUI ツールをインストールして使う

[[auto-apt>http://packages.qa.debian.org/a/auto-apt.html]] や [[apt-file>http://packages.qa.debian.org/a/apt-file.html]] などがある。

 # aptitude install auto-apt
 # auto-apt update
 $ auto-apt search (コマンドやファイル名)
 $ auto-apt search (コマンド名) | grep -w (コマンドのフルパスの頭から"/"を取ったもの)

 # aptitude install apt-file
 # apt-file update
 $ apt-file search (コマンドやファイル名)
 $ apt-file search (コマンド名) | grep -w (コマンドのフルパスの頭から"/"を取ったもの)

-別途 GUI ツールをインストールして使う

[[synaptic>http://www.nongnu.org/synaptic/]] や [[packagesearch>http://packagesearch.sourceforge.net/]] などがある。

 # aptitude install synaptic
 $ synaptic

 # aptitude install packagesearch
 $ packagesearch

**パッケージファイルの中身が見たい [#s6e0de47]
 $ dpkg -c (パッケージファイル名)
 例)
 $ dpkg -c w3m_0.5.1-3_i386.deb

**パッケージファイルの中身を取り出したい [#v6177516]
アプリやライブラリなどのファイルを取り出したい場合は
 $ dpkg -x (パッケージファイル名) (展開するディレクトリ)
 例)
 $ dpkg -x w3m_0.5.1-3_i386.deb ~/w3m_data

postinst や postrm などの maintainer scripts を取り出したい場合は
 $ dpkg -e (パッケージファイル名) (展開するディレクトリ)
 例)
 $ dpkg -e w3m_0.5.1-3_i386.deb ~/w3m_control

binutils に入っている ar を使うと、構成ファイルと maintainer scripts の両方が取り出せる。~
control.tar.gz には maintainer scripts, チェックサムなど、data.tar.gz には構成ファイルが入っている。~
 $ ar x (パッケージファイル名)
 $ tar xzf control.tar.gz
 $ tar xzf data.tar.gz

**パッケージのバージョンを指定してインストールしたい [#j33db790]
 # aptitude install (パッケージ名)=(バージョン)
例:
 # aptitude install apache=1.3.26-0woody3
もちろん apt-line やローカルのキャッシュに指定したファイルがないと駄目です。

**特定のパッケージをアップグレードの対象から外したい [#ma5c1389]

オススメは pin を使った方法。
/etc/apt/preferences に留めておきたいパッケージ名とバージョンを
 Package: (パッケージ名)
 Pin: version (バージョン)
 Pin-Priority: (優先度)
 
 例)
 Package: jnethack
 Pin: version 1.1.5-11
 Pin-Priority: 1001

のように書いておく。

その他には
 # aptitude hold (パッケージ名)
 例)
 # aptitude hold jnethack

 # echo (パッケージ名) hold | dpkg --set-selections
 例)
 # echo jnethack hold | dpkg --set-selections

**testing や unstable のパッケージを借りたい [#h9830ee7]
/etc/apt/sources.list には testing や unstable の apt-line も入れておく必要があります。
忘れずに。

また stable な環境などで libc6 などの根幹にかかわるパッケージも依存関係でアップグレードされる場合、
安易に (Y) を選ぶと'''大変なことになる'''のでよく考えてから。
どんどん新旧のパッケージが混ざっていつの間にかなんちゃって unstable な環境とかになってしまいます。

-99target を使う

/etc/apt/apt.conf.d/99target に
 APT::Default-Release "stable";

と書く。
 # aptitude install (パッケージ名)
で stable のパッケージが入る。
testing/unstable から借りる場合はそれぞれ
 # aptitude install (パッケージ名)/testing
 # aptitude install (パッケージ名)/unstable

-preferences を使う

上記の /etc/apt/apt.conf.d/99target を作るかわりに、/etc/apt/preferences へ
 Package: *
 Pin: release a=testing
 Pin-Priority: 105
 
 Package: *
 Pin: release a=testing-proposed-updates
 Pin-Priority: 110
 
 Package: *
 Pin: release a=unstable
 Pin-Priority: 90
と書く。リリース間は空行で分離する。こちらを用いることの利点は、
+非公式なパッケージもバージョンナンバーが大きければちゃんとインストールされる。
+pin を使って入れた testing または unstable パッケージはそれ以降 testing の最新版が入るようになる。
+もちろん、特にいじらないパッケージは stable のまま。

Pin-Priority の値の意味は以下の票を参考に
|Pin-Priority|意味|h
|0|インストールしない|
|1-99|指定すればインストールできるが、アップグレードの対象にはならない|
|100|現在インストールされているパッケージの priority|
|101-989|指定してインストールしたものも、アップグレードの対象になる|
|(500)|現在インストールされてないパッケージの priority|
|(989)|apt-pin の default priority|
|990|apt-get の --target-release (-t) オプションが指定された際に利用される priority|
|1000以上|ダウングレードしてでもそのパッケージをインストールさせる|

参考:~
http://debian.dtdns.net/2ch-debian/1033049225/52.html ~
man 5 apt_preferences

このやりかたは、apt-pinning と呼ばれているようです。
英語の解説ですが、[[Apt-Pinning for Beginners>http://jaqque.sbih.org/kplug/apt-pinning.html]] に、分かりやすく順を追って説明があります。

-rebuild する

[[パッケージに自分で修正を加えたい>#customize]]を読んでください。
修正を加えず単に build するだけです。

**どのパッケージを testing や unstable から借りてるか知りたい [#gdc29d70]
[[apt-show-versions>http://packages.qa.debian.org/a/apt-show-versions.html]] を使うとよいでしょう。
例えば testing を使っているけど一部 unstable から借りている場合
 $ apt-show-versions | grep unstable

**パッケージのバージョンを調べたい [#g3aca2a1]
[[apt-show-versions>http://packages.qa.debian.org/a/apt-show-versions.html]] を使うと便利です。
たとえば stable 環境で apache のバージョンを知りたければ
 $ apt-show-versions -p apache
 apache/stable uptodate 1.3.26-0woody3
といった感じに出力されます。
testing/unstable のバージョンも知りたければ、
 $ apt-show-versions -a -p apache
 apache  1.3.26-0woody3  install ok installed
 apache  1.3.26-0woody3  stable
 No proposed-updates version
 apache  1.3.26-1.1      testing
 apache  1.3.27-0.1      unstable
 apache/stable uptodate 1.3.26-0woody3
のように出力されます。

**あるパッケージがどのパッケージに依存している/されているのか知りたい [#b5d51dcc]
どのパッケージに依存しているのか調べるには
 $ apt-cache depends (パッケージ名)
[[apt-rdepends>http://packages.qa.debian.org/a/apt-rdepends.html]] を使えば指定したパッケージに依存しているパッケージの依存状態も表示できる。
 $ apt-rdepends (パッケージ名)

どのパッケージに依存されているのか調べるには
 $ apt-cache rdepends (パッケージ名)

**依存関係から孤立したパッケージを探すには &aname(orphan); [#u0bc771b]
[[deborphan>http://packages.qa.debian.org/d/deborphan.html]] を使いましょう。
 $ deborphan --guess-all
削除する場合に便利なフロントエンドもあります。
 # orphaner --guess-all
また GTK+ フロントエンドの [[gtkorphan>http://packages.qa.debian.org/g/gtkorphan.html]] もあります。

**依存関係で足りないパッケージを探すには [#hbc245ad]
 # apt-get check

**dpkg -l でパッケージ名とかバージョンが途中までしか表示されない [#h902820b]
環境変数 COLUMNS を大きな値 (200 とか) に設定してみてください。
 例:
 $ COLUMNS=200 dpkg -l
alias に登録しておくという手もあります。
 $ alias dpkg='COLUMNS=${COLUMNS:-80} dpkg' 

**aptitude update したら "E: Dynamic MMap ran out of room" とエラーが出た [#o86c6417]
sources.list にたくさん書きすぎです。apt-line を減らすか、/etc/apt/apt.conf に
 APT::Cache-Limit "100000000";
などと書いておくといいです。

詳しくは man apt.conf 参照。

**aptitude upgrade で 400 Bad Request が返る [#i378ac31]
おそらく HTTP 1.1 を解さない proxy のせいです。debian-user@Org での 
[[Jason Gunthorpe 氏の投稿>http://lists.debian.org/debian-user/1999/10/msg00177.html]]
を要約すると

+ [[診断くん>http://taruo.net/e/]]等を利用して、ISP が proxy を利用していることを確認したのち、ISP にゴルァ電。ISP がソフトウェアをアップグレードしてくれるまで続ける。「(ベンダ名) 逝ってよし!」と叫ぶのも忘れない。ftp を使うと少しはましな結果になるかもしれない。
+ acquire::http::pipeline-depth=0 を設定する (see "man apt.conf")

の 2 通りの方法があるようです。

**aptitude upgrade で消したくないパッケージを REMOVE すると言ってきます。 [#s4b1b120]
aptitude は自動的にインストールされたものか、指定してインストールされたものかを独自で管理しています。
 # aptitude unmarkauto パッケージ名
で自動的にインストールしたものではないと設定できます。~
aptitude を使う場合は apt-get との混用を避けるべきです。

**ローカルにあるパッケージを apt-get でインストールしたい [#w856afa5]
deb を置いたディレクトリで dpkg-scanpackages

 $ dpkg-scanpackages ./ /dev/null | gzip -c9 > Packages.gz 

でもいいけど

 $ apt-ftparchive packages . | gzip -c9 > Packages.gz
 $ apt-ftparchive sources . | gzip -c9 > Sources.gz

の方がムトゥ神推奨。apt-ftparchive は apt-utils パッケージに入っている。~
次に sources.list に
 deb file:(ディレクトリ) ./
 
 例)
 deb file:/usr/src/ ./
を追加して、apt-get update して apt-get install (パッケージ名) で完了。

参考:~
/usr/share/doc/apt/offline.html

**apt の GUI フロントエンドはありますか? [#f31e5f1f]
[[synaptic>http://www.nongnu.org/synaptic/]] や [[gnome-apt>http://packages.qa.debian.org/g/gnome-apt.html]]、[[packagesearch>http://packagesearch.sourceforge.net/]]、[[kpackage>http://www.general.uwa.edu.au/u/toivo/kpackage/]] などがあります。

**パッケージの更新を通知して欲しい [#ja792f84]
[[apt-watch>http://packages.qa.debian.org/a/apt-watch.html]] を使いましょう。~
[[cron-apt>http://packages.qa.debian.org/c/cron-apt.html]] と組み合わせて使えば cron-apt で情報を取得し、更新があれば apt-watch が更新した事を通知してくれます。

**自動で upgrade させたいんですけど [#ua9bb5bb]
[[cron-apt>http://packages.qa.debian.org/c/cron-apt.html]] を使いましょう。~
ただしデフォルトではダウンロードのみされるように設定されてます。
/etc/cron-apt/action.d/3-download の upgrade から "-d" オプションを取り除き、debconf や apt.conf などに APT::Get::Assume-Yes "true" などを設定しておきましょう。
危険なので stable でセキュリティ Fix のみするような用途以外にはオススメしません。

**aptitude upgrade したときのパッケージの変更点を知りたい [#q7486364]
[[apt-listchanges>http://packages.qa.debian.org/a/apt-listchanges.html]] を入れましょう。
アップグレードされるパッケージの変更点を表示してくれます。

apt-get -u upgrade も使える?

**dselect や apt にて debconf の dpkg list がエラーになる [#e7b5f04c]
:原因:|/var/lib/dpkg/status が壊れた事で debconf の install 状態が
不明になったため

:対処:| /var/lib/dpkg/status を別の場所から取ってくる
+/var/lib/dpkg/status-old
+/var/backups/dpkg.status.*
+他のマシンから持ってくる

参考:~
http://lists.debian.or.jp/debian-users/200404/msg00132.html

**recommends なパッケージも一緒にインストールしたい [#g9c4f058]
[[aptitude>http://packages.qa.debian.org/a/aptitude.html]] を使えば recommends なパッケージも一緒にインストールされます。
 # aptitude install (パッケージ名)

インストールして欲しくない場合は
 # aptitude -R install (パッケージ名)

設定は aptitude をフルスクリーンモードで起動して
 # aptitude
F10 → Options → Dependency handling で。

**/var/cache/apt/available が頻繁に壊れるんだけど [#e2e63fb0]
まずは [[memtest86>http://packages.qa.debian.org/m/memtest86.html]] 等でメモリチェックしてみましょう。
grub などのブートローダから起動する事もできます。

参考:~
http://lists.debian.or.jp/debian-users/200408/msg00098.html

まさかディスクが不良ブロックだらけって事はないよね?
 # badblocks -v /dev/hda1

ext2/ext3 なら該当パーテョションをマウントしていない状態で
 # e2fsck -cf /dev/hda1
すればファイルシステムが不良ブロックを使う事を回避できる。

Reiserfs なら [[Bad block handling in ReiserFS>http://namesys.com/bad-block-handling.html]] を参照。
XFS, JFS な人は不良ブロックを回避できないっぽい。

**apt-get でセグメンテーション違反が出た [#v04606bb]
 # mv /var/cache/apt/pkgcache.bin /var/cache/apt/pkgcache.bin.bak
 # mv /var/cache/apt/srcpkgcache.bin /var/cache/apt/srcpkgcache.bin.bak
してから、apt-get update してみると回避できるかもしれません。~
上記で駄目なら以下も試してみてください。~
 dpkg --configure -a 

**「壊れているか、完全にインストールされていません」というエラーが出る [#w0a06861]
パッケージの状態がおかしくなっているのかもしれません。
 # apt-get install -f
や
 # dpkg --configure -a
でほとんどの場合はシステムを修復できます。
失敗した場合「どのパッケージが原因となって失敗したか」というメッセー
ジが出力されるので、それを元に手作業で修復しましょう。

-そのパッケージを再インストールしてみる
-そのパッケージを削除して再インストールしてみる
-そのパッケージの maintainer scripts を調べてみる

参考:~
http://lists.debian.or.jp/debian-users/200409/msg00086.html

** apt の "-f" オプションでも問題が解決しないとき [#if72e0b3]
下記のようなエラーメッセージが返ってくることがあります。

 −−−−−−−−−−省略−−−−−−−−−−
 dpkg: /var/cache/apt/archives/package-AAA*.deb の読み込みエラーです(--unpack):
 `*'を上書きしようとしています。これはパッケージ package-BBB にも含まれています。。
 dpkg-deb: サブプロセス paste がシグナル (パイプが切断されました) によって強制終了しました。
 以下のパッケージの処理中にエラーが発生しました:
 /var/cache/apt/archives/package-AAA*.deb
 E: Sub-process /usr/bin/dpkg returned an error code (1)

恐らく package-AAA に package-BBB を Replaces するよう指定されていない事が原因で、メンテナのパッケージングミスです。
軽度な場合は再度 upgrade を実行すれば回避できるかもしれません。

駄目な場合は package-BBB を削除すれば回避できるかもしれませんし、余計にややこしい状態になるかもしれません。
急ぎでなければ BTS に投げて修正されるのを待ちましょう。

**build 時に要求される Build-Dep を検索したい [#v2b2a952]
[[grep-dctrl>http://packages.qa.debian.org/g/grep-dctrl.html]] に含まれている grep-available コマンドを利用してみては。
 $ grep-available -s Package -F Build-Depends (パッケージ名) /var/lib/apt/lists/(update で取得したデータ)

参考:~
http://lists.debian.or.jp/debian-users/200501/msg00201.html

**パッケージインストール時に GPG error が出る [#wc9510fd]

参照:~
http://kmuto.jp/d/index.cgi/debian/apt-secure.htm~
http://www.netfort.gr.jp/~dancer/diary/200601.html.ja#2006-Jan-9-10:49:42

etch 以降ではパッケージの改竄を防止するため [[secure apt>http://wiki.debian.org/SecureApt]] というシステムが導入されています。

これは [[GNU Privacy Guard>http://www.gnupg.org/]] の公開鍵暗号処理を利用している
ため、[[gnupg>http://packages.qa.debian.org/g/gnupg.html]] パッケージをインストールする必要があります。

>W: GPG error: http://ftp.jp.debian.org unstable Release: Could not execute /usr/bin/gpgv to verify signature (is gnupg installed?)

[[gnupg>http://packages.qa.debian.org/g/gnupg.html]] は入ってますか?
入ってなければ入れましょう。
 # aptitude install gnupg

>W: GPG error: http://ftp.jp.debian.org unstable Release: Couldn't access keyring: No such file or directory

/etc/apt/trusted.gpg はありますか?
なければ手動でコピーしてください。
 # cp /usr/share/apt/debian-archive.gpg /etc/apt/trusted.gpg

>W: GPG error: http://ftp.jp.debian.org unstable Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F1D53D8C4F368D5D

公式アーカイブのための公開鍵は一年で失効するため、毎年公開鍵を更新する必要があります。~
これは [[ftp-master>http://ftp-master.debian.org/]] の "Archive signing key" にあります。~
例えば、2006 年のものは、

>http://ftp-master.debian.org/ziyi_key_2006.asc

です。導入方法は、
 # wget http://ftp-master.debian.org/ziyi_key_2006.asc -O - | apt-key add -

apt パッケージにもこの鍵は含まれているので、
 # cp /usr/share/apt/debian-archive.gpg /etc/apt/trusted.gpg
としてもよいです。(新しい鍵が apt パッケージに反映されるのに少し時間がかかります。)

非公式の apt-line では上記のエラーが必ず出ます。~
非公式の apt-line の鍵を次のように導入してください。~
( sudo ではエラーが出るので、必ず su などで root になる事)
//(sudo ではエラーが出るので、必ず su などで root になる事)
 # gpg --keyserver (キーサーバ名) --recv-keys (キー ID)
 # gpg --armor --export (キー ID) | apt-key add -
例) キーサーバ名=wwwkeys.eu.pgp.net キー ID=1F41B907 (Christian Marillat)
 # gpg --keyserver wwwkeys.eu.pgp.net --recv-keys 1F41B907
 # gpg --armor --export 1F41B907 | apt-key add -
**あるパッケージがどの apt line からインストールされるのか知りたい [#f80378f0]

 $ apt-cache policy パッケージ名

**/etc/apt/sources.list を分割したい [#r800692f]
apt の バージョン 0.6.43 以降では、/etc/apt/sources.list と同じ書式の、"."で始まらず、
英数字と "_" "-" "." だけからなり、拡張子が "list" のファイルをディレクトリ /etc/apt/sources.list.d に配置すると、読み込んでくれます。~
これにより肥大化した sources.list を分割することができます。~
参照:~
http://arika.org/diary/20060220#p01


----


*パッケージの FAQ [#jde422e9]

**バグを発見したのでバグレポートを出したい [#pe15c6ae]
[[Debian にバグを報告する方法>http://www.jp.debian.org/Bugs/Reporting]]を読みましょう。~
英語が苦手でもエラーメッセージなどを添えて報告すれば多分伝わります。~
勇気を出して!

もちろん Debian 固有のバグではないと分かった場合は配布元の方へ報告しましょう。~
送る前に同じバグレポートがないかチェックするのを忘れずに。

**apt-line の proposed-updates って何? [#xf721935]

proposed-updates は、リリース後に行われた Fix が取り込まれたパッケージを置く所で、次のリリース時には本体に取り込まれる。~
ちなみに、この「リリース」ってのはメジャーリリースじゃなくてマイナーリリースのことで、
3.1r0 とかの r0 部分がアップするまでの暫定置き場というわけ。

この proposed-updates は Debian の正式リリースではありませんので、一般のユーザーは
取り込まない方が良いでしょう。最新のニュース 
[[Debian Security Support in Place, July 8th, 2005>http://www.jp.debian.org/News/2005/20050708]] 
では、そのことで警告が行われました。

**古いパッケージを入れたい [#lf2e96ee]

-アップグレードしたら新しいパッケージがうまく動かない
-少し前のバージョンのパッケージに戻したいけど /var/cache/apt/archives にパッケージが見あたらない

そんな経験はありませんか?そんなあなたに、スナップショットデビアンネット!

オフィシャルで過去に提供されていた古いバージョンのパッケージが置かれています。
ローカル (/var/cache/apt/archives) にキャッシュが残っていない場合などは、ここから古いバージョンのパッケージが入手できます。
使い方は http://snapshot.debian.net/ を参照。

//上記に置かれているものより古いパッケージはこちら
//>http://hikaru.fsij.org/

ここで貴方のお望みのパッケージがきっと見つかるはずです。

**Debian では i586 や i686 などに最適化されたパッケージは提供されないの? &aname(optimize); [#b9c5b37b]
kernel-image や glibc などの一部を除いて本家では提供される予定はありません。
自分で rebuild しましょう。
pentium-builder をインストールして
 $ export DEBIAN_BUILDARCH=i586
などとしておけばパッケージングするときに -mcpu=i586 -march=i586 でコンパイルしてくれます。
こうしてできあがったパッケージは hogehoge_i386.deb ですが、ちゃんと i586 に最適化されています。
また ix86 だけでなく DEBIAN_BUILDARCH=athlon なども指定できます。
大量に rebuild したい場合は apt-build や apt-src などを使うと便利です。
ソースをダウンロード、パッケージング、インストールという一連の作業を自動でやってくれます。
また [[ccache>http://packages.qa.debian.org/c/ccache.html]] や [[distcc>http://packages.qa.debian.org/d/distcc.html]] などをうまく使えばコンパイル時間も短縮できます。

参考~
http://julien.danjou.info/article-apt-build.html

**パッケージに自分で修正を加えたい &aname(customize); [#fb75a0fe]
例:xsnow 1.42-1

apt-line に deb-src がなければ追記して
 # apt-get update
パッケージの build に必要なものをインストール
 # apt-get install build-essential devscripts
 # apt-get build-dep xsnow
作業するディレクトリに xsnow のソースをダウンロード
 $ cd (作業するディレクトリ)
 $ apt-get source xsnow
あらかじめローカルに .tar.gz .diff .dsc を用意している場合は
 $ dpkg-source -x xsnow-1.42-1.dsc
そして好きなように修正を加えます。

修正作業が終わったら、変更点を changelog に書く
 $ cd xsnow-1.42
 $ dch -n
そしてパッケージの build
 $ debuild -us -uc
無事に build できたら、パッケージをインストール
 # dpkg -i ../xsnow_1.42-1.1_*.deb

すべてのパッケージが対応している訳じゃないですが、環境変数 DEB_BUILD_OPTIONS に指定する事で以下のような操作ができます。
-nostrip : バイナリを strip しない
-debug : -g オプションをつけてビルド
-noopt : -O0 オプションでビルド

man dh_strip も参照してみてください。

なお、特定のアーキテクチャ向けに最適化したい場合は、
[[Debian では i586 や i686 などに最適化されたパッケージは提供されないの?>#optimize]]を参考のこと。

**自作パッケージを作りたい &aname(SelfMadePackage); [#n8109a54]
ほとんどが自動化ツールで生成可能なので、本家マージや配布を考えなければ簡単につくれます。~
大抵のソフトウェアは普通にコンパイルする手間とさほど変わらないかと。

とりあえず以下をインストール
-[[build-essential>http://packages.qa.debian.org/b/build-essential.html]]
-[[devscripts>http://packages.qa.debian.org/d/devscript.html]]
-[[dh-make>http://packages.qa.debian.org/d/dh-make.html]]
-[[lintian>http://lintian.debian.org/]] もしくは [[linda>http://packages.qa.debian.org/l/linda.html]]
-[[fakeroot>http://packages.qa.debian.org/f/fakeroot.html]]

配布を考えているなら以下もインストール
-[[gnupg>http://packages.qa.debian.org/g/gnupg.html]]

とりあえず目的のモノが正常にコンパイルできる環境である事が前提です。
配布を考えているなら自分の名前やメールアドレスを指定しておきましょう。
 $ export DEBEMAIL="hoge@foge.ne.jp"
 $ export DEBFULLNAME="hoge fuge"
また gnupg など署名をつける場合にはあらかじめ鍵を作っておく必要があります。

まず作業したいディレクトリで tarball を展開します。
 $ tar xvfz hoge-0.1.tar.gz
展開したソースディレクトリに移動。
 $ cd hoge-0.1
次は hoge-0.1/debian の雛型をスクリプトによって自動で生成します。
 $ dh_make
ここで作成するパッケージの種類を聞かれますが、適当に答えましょう。
-s : 1つのパッケージとして作成
-m : 複数のパッケージに分割して作成
-l : ライブラリのパッケージとして作成
-k : カーネルモジュールのパッケージとして作成
-b : [[cdbs>http://packages.qa.debian.org/c/cdbs.html]] ベースのパッケージとして作成 (dh-make >= 0.40)

このままだとパッケージに関する情報のほとんどが空ですが、このままでもパッケージは作成できます。
でも配布を考えているなら最低限、ライセンスや依存関係等々を debian/ 下にある各種ファイルに書き込みましょう。
-control : パッケージの情報や依存関係等を記述
-copyright : ソフトウェアのライセンスや Upstream に関する情報を記述

記述の仕方は既存のパッケージを参考にするといいでしょう。
また *.ex というファイルが沢山ありますが、それらは高度なパッケージを作る場合に使用するファイルの雛形です。
使わなければ削除してしまっても問題ありません。
以上でパッケージ作成のための最低限の準備は整ったので、パッケージを構築します。
 $ debuild
lintian もしくは linda が [[debian ポリシー>http://www.jp.debian.org/doc/debian-policy/]]に適合しているかチェックしてくれるので、表示された結果を元にエラー箇所を潰していけます。エラーの詳細を調べたいときは、
 $ lintian -i hoge_0.1-1_arch.changes
するといいでしょう。~
致命的な問題がなければ一つ上のディレクトリに hoge_0.1-1_arch.deb が生成されてます。
が、中身が意図してる状態になっているか確認しときましょう
 $ dpkg -c ../hoge_0.1-1_arch.deb
問題なければ Let's install!
 # dpkg -i ../hoge_0.1-1_arch.deb

新たにパッチなどを当てたのでリビジョンを上げたい。
そんな場合にはソースディレクトリで
 $ dch -i
changelog の編集を要求されるので、変更点などを書き込んで
 $ debuild
とすれば hoge_0.1-2_arch.deb が作れます。
[[dpatch>http://packages.qa.debian.org/d/dpatch.html]] などのパッチ管理ツールも用意されてるので利用しましょう。

hoge のバージョンが 0.1 から 0.2 に上がり、パッケージでもそれを追いかけたい。~
そんな場合には hoge-0.1 のあるディレクトリに hoge-0.2.tar.gz を置き
 $ cd hoge-0.1
 $ uupdate -v 0.2 ../hoge-0.2.tar.gz
 $ cd ../hoge-0.2
 $ debuild
で hoge_0.2-1_arch.deb が作れます。

//超テキトウなので誰か直して。
'''詳しくは以下を参考に、というか読め。'''

-[[Debian パッケージの作り方>http://www.ep.sci.hokudai.ac.jp/~epnetfan/zagaku/2000/1006/deb-make.html]]
-[[Debian 新メンテナガイド>http://www.jp.debian.org/doc/manuals/maint-guide/]]
-[[Debian パッケージの作り方 (ムトゥ神 lc2000 プレゼン版)>http://www.topstudio.co.jp/~kmuto/debian/event/lc2000f/]]
-[[Introduction to Debian packaging (ムトゥ神 ttyrec - かなり長いので注意)>http://namazu.org/~satoru/tty/]]
-[[Debian Linuxパッケージを作成する (IBM:dW)>http://www.ibm.com/jp/developerworks/linux/031003/j_l-debpkg.html]]
-[[dpatchの利用方法>http://www.netfort.gr.jp/~dancer/column/dpatch.html.ja]]
-[[Lintian report, sorted by tags>http://lintian.debian.org/reports/tags.html]]
//-[[Debian パッケージを Subversionで管理する>http://bozu.sytes.net/~tyuyu/debian/doc/svn-buildpackage/HOWTO/]]
-[[CDBS Documentation>https://perso.duckcorp.org/duck/cdbs-doc/cdbs-doc.xhtml]]
-[[CDBS 移行への 1st step>http://sugi.nemui.org/doc/cdbs/cdbs-trans-1st.html]]
//CDBS の使い方についての暫定メモ
//
//dh-make で cdbs 向けの雛形を生成する事ができる
// $ dh_make --cdbs
//
///usr/share/cdbs/1/rules/tarball.mk
//DEB_TAR_SRCDIR
//DEB_AUTO_CLEANUP_RCS
//
///usr/share/cdbs/1/class/autotools.mk
//DEB_CONFIGURE_EXTRA_FLAGS
//COMMON_CONFIGURE_FLAGS
//DEB_CONFIGURE_SCRIPT_ENV
//DEB_AUTO_UPDATE_LIBTOOL
//DEB_AUTO_UPDATE_AUTOCONF
//DEB_AUTO_UPDATE_AUTOMAKE
//
///usr/share/cdbs/1/rules/debhelper.mk
//
///usr/share/cdbs/1/rules/simple-patchsys.mk
//DEB_PATCHDIRS
//
///usr/share/cdbs/1/rules/dpatch.mk

'''書籍'''

-[[[入門] Debian パッケージ>http://www.gihyo.co.jp/books/syoseki.php/4-7741-2768-X]]

**deb パッケージと rpm などの他のパッケージとの違いが知りたい [#t0bbc3de]
[[Linux/UNIX バイナリパッケージ形式の比較>PkgComp]] ([[原文>http://www.kitenet.net/~joey/pkg-comp/]])という素敵なドキュメントがあります。

**unstable から testing にパッケージがなかなか降りてこないんだけど [#s4de6336]
通常は RC bug がなければ urgency=low の場合で 10 日ほどで testing に入る。
しかし他のパッケージに依存している場合、依存先のパッケージも testing に入ってないと降りてこない。
なので glibc などで RC bug が見つかったりするとほぼ更新が止まる。
どのパッケージがどんな理由で降りてこないのかは [[Why is package X not in testing yet?>http://bjorn.haxx.se/debian/]] で検索できます。

また [[devscripts>http://packages.qa.debian.org/d/devscripts.html]] に同梱されている grep-excuses でも同じような情報が取り出せます。
 $ grep-excuses (パッケージ名)
//参考: http://kmuto.jp/d/?date=20050104#p10

**パッケージのバグをチェックしたい [#ec41471e]
[[reportbug>http://packages.qa.debian.org/r/reportbug.html]] パッケージに含まれる querybts コマンドを使うと、BTS をチェックできます。使い方は、
 $ querybts (パッケージ名)
を実行してください。

**udeb ってなに? [#r858ca72]
インストーラなどに使われる、ドキュメントなどが省略されたパッケージ。~
普通の deb と udeb はファイル形式の観点から見れば同じもの。
udeb パッケージは kernel-wedge でつくれます。

**パッケージ化の要望を出したい [#s7284e86]
本当にオフィシャルパッケージが存在していないかチェック。
その上で [[BTS の wnpp package>http://bugs.debian.org/wnpp]] をチェック。
BTS の wnpp packageとは開発者の助けを必要としているすべてのパッケージの情報を扱うための BTS 上だけの擬似パッケージ名です。
ITP とあればすでに誰かがパッケージ化の宣言をしています。
ITP したまま放置されていなければ、その内パッケージ化されるでしょう。
RFP とあればすでにパッケージ化の要望が出ています。
もし RFP もなければ、あなたが RFP を出して誰かが作ってくれるのを待ちましょう。
詳しくは[[作業が望まれるパッケージ>http://www.jp.debian.org/devel/wnpp/]]参照。

もちろんあなたが作ってもかまいません。 
ITP を宣言して[[パッケージを作って>http://www.jp.debian.org/doc/maint-guide/]]下さい。
その時は wnpp package に対する [[bug report>http://www.jp.debian.org/Bugs/Reporting]] という形で出します。~

当然再配布禁止のソフトウェアや商用ソフトウェアは入りません。
また既に公式パッケージがあるソフトウェアにパッチを当てただけのようなものも入りません。
[[パッケージ化することができないソフトウェア>http://www.jp.debian.org/devel/wnpp/unable-to-package]]も見ておきましょう。

**パッケージがなかなか更新されないんだけど [#vb0f4b3c]
主な原因として
-ソフトウェア側に大きな変更や致命的なバグがあった。
-パッケージングに大幅な変更を加える予定。
-サポートしているアーキテクチャで build できなかった。
-メンテナが忙しくて更新作業をする暇がない。
-新しいメンテナを募集中。

**Experimental ってなに? [#jc9da85a]
リスクが大きく、unstable に入れる前に実験をしたいソフトウェアがあります。
>http://packages.debian.org/experimental/

使用するには以下の apt-line を追加
 deb http://近くのリングサーバ/archives/linux/debian/debian experimental main
 deb-src http://近くのリングサーバ/archives/linux/debian/debian experimental main

さらに -t オプションで experimental を明示する必要があり。

**削除したパッケージに関連したパッケージを削除したい。 [#m6d5d47b]

インストール時に [[aptitude>http://packages.qa.debian.org/a/aptitude.html]] を使いましょう。
依存関係で芋蔓式にインストールされたパッケージも一緒に削除できます。

もう遅い、という人は[[依存関係から孤立したパッケージを探すには>#orphan]]を読んで、手動で検索して削除しましょう。
そして次から aptitude を使うように。

**インストール済みのソフトウェアをパッケージに戻したい [#hf28dde4]
[[dpkg-repack>http://packages.qa.debian.org/d/dpkg-repack.html]] を使いましょう。
一度パッケージからインストールしたソフトウェアを、再びパッケージに戻してくれます。
またインストール後に設定ファイルの編集等をした場合、その変更点を受け継いだパッケージが生成されます。
 # dpkg-repack (パッケージ名)

**仮想パッケージやダミーパッケージってなに? [#a0d7e085]
仮想パッケージ (Virtual package) は実パッケージが存在しないパッケージのこと。
[[virtual section>http://packages.debian.org/unstable/virtual/]] に属します。
依存関係を柔軟に設定するために用意されているみたい。
-http://www.jp.debian.org/doc/FAQ/ch-pkg_basics.en.html#s-virtual
-http://www.jp.debian.org/doc/debian-policy/ch-binary.html#s-virtual_pkg
-http://www.jp.debian.org/doc/debian-policy/ch-relationships.html#s-virtual

ダミーパッケージ (メタパッケージ) は中身が Changelog や リンク提供のみの空パッケージのこと。
パッケージの分割等で変更された依存関係に互換性を持たせるため用意されたりします。
基本的には削除しても動作に問題は出ません。
**パッケージインストール時の質問がウザい [#f87eec27]
[[debconf>http://packages.qa.debian.org/d/debconf.html]] の質問に関する設定を変更しましょう。
 # dpkg-reconfigure debconf
例えば「低 (low)」 にすると用意されている質問をすべて表示します。
「高 (high」) にするとデフォルト選択肢が用意されていない質問のみ表示します。

**unstable から削除されたパッケージを知りたい [#u731b740]
以下を参照
>http://ftp-master.debian.org/removals.txt

削除された理由も一緒に書いてあります。~

//RSS Feed はこちら
//>http://newraff.debian.org/~joerg/removals/removals.rss

**testing から削除されたパッケージを知りたい [#v5130891]
以下を参照
>http://ftp-master.debian.org/testing/hints/vorlon

削除された理由も一緒に書いてあります。

**unstable に追加されたパッケージを知りたい [#n393f9a4]
以下を参照
>http://packages.debian.org/unstable/newpkg_main~
http://packages.debian.org/unstable/newpkg_contrib~
http://packages.debian.org/unstable/newpkg_non-free

**人気コンテストへの参加 [#gf6003d1]
[[Debian Popularity Contest>http://popcon.debian.org/]] でパッケージの利用状況等を集計しています。
この結果は Orphan されたパッケージを QA Team で保守するかどうか、インストール CD に含めるパッケージを決める時等に利用されます。
参加するには [[popularity-contest>http://packages.qa.debian.org/p/popularity-contest.html]] をインストールするだけです。
 # aptitude install popularity-contest

**MS Windows 上でパッケージを操作したい [#d72e8f52]
[[Undeb>http://www.crystalidea.com/]] というツールがあります。
[[Undeb>http://www.crystalidea.com/]] というツールがあります。~
deb ファイルの展開だけならば、[[7-Zip>http://www.7-zip.org/ja/]] などがあります。


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS