Debian软件包操作备忘录

Debian软件包相关操作的备忘录。

公式包搜尋

Debian — パッケージ

最新ディストリビューションのパッケージの情報を探したいとき

Debian — Debian パッケージ検索

古いディストリビューションのパッケージの情報を探したいとき

软件包的安装目录

使用apt-get/aptitude安装的软件包的安装路径可以通过执行dpkg -L 命令找到。

查找包含命令的软件包

当你想要查找包含那个命令的Debian软件包时,如何进行调查。

执行dpkg -S <二进制文件路径>命令。

从mand dpkg中提取了关于-S选项的说明。

              -S, --search filename-search-pattern...
                  Search for a filename from installed packages.

以下是一个例子。

问:dpkg-buildpackage命令包含在哪个软件包中?

$ type dpkg-buildpackage
dpkg-buildpackage is /usr/bin/dpkg-buildpackage
$ dpkg -S /usr/bin/dpkg-buildpackage
dpkg-dev: /usr/bin/dpkg-buildpackage

A: dpkg-buildpackage命令包含在dpkg-dev软件包中。

获取软件包

代码库设置

apt-get/aptitude的初始设置。
针对每个Debian版本的/etc/apt/sources.list的模板填写。
填写后执行apt-get update。

请引用/参照

Debian 8 (jessie) 内容归纳如下:

deb http://ftp.jp.debian.org/debian jessie main contrib non-fre

deb http://security.debian.org/ jessie/updates main contrib non-free

deb-src http://ftp.jp.debian.org/debian jessie main contrib non-free

Debian 7 (Wheezy) – Debian 7(Wheezy)

deb http://ftp.jp.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.jp.debian.org/debian/ wheezy main contrib non-free

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free

deb http://ftp.jp.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.jp.debian.org/debian/ wheezy-updates main contrib non-free

Debian 6 (Squeeze) -> Debian 6(挤压版)

deb http://ftp.jp.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.jp.debian.org/debian/ squeeze main contrib non-free

deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.jp.debian.org/debian/ squeeze-updates main contrib non-free
deb-src http://ftp.jp.debian.org/debian/ squeeze-updates main contrib non-free

Debian 5(Lenny)

deb http://archive.debian.org/debian/ lenny main contrib non-free
deb-src http://archive.debian.org/debian/ lenny main contrib non-free

获取源代码包

执行apt-get source 。

$ apt-get source dpkg
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
注意: 'dpkg' パッケージは以下の場所の 'Git' バージョン制御システムで保守されています:
git://anonscm.debian.org/dpkg/dpkg.git
4,413 kB のソースアーカイブを取得する必要があります。
取得:1 http://security.debian.org/ jessie/updates/main dpkg 1.17.26 (dsc) [2,018 B]
取得:2 http://security.debian.org/ jessie/updates/main dpkg 1.17.26 (tar) [4,411 kB]
4,413 kB を 10秒 で取得しました (406 kB/s)
dpkg-source: info: extracting dpkg in dpkg-1.17.26
dpkg-source: info: unpacking dpkg_1.17.26.tar.xz
$ ls
dpkg-1.17.26  dpkg_1.17.26.dsc  dpkg_1.17.26.tar.xz
$

故障排除 (gù chú)

密钥资源

现象

当执行apt-get时,会显示以下消息:gpgv:密钥块资源’/home/<用户名>/.gnupg/trustedkeys.gpg’:文件打开错误。

$ apt-get source dpkg
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
注意: 'dpkg' パッケージは以下の場所の 'Git' バージョン制御システムで保守されています:
git://anonscm.debian.org/dpkg/dpkg.git
4,413 kB のソースアーカイブを取得する必要があります。
取得:1 http://security.debian.org/ jessie/updates/main dpkg 1.17.26 (dsc) [2,018 B]
取得:2 http://security.debian.org/ jessie/updates/main dpkg 1.17.26 (tar) [4,411 kB]
4,413 kB を 12秒 で取得しました (355 kB/s)
gpgv: keyblock resource `/home/toor/.gnupg/trustedkeys.gpg': ファイルのオープン・エラー
gpgv: 2015年11月26日 19時00分54秒 JSTにRSA鍵ID A4AE57A3で施された署名
gpgv: 署名を検査できません: 公開鍵が見つかりません
dpkg-source: warning: failed to verify signature on ./dpkg_1.17.26.dsc
dpkg-source: info: extracting dpkg in dpkg-1.17.26
dpkg-source: info: unpacking dpkg_1.17.26.tar.xz
$

防措施

安装debian-keyring软件包。

$ sudo aptitude install debian-keyring
以下の新規パッケージがインストールされます:
  debian-keyring
更新: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
52.4 M バイトのアーカイブを取得する必要があります。展開後に 58.0 M バイトのディスク領域が新たに消費されます。
取得: 1 http://ftp.jp.debian.org/debian/ jessie/main debian-keyring all 2015.04.10 [52.4 MB]
73% [1 debian-keyring 38.5 MB/52.4 MB 73%]                                                                                                                                      99.2 kB/s 2分 20秒

52.4 MB を 10分 2秒 秒で取得しました (86.9 kB/s)
以前に未選択のパッケージ debian-keyring を選択しています。
(データベースを読み込んでいます ... 現在 39128 個のファイルとディレクトリがインストールされています。)
.../debian-keyring_2015.04.10_all.deb を展開する準備をしています ...
debian-keyring (2015.04.10) を展開しています...
debian-keyring (2015.04.10) を設定しています ...

$

展示已安装的软件包列表

dpkg -l

查看软件包的依赖关系。

执行 apt-cache depends 。
以下是一个执行示例。

$ apt-cache depends auditd
auditd
  依存: lsb-base
 |依存: mawk
  依存: gawk
  依存: init-system-helpers
  依存: libaudit1
  依存: libauparse0
  依存: libc6
  依存: libgssapi-krb5-2
  依存: libkrb5-3
  依存: libwrap0
  提案: audispd-plugins
$

通过apt-cache showpkg可了解auditd。
以下是执行示例。

$ apt-cache showpkg auditd
Package: auditd
Versions:
1:1.7.18-1.1 (/var/lib/apt/lists/ftp.jp.debian.org_debian_dists_unstable_main_binary-amd64_Packages) (/var/lib/dpkg/status)
 Description Language:
                 File: /var/lib/apt/lists/ftp.jp.debian.org_debian_dists_unstable_main_binary-amd64_Packages
                  MD5: 77aaff86394a1a8da0659fa99413f455
 Description Language: en
                 File: /var/lib/apt/lists/ftp.jp.debian.org_debian_dists_unstable_main_i18n_Translation-en
                  MD5: 77aaff86394a1a8da0659fa99413f455


Reverse Depends:
  libvirt-bin,auditd
  audispd-plugins,auditd
Dependencies:
1:1.7.18-1.1 - lsb-base (2 3.0-6) libpam-runtime (2 1.0.1-6) libaudit0 (2 1.7.13) libc6 (2 2.7) libgssapi-krb5-2 (2 1.10+dfsg~) libkrb5-3 (2 1.6.dfsg.2) libwrap0 (2 7.6-4~) audispd-plugins (0 (null))
Provides:
1:1.7.18-1.1 -
Reverse Provides:

解决配置(resolvconf)软件包

最近,据说最佳实践是不直接编写名字解析配置文件/etc/resolv.conf,而是由resolvconf软件包来处理。

aptitude install resolvconf
allow-hotplug eth0
iface eth0 inet static
        address xxx.xxx.xxx.xxx
        network xxx.xxx.xxx.xxx
        netmask xxx.xxx.xxx.xxx
        gateway xxx.xxx.xxx.xxx
        dns-nameservers AAA.AAA.AAA.AAA BBB.BBB.BBB.BBB
        dns-search hoge.local

当执行网络重启时,resolvconf将自动修改/etc/resolv.conf。

$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver AAA.AAA.AAA.AAA
nameserver BBB.BBB.BBB.BBB
search hoge.local

首先的注意事项也会自动生成。

    • NetworkConfiguration – Debian Wiki

 

    ubuntu 12.04 で resolv.conf が書き換えられる – みちのぶのねぐら 工作室旧館

以带有调试符号的软件包创建

调试包 – Debian维基
http://wiki.debian.org/DebugPackage

在构建时保留调试符号信息的设置

export DEB_BUILD_OPTIONS="noopt nostrip"

noopt   # 最適化しない
nostrip # デバッグシンボルを消さない

※指定しても debian/rules で無視していると意味がない

debian/control 文件

在源代码包的下述位置添加描述

Package: auditd
Section: admin
Architecture: any
Depends: ${shlibs:Depends}, lsb-base (>= 3.0-6)
Description: User space tools for security auditing ---

Package: auditd-dbg ★追加
Architecture: any
Section: debug
Priority: extra
Depends: auditd (= ${binary:Version}), ${misc:Depends}
Description: debugging symbols for auditd

配置选项:debian/rules

configure: configure-stamp
configure-stamp: $(QUILT_STAMPFN)
        dh_testdir
        -test -r /usr/share/misc/config.sub && \
                cp -f /usr/share/misc/config.sub config.sub && \
                cp -f /usr/share/misc/config.sub system-config-audit/admin/config.sub
        -test -r /usr/share/misc/config.guess && \
                cp -f /usr/share/misc/config.guess config.guess && \
                cp -f /usr/share/misc/config.guess system-config-audit/admin/config.guess
        autoreconf -fv --install
        ./configure \
                --prefix=/usr \
                --sysconfdir=/etc \
                --sbindir=/sbin \
                --libdir='$${exec_prefix}'/lib \
                --libexecdir=/lib \
                --mandir=/usr/share/man \
                --enable-shared=audit \
                --with-apparmor \
                --with-prelude \
                --with-debug \  ★追加
                $(confflags)
        touch $@

gdb的输入

GDB调试备忘录 – しばそん笔记
http://d.hatena.ne.jp/shibason/20090624/1245840061

广告
将在 10 秒后关闭
bannerAds