2011年(6)
分类: LINUX
2011-02-09 11:53:48
**************************************************************************************************************************************************************
apt系统使用一个数据库列表来记录系统已经安装了哪些软件,哪些没有安装,哪些软件可以通过apt系统自动安装 apt-get通过分析这个数据库来决定如何安装软件,应该经常运行
#apt-get update来更新此数据库
*******************************************************************************
安装软件包
# apt-get install 软件包名字
apt-get的参数
-h This help text.
-d Download only - do NOT install or unpack archives
-f Attempt to continue if the integrity check fails
-s No-act. Perform ordering simulation
-y Assume Yes to all queries and do not prompt
-u Show a list of upgraded packages as well
软件包会被下载到/var/cache/apt/archives 稍后进行安装如果一个软件包坏了,或者你只是想重新安装一个软件的最新版本 ,可以使用--reinstall参数,如
# apt-get --reinstall install gdm
在安装软件时,可以用apt-get install package/distribution或apt-get install package=version来指定软件的安装版本,如
# apt-get install nautilus/unstable
*******************************************************************************
移除软件包
apt-get remove package
# apt-get remove gnome-panel
这样就会移除gnome-panel以及对gnome-panel有依赖性的软件包,无法使用apt系统仅仅移除此软件,而保留对它有依赖性的软件包。
apt-get remove package并不能移除这些软件的配置文件
# apt-get --purge remove gnome-panel
就可以一块把他的配置文件移除
*******************************************************************************
升级软件包
apt-get upgrade
*******************************************************************************
升级到一个新的版本
# apt-get -u dist-upgrade
*******************************************************************************
移除无用的软件包
当安装软件时,软件包会被先下载到/var/cache/apt/archives/目录下,然后安装。这样这个目录所占空间会越来越大,幸运的是apt提供了相应的管理工具
apt-get clean删除/var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/目录下所有包(锁定的除外)。
apt-get autoclean仅删除不再能被下载的包
*******************************************************************************
如何维持一个混合的系统
鉴于testing版比unstable版本稳定,又比stable版本要新 ,很多人使用testing,可是有些人想运行某个软件的最新版,却又不愿把这个系统升级为unstable,即想使用一个混合的系统,那么可以这样做:
在 /etc/apt/apt.conf 加入:
APT::Default-Release "testing";
当要安装unstable软件时 加 -t 参数:
# apt-get -t unstable install packagename
注:不要忘记在/etc/apt/sources.list中加入相应的源
*******************************************************************************
从一个特定的debian版本升级软件
# apt-get install `apt-show-versions -u -b | grep unstable`
*******************************************************************************
如何在软件升级时避免特定软件不会被升级
如果你使用的bebian版本在2.2以上,仅仅需要修改/etc/apt/preferences 文件
格式非常简单:
Package:
Pin:
Priority:
例如我要保持gaim的0.58版本 只需加上:
Package: gaim
Pin: version 0.58*
统配符 * 指锁定以0.58开头的所有版本 这就是说即使存在0.58-1 或类似 也不会被安装
Priority(优先级)是可选项 默认 989
<0 此软件永不会被安装
0~100 软件不被安装,不是有效的版本
>100 此软件会被安装 即 如果有更新版本,软件会被升级
100~1000 软件不会被降级安装,例如:我安装的gaim 0.59 , 锁定gaim 0.58 ,优先级为999
那么0.58就不会被安装 ,如果要降级安装 则优先级许大于 1000
*******************************************************************************
获取软件信息
1.搜寻软件名
# apt-cache search gaim
软件信息
# apt-cache show gaim
如果已经安装,并且又有了新版本,那么都会显示,安装版本在后
获取更多信息
# apt-cache showpkg gaim
查询软件的依赖性
# apt-cache depends gaim
2.用dpkg查询软件名
根据某一个文件查询软件名
# dpkg -S stdio.h
3.询问式安装
# auto-apt run command
4.查询文件的归属
# apt-file search filename
就象dpkg -S 但可以查询,但可以查未安装软件包
也可以查询一个包所含文件
# apt-file list packagename
它会用到数据库所以要及时更新
# apt-file update
程序源文件
1.下载程序源码
# apt-get source packagename
这样就会下载三个文件 a .orig.tar.gz, a .dsc 和 a .diff.gz
下载后自动打包
# apt-get -b source packagename
2.编译软件
# apt-get build-dep gmc
下载所编译包的依赖程序
8.如何维持一个混合的系统
鉴于testing版unstable版本比稳定,又比stable版本要新 ,很多人使用testing,可是有些人想运行某个软件的最新版,却又不愿把这个系统升级为unstable,即想使用一个混合的系统,那么可以这样做:
在 /etc/apt/apt.conf 加入:
10.如何在软件升级时避免特定软件不会被升级
如果你使用的bebian版本在2.2以上,仅仅需要修改/etc/apt/preferences 文件
为什么我的debian没有 “/etc/apt/apt.conf”和 “/etc/apt/preferences”这两个文件呢? 我的好象是woody 3.0 (0.1)版的 怎么查看系统版本信息?
2.制作本地apt
# mkdir /root/debs
将自己收集的.deb包考入/root/debs目录
# dpkg-scanpackages debs| gzip > debs/Packages.gz
在/etc/apt/sources.listdeb 加入:
file:/root debs/
3.寻找速度最快的下载镜相:netselect, netselect-apt
安装netselect软件包
# apt-get install netselect
测试我使用的镜像
# netselect security.debian.org ftp.us.debian.org ftp.jp.debian.org non-us.debian.org people.debian.org gluck.debian.org
520 ftp.jp.debian.org
#
看到了我所使用的镜像中 ftp.jp.debian.org速度最快 得分为520 (得分越低越好)
你可以在这里查找debian的镜像列表
你也可以用netselect-apt下载列表
# ls sources.list
ls: sources.list: File or directory not found
# netselect-apt stable
(...)
# ls -l sources.list
sources.list
#
前提是你已经安装并运行了'wget'包
4.把CD-ROM加入到你的/etc/apt/sources.list文件
如果使用apt自动从CD-ROM上安装软件或升级系统,可以把它加入/etc/apt/sources.list文件
# apt-cdrom add
注: CD-ROM必须在/etc/fstab文件中已正确配置
www:~# dpkg --help
Usage:
dpkg -i|--install <.deb file name> ... | -R|--recursive
dpkg --unpack <.deb file name> ... | -R|--recursive
dpkg -A|--record-avail <.deb file name> ... | -R|--recursive
dpkg --configure
dpkg -r|--remove | -P|--purge
dpkg --get-selections [
dpkg --set-selections set package selections from stdin
dpkg --update-avail
dpkg --merge-avail
dpkg --clear-avail erase existing available info
dpkg --forget-old-unavail forget uninstalled unavailable pkgs
dpkg -s|--status
dpkg -p|--print-avail
dpkg -L|--listfiles
dpkg -l|--list [
dpkg -S|--search
dpkg -C|--audit check for broken package(s)
dpkg --print-architecture print target architecture (uses GCC)
dpkg --print-gnu-build-architecture print GNU version of target arch
dpkg --print-installation-architecture print host architecture (for inst'n)
dpkg --compare-versions
dpkg --help | --version show this help / version number
dpkg --force-help | -Dh|--debug=help help on forcing resp. debugging
dpkg --licence print copyright licensing terms
Use dpkg -b|--build|-c|--contents|-e|--control|-I|--info|-f|--field|
-x|--extract|-X|--vextract|--fsys-tarfile on archives (type dpkg-deb --help.)
For internal use: dpkg --assert-support-predepends | --predep-package |
--assert-working-epoch | --assert-long-filenames | --assert-multi-conrep
Options:
--admindir=
--root=
--instdir=
-O|--selected-only Skip packages not selected for install/upgrade
-E|--skip-same-version Skip packages whose same version is installed
-G|--refuse-downgrade Skip packages with earlier version than installed
-B|--auto-deconfigure Install even if it would break some other package
--no-debsig Do no try to verify package signatures
--no-act|--dry-run|--simulate
Just say what we would do - don't do it
-D|--debug=
--status-fd
--ignore-depends=
--force-... Override problems - see --force-help
--no-force-...|--refuse-... Stop when problems encountered
--abort-after
Comparison operators for --compare-versions are:
lt le eq ne ge gt (treat empty version as earlier than any version);
lt-nl le-nl ge-nl gt-nl (treat empty version as later than any version);
< << <= = >= >> > (only for compatibility with control file syntax).
Use `dselect' or 'aptitude' for user-friendly package management.
www:~# dselect --help
Usage: dselect [options]
dselect [options] action ...
Options: --admindir
--help --version --licence --expert --debug
--colour screenpart:[foreground],[background][:attr[+attr+..]]
Actions: access update select install config remove quit
Screenparts:
list listsel title infohead pkgstate pkgstatesel listhead query info infodesc infofoot helpscreen
Colours:
black red green yellow blue magenta cyan white
Attributes:
normal standout underline reverse blink bright dim bold
www:~#
Debian软件包管理
主要工具
dselect --- 使用菜单界面的软件包管理工具(最上层的包管理工具)
dpkg --- 安装软件包(管理软件包中的文件)
apt-get --- 安装软件包(管理软件包,CLI APT)
tasksel --- 安装任务套件(管理面向某方面任务的一套软件包)
aptitude --- 安装软件包(管理软件包和任务套件,ncurses APT)
deity --- 另一种ncurses APT
synaptic, gsynaptic --- 另一种GUI APT
它们不是同级的工具。`dselect'运行于APT(命令行命令是`apt-get')和`dpkg'之上。
APT使用`/var/lib/apt/lists/*'来跟踪可用的软件包,而`dpkg'使用的是`/var/lib/dpkg/available'。如果直接用`apt-get'或同类工具如`aptitude'等来安装软件包,千万别忘了更新`/var/lib/dpkg/available'文件,可以使用dselect的`[u]pdate'选项或在运行`dselect
update'、`tasksel'或`dpkg -l'前执行shell命令行“`dselect update'”。
在理关联软件包的方式上,`apt-get'会自动搜索下载_depends_类软件包,但不会理睬_recommends_和_suggests_类软件包,而`dselect'在软件包的选择方面采用菜单方式操作,对_depends_、_recommends_和_suggests_三类相关软件包均给出提示。`aptitude'则提供了选项下载安装所有_depends_、_recommends_和_suggests_类软件包。
方便的工具
apt-cache - 在本地缓冲区检查包文件
dpkg-reconfigure - 重新配置已安装的软件包(如果它是使用debconf进行配置的)
dpkg-source - 管理源码包
dpkg-buildpackage - 自动生成包文件
...
Debian软件包管理基础
地安装软件包称之为_task_,还可以使用软件包管理工具逐个地安装软件包或升级系统。
使用`tasksel'或`aptitude'进行_task_安装
`tasksel'是_Debian的任务安装器_,系统安装过程中它为用户提供了一种`简易'软件包选择方式。
如果你希望完装的某项常规功能包含了许多软件包,最好的办法就是使用它来安装。运行如下命令:
# dselect update
# tasksel
`aptitude'亦可访问_task_。用它不仅可以选择_tasks_还可以对_task_选项菜单中的软件包进行逐个取舍。
设置APT系统
使用`testing'发布版的用户,有时需要对系统进行有选择性地升级
首先,在`/etc/apt/sources.list'中添加`stable'、`testing'和`unstable'镜像源,接着编辑`/etc/apt/preferences',设置合适的Pin-Priority。
[1]
Package: *
Pin: release a=stable
Pin-Priority: 500
Package: *
Pin: release a=testing
Pin-Priority: 600
Package: *
Pin: release a=unstable
Pin-Priority: 50
[1] I kept the description around here as is to maintain consistency with
other parts. If you are really tracking `testing' or `unstable', you
should actually remove references to `stable' in
`/etc/apt/sources.list' and `/etc/apt/preferences'. This is because
`testing' starts as a copy of `stable'.
用 dselect代替apt:
`dselect'会自动选上所有“Required”、“Important”和“Standard”类软件包,在Potato系统中,某些大型应用程序如TeX和Emacs处于这些分类中,在初次安装系统时最好手工取消对它们的选择(输入“_”)。在Woody稳定版中,这些大型应用程序被移入“Optional”类软件包。
`dselect'的用户界面有点怪。有4个相似命令(注意是大写字母!):
Key-stroke Action
Q 退出。确认当前的选择然后退出。
(override dependencies)
R 恢复!我放弃我做出的选择
D 不管它!我不管dselect有什么建议,照我说的做!
U 照系统的建议做
使用`D'和`Q'可以选择有冲突的选项,你要自负风险,所以使用这些命令要小心。当前`dselect'是一款成熟的菜单驱动式工具,在对_suggests_和_recommends_类软件包的选择控制方面,它提供相当棒的微操作能力。
在`/etc/dpkg/dselect.cfg'中加上一行包含“expert”选项以减少干扰。对于速度慢的机器,请在其它速度快的机器上运行`dselect'选好软件包,然后用`apt-get
install'安装它们。
对于没有定义Pin-Priority的软件包,`dselect'不会访问它们。
使用 aptitude程序:
`aptitude'是一款新的菜单驱动式软件包安装工具,与`dselect'很相似。它亦可作为命令行工具`apt-get'的替代品。
`aptitude'可接受单字符命令,通常是小写字母。
Key-stroke Action
F10 菜单
? 键盘命令帮助
u 更新软件包信息
g 下载并安装选定的软件包
q 保存修改并退出当前屏幕
x 放弃修改并退出当前屏幕
Enter 浏览某软件包的相关信息
`aptitude'提供了选项可自动选取所有_depends_、_recommends_和_suggests_类软件包。可在`F10
-> Options -> Dependency handling'菜单中设置它。
通过`aptitude'可访问某软件包的所有版本。
apt-cache和apt-get命令
还是以上面使用`testing'发布版的用户为例,可使用下列命令管理系统:
* `apt-get -u upgrade'
跟踪`testing'发布版的更新情况,对系统上所有软件包进行升级并从`testing'处安装关联软件包。
* `apt-get -u dist-upgrade'
跟踪`testing'发布版的更新情况,对系统上所有软件包进行升级并从`testing'处重新分析关联关系并安装关联包。
* `apt-get -u dselect-upgrade'
跟踪`testing'发布版的更新情况,对系统上所有在`dselect'中选定了的软件包进行升级。
* `apt-get -u install
从`testing'处安装
* `apt-get -u install
从`unstable'处安装
* `apt-get -u install -t unstable
从`unstable'处安装
* `apt-cache policy
检查
* `apt-cache show
查看
* `apt-get install
安装
* `apt-get -u install
安装
* `apt-get remove
删除
* `apt-get remove --purge
删除
在上面的例子中用`-u'选项的作用是在实际升级之前将所有将要升级的软件包列出,并提示用户确认。下面的操作可将`-u'设置为默认行为:
$ cat >> /etc/apt/apt.conf << .
// Always show packages to be upgraded (-u)
APT::Get::Show-Upgraded "true";
.
使用`-s'可进行模拟升级,并不进行真正的升级行为。
跟踪某Debian发行版
根据个人的喜好,选择要跟踪的Debian发行版
`设置APT系统'的样例文件`/etc/apt/preferences':
track stable: 将testing的Pin-Priority改为50
track testing: 保持上面的设置不变
track testing(unstable): 将unstable的Pin-Priority改为500
track unstable(testing): 将unstable的Pin-Priority改为800
有关如何选定Pin-Priority的说明:在上表中,从上而下代表了某个版本
从上个版本刚刚发布之后到下一版进入冻结期之前这段时间经历的各个阶段。
请注意,跟踪`testing'发行版的Debian有一个负面影响,安全补丁的更新很慢。
请注意,如果将Debian各版本混合,例如将`testing'混入`stable'或将`unstable'混入`stable',这会造成众多关键软件包不自觉地从`testing'处或`unstable'处获得,结果引起许多麻烦。
如何对`/etc/apt/preferences'进行设置,将某些关键包锁定在成熟版本,而让其它非关键包跟踪不太成熟的新版本,可参考样例目录
()中的`preferences.testing'和`preferences.unstable'文件。另一方面,`preferences.stable'强制所有软件包降级到“stable”。
将所有软件包降级到`stable'
要将所有软件包降级到`stable',可按下面的方法编辑`/etc/apt/preferences':
Package: *
Pin: release a=stable
Pin-Priority: 1001
然后运行“`apt-get upgrade'”,由于Pin-priority >
1000而引起强制降级。注意,该操作可能会在关联性方面发生一点问题。
/etc/apt/preferences概述
`设置APT系统'中展示的`/etc/apt/preferences'样例文件里,首行`Package:
*'表示该段落指令作用于所有软件包。可以通过指定软件包名称来为某个特定的软件包设置指定的Pin-Priority。
接下来的一行是`Pin: release a=stable'表示`apt-get'从包含`Archive:
stable'节的`Release'文件所在的目录获得`Packages.gz'文件。
最后一行`Pin-Priority: 500'指定Pin-Priority为500。
如果多个软件包同名,系统通常会安装拥有最高Pin-Priority的软件包。
在此,Pin-Priority表示:
* 1001及以上:可降级优先级。
Pin-Priority处于该范围的软件包允许降级操作。
* 100到1000:标准优先级。
不允许降级。几个key Pin-Priority的值:
* 990:由`--target-release'或apt-get(8)`-t'选项设置的优先级。
* 500:所有默认软件包文件的优先级。
* 100:当前安装软件包文件的优先级。
* 0到99:非自动优先级。(仅用于软件包没有安装或没有别的可用版本时。)
* 小于0:决不选择该版本。
按下面的方法设置`/etc/apt/apt.conf'可获得与`--target-release'一样的效果:
# echo 'APT:efault-Release "testing";' >> /etc/apt/apt.conf
命令行选项`--target-release'和`/etc/apt/apt.conf'中的设置会顶替`/etc/apt/preferences'的设置。在玩`/etc/apt/preferences'的时候小心两者冲突。
检测程序错误寻求帮助
如你使用某个软件包出现问题,在寻求帮助或发送错误报告之前请确认查看过下列站点(`lynx'、`links'和`w3m'同样好用):
$ lynx
$ lynx
$ lynx
如有疑问,可阅读帮助文件。设置`CDPATH'如下:
export CDPATH=.:/usr/local:/usr/share/doc
然后输入
$ cd
$ pager README.Debian # if this exists
$ mc
APT升级错误及解决方法
从`unstable'/`testing'进行升级时可能出现第 5.3 节,
`升级Debian系统'中提到的软件包关联问题。多数情况下,是因为升级的软件包所需的新增的关联包没有安装。可使用如下方法解决:
# apt-get dist-upgrade
如果这招无效,可以重复下面的方法至到问题解决:
# apt-get upgrade -f # continue upgrade even after error
... 或
# apt-get dist-upgrade -f # continue dist-upgrade even after error
一些的确存在问题的升级脚本会引起持续出错。最好的解决方法是检查该软件包的安装脚本`/var/lib/dpkg/info/packagename.<{post-,pre-}{install,removal}>'然后运行:
# dpkg --configure -a # 配置所有未完成安装的软件包
如果脚本报告缺少配置文件,查看一下`/etc'中相关的配置文件。如果配置文件有`.new'扩展名(或其它类似的扩展名),去掉(`mv')它的扩展名。
从unstable/testing进行升级时可能出现软件包关联问题。可用这个方法智取:
# apt-get install -f
使用dpkg救助
如果系统的`dselect'(APT)受损无法完成安装,可使用`dpkg'来恢复:
# cd /var/cache/apt/archives
# dpkg -i libc6* libdb2* perl*
# dpkg -i apt* dpkg* debconf*
# dpkg -i * # 直至不再出错
如果软件包丢失,用下述方法从镜像源
()下载:
# mc # use "FTP link" pointing to Debian FTP server
现在,在HTTP/FTP服务器上,软件包的真正位置不再是传统的`/dist'目录而是新的`/pool'目录。
然后开始安装:
# dpkg -i /var/cache/apt/archives/
对于坏关联,可这样解决:
# dpkg --ignore-depends=
# dpkg --force-depends -i
# dpkg --force-depends --purge
# dpkg --force-confmiss -i
恢复软件包选择状态的数据
如果`/var/lib/dpkg/status'因为某种原因坏掉了,Debian系统将会完全丢失软件包选择状态的数据。赶快到`/var/lib/dpkg/status-old'或`/var/backups/dpkg.status.*'下找找旧的`/var/lib/dpkg/status'文件。
将`/var/backups/'放在其它的分区是个好习惯,因为该目录包含了许多非常重要的系统数据。
如果旧的`/var/lib/dpkg/status'文件也坏了,仍可以从`/usr/share/doc/'下的目录进行恢复这些信息。
# ls /usr/share/doc | \
grep -v [A-Z] | \
grep -v '^texmf$' | \
grep -v '^debian$' | \
awk '{print $1 " install"}' | \
dpkg --set-selections
# dselect --expert # reinstall system, de-select as needed
/var被删除后如何恢复系统
`/var'目录包含着定时更新的数据如mail,它们很容易遭破坏。将目录放到别的分区可降低风险,如果最坏的事情发生了,可以通过重建`/var'目录来挽救Debian系统。
从相同或旧版本的最简Debian系统中取得`/var'目录的内容框架,例如var.tar.gz
(~osamu/pub/...›®录,接着
# cd /
# mv var var-old # 如果剩有有用内容
# tar xvzf var.tar.gz # 使用Woody框架文件
# aptitude # 或用dselect
上述步骤可使系统恢复工作。
`恢复软件包选择状态的数据'中描述的技术加速软件包选择数据的恢复。
([FIXME]:该过程需要更多的实践来检验)
为无法启动的系统安装软件包
使用Debian急救软盘/CD或从多启动Linux系统其它分区启动。
`启动系统'.
将无法启动的系统挂载到`/target'并使用`dpkg'的chroot安装模式。
# dpkg --root /target -i
接下来就可以着手配置并解决问题。
如是只是由于`lilo'损坏而造系统无法启动,可使用标准Debian急救盘启动。假设你的root分区位于`/dev/hda12'且想使用runlevel
3,在启动提示符输入:
boot: rescue root=/dev/
这样,你就可以使用软盘中内核启动系统,新系统的功能基本齐全。(可能丢失某些内核特性或模块)
如果dpkg命令出错该怎么办
如果`dpkg'损坏就不能安装任何`.deb'文件。下面的操作可帮助你修复这种状况。(在第一行,你可将“links”替换成你喜欢的浏览器。)
$ links
... 下载完好的dpkg_
$ su
password: *****
# ar x dpkg_
# mv data.tar.gz /data.tar.gz
# cd /
# tar xzfv data.tar.gz
对`i386',亦可用`'作为URL。
文件信息
查找特定文件所属的软件包:
$ dpkg {-S|--search} pattern # search for pattern in installed packages
$ wget
$ zgrep -e pattern
# find filename-pattern of files in the debian archive
或使用专门的软件包命令:
# apt-get install dlocate
# conflicts with slocate (secure version of locate)
$ dlocate
...
# apt-get install auto-apt # on-demand package installation tool
# auto-apt update # create db file for auto-apt
$ auto-apt search
# search for pattern in all packages, installed or not
软件包信息
搜索并显示包文件的信息。编辑`/etc/apt/sources.list',让APT指向正确的包文件。如果想了解testing/unstable中的相应软件包与当前系统安装的软件包有何差别,使用`apt-cache
policy'---更好。
# apt-get check # 更新缓冲区并检查损坏的软件包
$ apt-cache search
$ apt-cache policy
$ apt-cache show -a
$ apt-cache showsrc
$ apt-cache showpkg
# dpkg --audit|-C # 搜索未完成安装的软件包
$ dpkg {-s|--status}
$ dpkg -l
$ dpkg -L
如果是Woody发布版没有为`apt-cache showsrc'建档,但该命令可用
你也这可这样查看软件包信息(我用`mc'浏览):
/var/lib/apt/lists/*
/var/lib/dpkg/available
比较下面的文件可以确切了解最近的安装过程对系统造成了那些改变。
/var/lib/dpkg/status
/var/backups/dpkg.status*
使用APT进行全自动系统安装
进行全自动安装,要在`/etc/apt/apt.conf'中加上一行:
Dpkg::Options {"--force-confold";}
另一种等阶的方法是运行`apt-get -q -y
安装完毕以后重新配置已安装软件包'中的方法配置特定的软件包。
重新配置已安装软件包
使用下列方法重新配置已安装软件包。
# dpkg-reconfigure --priority=
# dpkg-reconfigure --all # 重新配置所有的软件包
# dpkg-reconfigure locales # 生成别的locales
# dpkg-reconfigure --p=
如果你想永久改变`debconf'对话框模式,可这么做。
某些程序用于生成特殊的配置脚本。
apt-setup - 创建/etc/apt/sources.list
install-mbr - 安装主引导(Master Boot Record)管理器
tzconfig - 设定本地时间
gpmconfig - 设置gpm鼠标daemon
sambaconfig - 在Potato中配置Samba(Woody使用debconf来配置)
eximconfig - 配置Exim (MTA)
texconfig - 配置teTeX
apacheconfig - 配置Apache (httpd)
cvsconfig - 配置CVS
sndconfig - 配置声音系统
...
update-alternatives - 设定默认启动命令,例如设定vi启动vim
update-rc.d - System-V init脚本管理工具
update-menus - Debian菜单系统
...
删除软件包
删除软件包但保留其配置文件:
# apt-get remove
# dpkg --remove
删除软件包并删除配置文件:
# apt-get remove --purge
# dpkg --purge
阻止旧软件包升级
举个例子,要阻止`libc6'和`libc6-dev'通过`dselect'或使用`apt-get -u
upgrade
# echo -e "libc6 hold\nlibc6-dev hold" | dpkg --set-selections
这种方法不影响`apt-get -u install
-u upgrade
dist-upgrade'命令对软件包执行的强制自动降级行为,可在`/etc/apt/preferences'中加上:
Package: libc6
Pin: release a=stable
Pin-Priority: 2000
这里“`Package:'”后不能使用通配符如“`libc6*'”,如果要保持所有与`glibc'源码包相关的二进制包的版本同步,可以明确的列出它们。
该命令可以显示处于“阻止”状态的软件包:
dpkg --get-selections "*"|grep -e "hold$"
stable/testing/unstable混合系统
`apt-show-versions'可以列出发行版中可用软件包的版本。
$ apt-show-versions | fgrep /testing | wc
... 你有多少testing软件包
$ apt-show-versions -u
... 列出可升级的软件包
$ apt-get install `apt-show-versions -u -b | fgrep /unstable`
... 将所有unstable软件包升级到最新版本
删除缓存包文件
使用APT安装软件包会在`/var/cache/apt/archives'目录留下缓存文件,要清除这些文件可使用:
# apt-get autoclean # removes only useless package files
# apt-get clean # removes all cached package files
记录/拷贝系统配置
对软件包选择情况进行本地备份:
$ dpkg --get-selections "*" >
`“*”'使`
你可将这个文件发送到另一台电脑并在那儿按文件中的选择进行软件包安装。
# dselect update
# dpkg --set-selections <
# apt-get -u dselect-upgrade #
stable系统引入软件包
对stable系统进行部分升级,在软件运行环境中重新编译源码的确是个诱人的想法,这样可以避免由于关联关系不得不对大量软件包升级。首先,将下列镜像源加入
/etc/apt/sources.list:(以下是美国的Debian源)
deb-src testing \
main contrib non-free
deb-src testing/non-US \
main contrib non-free
deb-src unstable \
main contrib non-free
deb-src unstable/non-US \
main contrib non-free
由于屏幕输出的限制,上述每条`deb-src'命令均分成了2行,实际上在`sources.list'中它们均为单行。
然后下载源码并在本地生成软件包:
$ apt-get source
$ dpkg-source -x
$ cd
... 查找需要的软件包(编译所需的关联包列在.dsc文件中)并安装它们,
你还需要“fakerroot”软件包。
$ dpkg-buildpackage -rfakeroot
...or (no sig)
$ dpkg-buildpackage -rfakeroot -us -uc # use "debsign" later if needed
...Then to install
$ su -c "dpkg -i
通常,需要安装一些带“-dev”后缀的软件包以满足关联关系。`debsign'在`devscripts'软件包中。`auto-apt'可以轻松解决这些关联问题。请使用`fakeroot',如是没有必要,就别使用root帐号。
在Woody中,这些关联问题已被简化。例如,编译`pine'源码包:
# apt-get build-dep pine
# apt-get source -b pine
安装系统时输入以下安装2.6的内核
回车前输入linux26
vi /etc/apt/sources.list
增加以下内容:(deb 二进制程序包 deb-src 原代码程序包)
deb stable main contrib non-free
deb-src stable main contrib non-free
apt-get update(注,此命令是每次修改sources.list以后都要运行地)
安装ssh远程加密登陆软件
apt-get install ssh
apt-get install apt-spy
www:~# apt-spy
Usage: apt-spy [options]
options:
-d distribution Debian distribution (ie, stable). Required unless updating.
-a area Area to benchmark. (eg, Europe).
-c config Configuration file to use.
-e number Number of servers to benchmark before exiting.
-f file File to grab when benchmarking. (relative to Debian base).
-i file Specify input file. For use with the -w option.
-m mirror-list Mirror list to use, or mirror-list to update when updating.
-o output-file Where to put output.
-p proxy Proxy server to use. In format
-s country_list List of countries to benchmark. Cannot be used with -a.
-t time Time to benchmark each server for. An approximate value only.
-u update-URL URL to grab mirror-list from when updating.
-w file Output top servers (5 by default) to file for use with -i.
-n number Specifies number of top servers to output with -w.
-v Output a version number.
-h Display this message.
update Update the mirror list.
apt-spy -d stable -a Asia //在亚洲寻找最快的镜像
apt-get update
并运行 apt-get upgrade -u,完成系统的更新
apt-get install kernel-image-2.6-686
介绍一个apt系统的小技巧
--------------------------------------------------------------------------------
你想找个软件包大概叫foo什么,于是apt-cache search foo,哇,一屏幕,不光名字,连软件包描述里带有关键字的都被搜出来了。你说,我知道,要加参数--names-only,可是每次敲这个也很麻烦。
你打apt-get upgrade,列出了一大堆要升级的软件包,可是到底升级到什么版本呢,系统默认设置没有告诉你。
你像我一样有洁癖,删除软件总喜欢purge,每次手写--purge参数,不是轻松的事情 :(
怎么办?
其实很简单,apt系统有个统一的配置文件:/etc/apt/apt.conf (若没有手动建立一个),把自己喜欢的规则写进去即可。
以下是小弟的设置,其意不言自明,更多参数,可以参见apt-*的man pages
APT::Default-Release "testing";
APT::Get::Show-Upgraded "true";
APT::Get::Purge "true";
APT::Get::Show-Versions "true";
APT::Cache::NamesOnly "true";
如何从源代码生成deb包?
--------------------------------------------------------------------------------
如果下载的源代码中有debian目录,其中包含了版本控制和编译规则rules,那么你可以把它编译生成一个deb进行安装,这样比较方便。便于将来卸载和重新安装。
首先下载debhelper,debmake和fakeroot:
apt-get install debhelper debmake fakeroot
然后,在源代码顶层目录下,做:
./configure
fakeroot debian/rules binary
对于mplayer和lame来讲,都可以作成deb包的。