Debian apt

1428阅读 0评论2009-11-24 terry-xcb
分类:LINUX

apt-get用法
apt-get upgrade  和 apt-get dist-upgrade升级
Debian 在同一个版本编号下,依套件成熟度又分 stable、testing、unstable。
 若我们现在用的是 Debina 3.0r2 stable,
 apt-get upgrade 就可以升级for stable 的软件,
 apt-get dist-upgrade 则可以选择将系统由 stable 升级到 testing 或是 unstable

 apt-get upgrade 和 apt-get dist-upgrade 的结果,基本上是一样的,
 apt-get   dist-upgrade 在升级的同时会为了解决相依性而安装新套件,
 apt-get upgrade 并不会,因此要升级的话,建议还是用 apt-get dist-upgrade


apt-get dist-upgrade 出错
正在解压缩将用于更替的包文件 gnupg ...
dpkg:处理 /var/cache/apt/archives/gnupg_1.4.9-5.rays0_i386.deb (--unpack)时出错:
 试图改写 '/usr/share/info/dir.gz',而它也在软件包 cpio 0:2.10-2.rays0 中
dpkg-deb: 子进程 粘贴 被信号(Broken pipe)终止了
正预备替换 tzdata 2009o-1ubuntu2 (使用 .../tzdata_2009u-1.rays0_all.deb) ...
正在解压缩将用于更替的包文件 tzdata ...
正在处理用于 python-support 的触发器...
正在处理用于 install-info 的触发器...
install-info:警告: “/usr/share/info/menu.info.gz”中没有 info 目录条目
在处理时有错误发生:
 /var/cache/apt/archives/gnupg_1.4.9-5.rays0_i386.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
解决办法:
#vi /var/lib/dpkg/info/cpio.list
delete /usr/share/info/dir.gz



apt-cache search 搜寻:我们可以用这个指令来搜寻升级包
例如:apt-cache search httpd

apt-cache depends 相依性:我们可以用这个指令来看到软件包的所有相依性档案
例如:apt-cache depends httpd

apt-get install 安装:安装软件包
例如:apt-get install httpd
这样 apt 就会自动上网下载httpd 回来安装,若httpd 有相依性套件的时候,apt 也会自动下载安装

apt-get clean 清除:
当使用 apt-get install 指令安装套件,下载下来的 deb 会放置於 /var/cache/apt/archives,使用 apt-get clean 指令可以将之清除,避免占用硬碟空间

apt-get remove 移除:
例如:apt-get remove httpd,就会移除 httpd 了,假如有相依性套件的时候,apt 也会一并移除 以上这几个指令应该就够用了,若想要得到更进一步的指令,请用 man

apt-get update 更新:
这指令是用来取得记录在 /etc/apt/sources.list 内的远端服务器的套件档案清单 在使用 「apt-get dist-upgrade」指令升级套件前,一定要记得先用这条指令将套件档案清单更新 apt-get dist-upgrade 升级:这里的升级主要是根据已有的软件包更新而言,并不是更新整个系统,也可以使用图形界面的新立得包管理器 如果没有安装这个管理器的话,可以执行以下指令 apt-get install synaptic 另附apt-get命令大全 安装完毕后,直接在命令行上敲入synaptic就可以启动了。


apt-get update——更新源,在修改/etc/apt/sources.list或者/etc/apt/preferences之后运行该命令。此外您需要定期运行这 一命令以确保您的软件包列表是最新的。
apt-get install # ------(package 安装包)
apt-get install # -----(package --reinstall 重新安装包)
apt-get -f install # -----(强制安装, "-f = --fix-missing"当是修复安装吧...)
apt-get remove # ——卸载一个已安装的软件包(保留配置文件)
apt-get remove --purge  # ——卸载一个已安装的软件包(删除配置文件)
apt-get autoremove --purge # ----(package 删除包及其依赖的软件包+配置文件等(只对6.10有效,强烈推荐))
dpkg --force-all  --purge # —— 有些软件很难卸载,而且还阻止了别的软件的应用,就可以用这个,不过有点冒险。
apt-get autoclean apt——会把已装或已卸的软件都备份在硬盘上,所以如果需要空间的话,可以让这个命令来删除你已经删掉的软件
apt-get clean—— 这个命令会把安装的软件的备份也删除,不过这样不会影响软件的使用的。
apt-get upgrade——更新所有已安装的软件包
apt-get dist-upgrade——将系统升级到新版本
apt-get dselect-upgrade #------使用 dselect 升级
apt-cache search string——在软件包列表中搜索字符串
dpkg -l package-name-pattern——列出所有与模式相匹配的软件包。如果您不知道软件包的全名,您可以使用“*package-name- pattern*”。

aptitude——详细查看已安装或可用的软件包。与apt-get类似,aptitude可以通过命令行方式调用,但仅限于某些命令——最常见的有安 装和卸载命令。由于aptitude比apt-get了解更多信息,可以说它更适合用来进行安装和卸载。
apt-cache depends #-------(package 了解使用依赖)
apt-cache rdepends # ------(package 了解某个具体的依赖,当是查看该包被哪些包依赖吧...)
apt-cache showpkg pkgs——显示软件包信息。
apt-cache show pkgs——显示软件包记录,(package 获取包的相关信息,如说明、大小、版本等) 类似于dpkg --print-avail。
apt-cache pkgnames——打印软件包列表中所有软件包的名称。
apt-cache dumpavail——打印可用软件包列表。
apt-get build-dep # ------(package 安装相关的编译环境)
apt-get source #------(package 下载该包的源代码)
apt-get clean && apt-get autoclean # --------清理下载文件的存档 && 只清理过时的包
apt-get check #-------检查是否有损坏的依赖

dpkg -S file——这个文件属于哪个已安装软件包。
dpkg -L package——列出软件包中的所有文件。
apt-file search filename——查找包含特定文件的软件包(不一定是已安装的),这些文件的文件名中含有指定的字符串。apt-file是一个独立的软件包。您必须 先使用apt-get install来安装它,然后运行apt-file update。如果apt-file search filename输出的内容太多,您可以尝试使用apt-file search filename | grep -w filename(只显示指定字符串作为完整的单词出现在其中的那些文件名)或者类似方法,例如:apt-file search filename | grep /bin/(只显示位于诸如/bin或/usr/bin这些文件夹中的文件,如果您要查找的是某个特定的执行文件的话,这样做是有帮助的)。
apt-file list packagename -----列出软件包的内容
apt-file update –更新apt-file的数据库
apt-file search command   //search this command included in which package



apt-get autoclean——定期运行这个命令来清除那些已经卸载的软件包的.deb文件。通过这种方式,您可以释放大量的磁盘空间。如果您的需求十分迫切,可以使用apt-get clean以释放更多空间。这个命令会将已安装软件包裹的.deb文件一并删除。

echo " hold" | dpkg --set-selections
设置 的状态为 hlod (命令行方式)

dpkg --get-selections ""
取的 的当前状态 (命令行方式)

支持通配符,如:
Debian:~# dpkg --get-selections *wine*

支持通配符,如:
Debian:~# dpkg --get-selections *wine*
libwine hold
libwine-alsa hold
libwine-arts hold
libwine-dev hold
libwine-nas hold
libwine-print hold
libwine-twain hold
wine hold
wine+ hold
wine-doc hold
wine-utils hold

例如:
大家现在用的都是 gaim-0.58 + QQ-plugin,为了防止 gaim 被升级,我们可以采用如下方法:

方法一:
Debian:~# echo "gaim hold" | dpkg --set-selections
然後用下面命令检查一下:
Debian:~# dpkg --get-selections "gaim"
gaim hold
现在的状态标志是 hold,就不能被升级了。

如果想恢复怎么办呢?
Debian:~# echo "gaim install" | dpkg --set-selections
Debian:~# dpkg --get-selections "gaim"
gaim install
这时状态标志又被重置为 install,可以继续升级了。

同志们会问,哪个这些状态标志都写在哪个文件中呢?
在 /var/lib/dpkg/status 里,你也可以通过修改这个文件实现 hold。

有时你会发现有的软件状态标志是 purge,不要奇怪。
如:事先已经安装了 amsn,然後把它卸了。
apt-get remove --purge amsn
那么状态标志就从 install 变成 purge。

方法二:
在/etc/apt 下手动建一个 preferences 文件
内容:
Package: gaim
Pin: version 0.58*
保存

--------------------------------------------
Debian的软件包管理工具命令不完全列表
--------------------------------------------
Debian系统中所有的包信息都在/var/lib/dpkg下.其中/var/lib/dpkg/info目录中保存了各个软件包的信息及管理文件.每个文件的作用如下:
以 ".conffiles"  结尾的文件记录软件包的配置列表.
以 ".list"           结尾的文件记录了软件包的文件列表,用户可在文件当中找到软件包文件的具体安装位置.
以 ".md5sums" 结尾的文件记录了md5信息,用来进行包的验证的.
以 ".config"      结尾的文件是软件包的安装配置角本.
以 ".postinst"   脚本是完成Debian包解开之后的配置工作,通常用来执行所安装软件包相关的命令和服务的重新启动.
以 ".preinst"    脚本在Debain解包之前运行,主要作用是是停止作用于即将升级的软件包服务直到软件包安装或和升级完成.
以 ".prerm"     脚本负责停止与软件包关联的daemon服务,在删除软件包关联文件之前执行.
以 ".postrm"   脚本负责修改软件包链接或文件关联,或删除由它创建的文件.

/var/lib/dpkg/available是软件包的描述信息.
包括当前系统中所有使用的Debian安装源中所有的软件包,还包括当前系统中已经安装和未安装的软件包.
 
1.dpkg包管理工具
dpkg --info "软件包名" --列出软件包解包后的包名称.
dpkg -l      --列出当前系统中所有的包.可以和参数less一起使用在分屏查看.
dpkg -l |grep -i "软件包名" --查看系统中与"软件包名"相关联的包.
dpkg -s    查询已安装的包的详细信息.
dpkg -L   查询系统中已安装的软件包所安装的位置.
dpkg -S   查询系统中某个文件属于哪个软件包.
dpkg -I    查询deb包的详细信息,在一个软件包下载到本地之后看看用不用安装(看一下呗).
dpkg -i 手动安装软件包(这个命令并不能解决软件包之前的依赖性问题),如果在安装某一个软件包的时候遇到了软件依赖的问题,可以用apt-get -f install在解决信赖性这个问题.
dpkg -r 卸载软件包.不是完全的卸载,它的配置文件还存在.
dpkg -P 全部卸载(但是还是不能解决软件包的依赖性的问题)
dpkg -reconfigure 重新配置

普通 Dpkg 用法
dpkg -i   安装一个 Debian 包文件,如你手动下载的文件。

dpkg -c  列出 的内容。

dpkg -I  从中提取包信息。

dpkg -r   移除一个已安装的包。

dpkg -P
完全清除一个已安装的包。和 remove 不同的是,remove 只是删掉数据和可执行文件,purge 另外还删除所有的配制文件。

dpkg -L  列出 安装的所有文件清单。同时请看 dpkg -c 来检查一个 .deb 文件的内容。

dpkg -s
显示已安装包的信息。同时请看 apt-cache 显示 Debian 存档中的包信息,以及 dpkg -I 来显示从一个 .deb 文件中提取的包信息。

dpkg -reconfigure
重 新配制一个已经安装的包,如果它使用的是 debconf (debconf 为包安装提供了一个统一的配制界面)。你能够重新配制 debconf 它本身,如你想改变它的前端或提问的优先权。例如,重新配制 debconf,使用一个 dialog 前端,简单运行:

dpkg-reconfigure --frontend=dialog debconf (如果你安装时选错了,这里可以改回来哟:)




2.apt高级包管理工具
   (1)GTK图形的"synaptic",这是APT的前端工具.
   (2)"aptitude",这也是APT的前端工具.
   用APT管理工具进行包的管理,可以有以下几种方法做源:
   (1)拿安装盘做源,方法如下:
        apt-cdrom ident        扫描光盘的信息
        apt-cdrom add          添加光盘源
   (2)这也是最常用的方法就是把源添加到/etc/apt/source.list中,之后更新列apt-get update
APT管理工具常用命令
apt-cache 加上不同的子命令和参数的使用可以实现查找,显示软件,包信息及包信赖关系等功能.
apt-cache stats 显示当前系统所有使用的Debain数据源的统计信息.
apt-cache search +"包名",可以查找相关的软件包.
apt-cache show   +"包名",可以显示指定软件包的详细信息.
apt-cache depends +"包名",可以查找软件包的依赖关系.
apt-get upgrade   更新系统中所有的包到最新版
apt-get install   安装软件包
apt-get --reinstall install 重新安装软件包
apt-get remove 卸载软件包
apt-get --purge remove 完全卸载软件包
apt-get clean 清除无用的软件包
在用命令apt-get install之前,是先将软件包下载到/var/cache/apt/archives中,之后再进行安装的.所以我们可以用apt-get clean清除/var/cache/apt/archives目录中的软件包.
源码包安装
   apt-cache showsrc 查找看源码包的文件信息(在下载之前)
   apt-get source 下载源码包.
   apt-get build-dep +"包名" 构建源码包的编译环境.
3.从源码建立deb packages

apt-get source [-b]
下载一个源码的包并解开。
你必须在你的/etc/apt/sources.list文件里写入一条 deb-src 的记录才能完成这项工作。如果你输入了一个-b参数,并且是以root的身份,deb包会被自动的创建。

apt-get build-dep
自动下载并安装通过源码创建 时需要的包。
只有apt 0.5以上版本才支持这个功能。
现在woody和以上版本包含了这个功能。
如果你使有一个旧版本的apt,查找依赖性最简单的方法是查看源码包中
debian/control 这个文件,
注意这个路径是相对的,是包内的路径。

普通的用法,结合 apt-get source -b,例子 (as root):

apt-get build-dep
apt-get source -b

会下载源码包,建立依赖性,然后尝试编译源码。

dpkg-source -x
如果你手工下载了一个程序的源码包,其中包含了几个类
似 .orig.tar.gz , .dsc ,
以及 .diff.gz 之类的文件,
那么你就可以对 .dsc 文件使用这个命令来 unpack 源码包。

dpkg-buildpackage
从 Debian 源码树建立一个deb包。你必须在source tree的主目录才能生效。例
如:

dpkg-buildpackage -rfakeroot -uc -b

这里 '-rfakeroot' 指定命令使用 fakeroot 程序来模仿 root 权限 (来实现所有
者(ownership)目的),
'-uc' 表示 "Don't cryptographically sign the changelog", '-b' 代表只建立
二进制包.

debuild
一个快速打包脚本类似 dpkg-buildpackage ,能自动的识别是否使用 fakeroot,
同时为你运行 lintian 和 gpg

修正倚赖关系

dpkg --configure --pending
如果dpkg在apt-get install upgrade dist-uptradeing 的时候出错退出,
尝试使用此命令来配置已经unpack的包。
然后再用 apt-get install ,upgrade, or dist-upgrade -f ,
然后再用 apt-get install, upgrade, or dist-upgrade.

可能会重复多次,这样通常可以解决大多数的依赖性问题。
(同时,如果提示由于某种原因需要某个特定的包裹,你可以常识安装或卸载这个包)

apt-get install -f
apt-get upgrade -f
apt-get dist-upgrade -f
尝试修正上述过程中出现依赖性关系
注意 apt-get install -f 不需要 作为参数。


(一)基本配置

1.1, /etc/apt/sources.list文件
    Ubuntu对网络的依赖性很强,它的许多软件安装、系统更新都要在线进行,那么,新的软件包从哪里下载来的呢?软件包的来源就列在/etc/apt/sources.list文件中。
    在该list文件中,会出现类似的格式:
    下面是Ubuntu5.10安装后系统默认的源列表文件:

deb cdrom:[Ubuntu 5.10 _Breezy Badger_ - Release i386 (20051012)]/ breezy main restricted

## Uncomment the following two lines to fetch updated software from the network
# deb breezy main restricted
#
## Uncomment the following two lines to fetch major bug fix updates produced
## after the final release of the distribution.
deb breezy-updates main restricted
deb-src breezy-updates main restricted

## Uncomment the following two lines to add software from the 'universe'
## repository.
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## universe WILL NOT receive any review or updates from the Ubuntu security
## team.
# deb breezy universe
# deb-src breezy universe

## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb breezy-backports main restricted universe multiverse
# deb-src breezy-backports main restricted universe multiverse

# deb http://security.ubuntu.com/ubuntu breezy-security main restricted
# deb-src http://security.ubuntu.com/ubuntu breezy-security main restricted

# deb http://security.ubuntu.com/ubuntu breezy-security universe
# deb-src http://security.ubuntu.com/ubuntu breezy-security universe

NOTES   
    (1)以#开头的语句是注释。
    (2)每行的开头定义了来源的类型,
     deb    : 已经编译好的二进制软件包。
     deb-src: 源代码包,含有原始的源代码、Debian控制文件(.dsc)、标记须针对Debian所做的改动的diff.gz文件。
    (3)每行紧接deb, deb-src之后定义了源的类型,apt支持http, ftp, file(本地文件,比如含有加载iso文件系统的目录)和ssh。
    (4)针对cdrom,使用apt-cdrom管理工具,而非apt-get。
    (5)对sources.list作出改动后,运行"apt-get update"使 apt从你设定的源获取软件包列表。
1.2, 确定最优的源
    用户在sources.list中加入源(一般为离开用户比较近的镜像),那么,哪个源更好呢?
    有人写一个脚本,测量各镜像的ping延时。其实可以使用netselect工具:
    (1)若未安装netselect, "sudo apt-get install netselect".
    (2)使用netselect找出多个源中随度最快的源,添加到sources.list中。

    另外还有使用本地化源、使用光驱中的源。这里就不做介绍了,可参考debian.org的apt-howto。谁会不愿意用网上最新的源呢?:)
-----------------------------------------------------------


用apt-cdrom -d /media/cdrom0 add 加载光驱,

/dev/hdc /cdrom iso9660 user,noauto 0 0
用编辑器修改一下存盘,重启,应该可以了。
然后,apt-cdrom -d /cdrom add
apt-get install (你要装的软件名:《例如gcc》)
gcc相关的软件会自动装入。
昨天,刚试过,很爽。
注意:apt不会认你手动挂载的光驱,如果fstab中设置不对apt不会正常工作。

用apt-cdrom -d /media/cdrom0 add 加载光驱,
需要使用#mkdir /media/cdrom0 否则会错误提示说“无法读取文件系统挂载点/media/cdrom的状态 -stat(2 没有那个文件或目录)”

上一篇:__attribute__
下一篇:alternatives && update-alternatives