Chinaunix首页 | 论坛 | 博客
  • 博客访问: 13999
  • 博文数量: 6
  • 博客积分: 170
  • 博客等级: 入伍新兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2005-01-19 23:30
文章分类
文章存档

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/distributionapt-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:

 

例如我要保持gaim0.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.如何维持一个混合的系统

鉴于testingunstable版本比稳定,又比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的镜像列表 http://www.debian.org/mirror/mirrors_full

你也可以用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               ... | -a|--pending

  dpkg -r|--remove | -P|--purge ... | -a|--pending

  dpkg --get-selections [ ...]    get list of selections to stdout

  dpkg --set-selections                    set package selections from stdin

  dpkg --update-avail       replace available packages info

  dpkg --merge-avail        merge with info from file

  dpkg --clear-avail                       erase existing available info

  dpkg --forget-old-unavail                forget uninstalled unavailable pkgs

  dpkg -s|--status ...      display package status details

  dpkg -p|--print-avail ... display available version details

  dpkg -L|--listfiles ...   list files `owned' by package(s)

  dpkg -l|--list [ ...]           list packages concisely

  dpkg -S|--search ...           find package(s) owning file(s)

  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     compare version numbers - see below

  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=     Use instead of /var/lib/dpkg

  --root=         Install on alternative system rooted elsewhere

  --instdir=      Change inst'n root without changing admin dir

  -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=         Enable debugging - see -Dhelp or --debug=help

  --status-fd             Send status change updates to file descriptor

  --ignore-depends=,... Ignore dependencies involving

  --force-...                    Override problems - see --force-help

  --no-force-...|--refuse-...    Stop when problems encountered

  --abort-after               Abort after encountering errors

 

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   (default is /var/lib/dpkg)

          --help  --version  --licence  --expert  --debug | -D

          --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系统中,某些大型应用程序如TeXEmacs处于这些分类中,在初次安装系统时最好手工取消对它们的选择(输入“_”)。在Woody稳定版中,这些大型应用程序被移入“Optional”类软件包。

 

`dselect'的用户界面有点怪。有4个相似命令(注意是大写字母!):

 

Key-stroke Action

退出。确认当前的选择然后退出。

(override dependencies)

恢复!我放弃我做出的选择

不管它!我不管dselect有什么建议,照我说的做!

照系统的建议做

 

 

 

 

使用`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 菜单

键盘命令帮助

更新软件包信息

下载并安装选定的软件包

保存修改并退出当前屏幕

放弃修改并退出当前屏幕

Enter 浏览某软件包的相关信息

 

`aptitude'提供了选项可自动选取所有_depends__recommends__suggests_类软件包。可在`F10

-> Options -> Dependency handling'菜单中设置它。

 

通过`aptitude'可访问某软件包的所有版本。

 

apt-cacheapt-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'

 

`unstable'处安装并从`testing'处安装关联包。

 

* `apt-get -u install -t unstable '

 

`unstable'处安装及其关联包。注意须设置`unstable'Pin-Priority990

 

* `apt-cache policy '

 

检查软件包的状态。

 

* `apt-cache show | less'

 

查看软件包的有关信息。

 

* `apt-get install '

 

安装软件包的特定版本<2.2.4-1>

 

* `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: testingPin-Priority改为50

track testing: 保持上面的设置不变

track testing(unstable): unstablePin-Priority改为500

track unstable(testing): unstablePin-Priority改为800

 

有关如何选定Pin-Priority的说明:在上表中,从上而下代表了某个版本

从上个版本刚刚发布之后到下一版进入冻结期之前这段时间经历的各个阶段。

 

请注意,跟踪`testing'发行版的Debian有一个负面影响,安全补丁的更新很慢。

 

请注意,如果将Debian各版本混合,例如将`testing'混入`stable'或将`unstable'混入`stable',这会造成众多关键软件包不自觉地从`testing'处或`unstable'处获得,结果引起许多麻烦。

 

如何对`/etc/apt/preferences'进行设置,将某些关键包锁定在成熟版本,而让其它非关键包跟踪不太成熟的新版本,可参考样例目录

(http://www.debian.org/doc/manuals/debian-reference/examples/)中的`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-Priority500

 

如果多个软件包同名,系统通常会安装拥有最高Pin-Priority的软件包。

 

在此,Pin-Priority表示:

 

* 1001及以上:可降级优先级。

 

Pin-Priority处于该范围的软件包允许降级操作。

 

* 1001000:标准优先级。

 

不允许降级。几个key Pin-Priority的值:

 

* 990:由`--target-release'apt-get(8)`-t'选项设置的优先级。

 

* 500:所有默认软件包文件的优先级。

 

* 100:当前安装软件包文件的优先级。

 

* 099:非自动优先级。(仅用于软件包没有安装或没有别的可用版本时。)

 

小于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 http://bugs.debian.org/

$ lynx http://bugs.debian.org/如果你知道软件包名称

$ lynx http://bugs.debian.org/如果你知道错误序号

 

如有疑问,可阅读帮助文件。设置`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 * # 直至不再出错

 

如果软件包丢失,用下述方法从镜像源

(http://www.debian.org/mirror/)下载:

 

# mc # use "FTP link" pointing to Debian FTP server

 

现在,在HTTP/FTP服务器上,软件包的真正位置不再是传统的`/dist'目录而是新的`/pool'目录。

 

然后开始安装:

 

# dpkg -i /var/cache/apt/archives/

 

对于坏关联,可这样解决:

 

# dpkg --ignore-depends=,... -i

# dpkg --force-depends -i

# dpkg --force-depends --purge

# dpkg --force-confmiss -i # Install missing conffile

 

恢复软件包选择状态的数据

 

如果`/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

(http://people.debian.org/~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/ 3

 

这样,你就可以使用软盘中内核启动系统,新系统的功能基本齐全。(可能丢失某些内核特性或模块)

 

如果dpkg命令出错该怎么办

 

 

如果`dpkg'损坏就不能安装任何`.deb'文件。下面的操作可帮助你修复这种状况。(在第一行,你可将“links”替换成你喜欢的浏览器。)

 

$ links http:///debian/pool/main/d/dpkg/

... 下载完好的dpkg__.deb

$ su

password: *****

# ar x dpkg__.deb

# mv data.tar.gz /data.tar.gz

# cd /

# tar xzfv data.tar.gz

 

`i386',亦可用`http://packages.debian.org/dpkg'作为URL

 

 

文件信息

 

 

查找特定文件所属的软件包:

 

$ dpkg {-S|--search} pattern # search for pattern in installed packages

$ wget http://ftp.us.debian.org/debian/dists//

$ zgrep -e pattern

# find filename-pattern of files in the debian archive

 

或使用专门的软件包命令:

 

# apt-get install dlocate

# conflicts with slocate (secure version of locate)

$ dlocate # fast alternative to dpkg -L and dpkg -S

...

# 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 软件包的priority/dists信息

$ apt-cache show -a 显示所有dists中软件包描述信息

$ 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

'。这种方法可能产生严重的负作用,所以使用起来要小心。参阅apt.conf(5)dpkg(1)

 

安装完毕以后重新配置已安装软件包'中的方法配置特定的软件包。

 

重新配置已安装软件包

 

使用下列方法重新配置已安装软件包。

 

# dpkg-reconfigure --priority= [...]

# dpkg-reconfigure --all # 重新配置所有的软件包

# dpkg-reconfigure locales # 生成别的locales

# dpkg-reconfigure --p= xserver-xfree86 # 重新配置X服务器

 

如果你想永久改变`debconf'对话框模式,可这么做。

 

某些程序用于生成特殊的配置脚本。

 

apt-setup - 创建/etc/apt/sources.list

install-mbr - 安装主引导(Master Boot Record)管理器

tzconfig - 设定本地时间

gpmconfig - 设置gpm鼠标daemon

sambaconfig - Potato中配置SambaWoody使用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 '命令操作。要阻止`apt-get

-u upgrade '`apt-get -u

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 "*" > # or use \*

 

`*'使`'包含那些被指定“完全删除(purge)”的文件。

 

你可将这个文件发送到另一台电脑并在那儿按文件中的选择进行软件包安装。

 

# dselect update

# dpkg --set-selections <

# apt-get -u dselect-upgrade # dselect install

 

stable系统引入软件包

 

stable系统进行部分升级,在软件运行环境中重新编译源码的确是个诱人的想法,这样可以避免由于关联关系不得不对大量软件包升级。首先,将下列镜像源加入

/etc/apt/sources.list:(以下是美国的Debian源)

 

deb-src http://http.us.debian.org/debian testing \

main contrib non-free

deb-src http://non-us.debian.org/debian-non-US testing/non-US \

main contrib non-free

deb-src http://http.us.debian.org/debian unstable \

main contrib non-free

deb-src http://non-us.debian.org/debian-non-US 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 http://debian.linux.org.tw stable main contrib non-free

deb-src http://debian.linux.org.tw 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 :[port]

-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进行安装,这样比较方便。便于将来卸载和重新安装。

首先下载debhelperdebmakefakeroot

apt-get install debhelper debmake fakeroot

然后,在源代码顶层目录下,做:

./configure

fakeroot debian/rules binary

 

对于mplayerlame来讲,都可以作成deb包的。

 

阅读(2407) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:vi编辑命令

给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册