Ubuntu下的apt以及dpkg命令

本文详细介绍Ubuntu系统的常用管理命令,包括如何使用sudo获取临时root权限、apt-get的各种操作命令及其使用场景,以及dpkg的多种应用技巧等。

Ubuntu默认不能直接用root帐户登录,必须从第一个创建的用户(既安装时创建的那个用户)通过su或sudo来获得root权限。在 Ubuntu中对系统进行操作很多时候都要使用这个命令,由此可见对于新来说很有必要来认识这个命令。这或许不太方便,但这样增加了安全性,避免用户由于 误操作而损坏系统。

sudo

格式:sudo [其它命令]

sudo既为Super user do的意思。sudo在这个过程中只起一个调用root用户的作用,本次操作完成后,其作用就消失,如果要使用调用root权限操作的命令就必须再次使用 sudo。些过程中系统会要求用户输入密码,此密码就是安装系统时你输入你那个密码,注意:这个密码在输入你时候不会像在Windows里输密码那样输入 一位密码就有一个*号,这样的目的就是为了使密码更安全,因为不知道你密码有几位这样无疑给密码破译者增加了难度。:)



apt-get install  
下载 以及所有倚赖的包裹,同时进行包裹的安装或升级。如果某个包裹被设置了 hold (停止标志,就会被搁在一边(即不会被升级)。更多 hold 细节请看下面。 

apt-get remove [--purge] 
移除 以及任何倚赖这个包裹的其它包裹。 
--purge 指明这个包裹应该被完全清除 (purged) ,更多信息请看 dpkg -P。 

apt-get update 
升级来自 Debian 镜像的包裹列表,如果你想安装当天的任何软件,至少每天运行一次,而且每次修改了 
/etc/apt/sources.list 后,必须执行。 

apt-get upgrade [-u]  
升级所以已经安装的包裹为最新可用版本。不会安装新的或移除老的包裹。如果一个包改变了倚赖关系而需要安装一个新的包裹,那么它将不会被升级,而是标志为 hold。apt-get update 不会升级被标志为 hold 的包裹 (这个也就是 hold 的意思)。请看下文如何手动设置包裹为 hold。我建议同时使用 '-u' 选项,因为这样你就能看到哪些包裹将会被升级。 

apt-get dist-upgrade [-u] 
和 apt-get upgrade 类似,除了 dist-upgrade 会安装和移除包裹来满足倚赖关系。因此具有一定的危险性。 

apt-cache search
 
搜索满足 的包裹和描述。 

apt-cache show 

显示 的完整的描述。 

apt-cache showpkg 
显示 许多细节,以及和其它包裹的关系。 

dselect 
console-apt 
aptitude 
gnome-apt 
APT 的几个图形前端(其中一些在使用前得先安装)。这里 dselect 无疑是最强大的,也是最古老,最难驾驭。 
普通 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 (如果你安装时选错了,这里可以改回来哟:) 


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

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

支持通配符,如: 
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* 
保存 
更详细内容请看: 
http://linuxsir.com/bbs/showthread.php?s=&threadid=22601  

dpkg -S 
在包裹数据库中查找 ,并告诉你哪个包裹包含了这个文件。(注:查找的是事先已经安装的包裹) 


从源码建立 deb packagesapt-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,或者 dist-upgrade -f,然后再用 apt-get install,upgrade,或者 dist-upgrade。可能会重复多次,这样通常可以解决大多数的依赖性问题。(同时,如果提示由于某种原因需要某个特定的包裹,你可以常识安装或卸载这个包)apt-get install -fapt-get upgrade -fapt-get dist-upgrade -f 尝试修正上述过程中出现依赖性关系注意 apt-get install -f 不需要 作为参数。
<think>好的,我现在需要帮助用户解决在Ubuntu 14上修复损坏的aptdpkg的问题。首先,我需要回忆一下相关的系统维护命令和步骤,确保给出的建议准确有效。 用户提到的是Ubuntu 14,这是一个比较老的版本,可能需要注意一些命令的兼容性。根据用户提供的引用内容,特别是引用[2]和[4],里面提到了使用`apt-get -f install`来修复依赖关系,以及可能需要使用Live CD来恢复系统。另外,引用[3]说明了dpkg的作用,所以可能需要处理dpkg的锁定文件或配置问题。 首先,我应该按照常规的修复步骤来建议。通常,修复aptdpkg的问题需要按顺序执行几个步骤。第一步可能是清理可能存在的锁定文件,这些文件有时会导致apt无法运行。接着是更新软件包列表,并尝试修复损坏的依赖关系。然后可能需要重新配置dpkg,修复安装的软件包,甚至清理缓存。如果这些步骤不起作用,可能需要更深入的修复,比如使用dpkg强制安装,或者用Live CD恢复。 接下来,我需要检查是否有遗漏的步骤。比如,是否有需要删除的损坏软件包,或者需要手动安装的依赖项。另外,Ubuntu 14使用较旧的apt版本,可能需要特别注意某些命令的可用性。 还要考虑用户可能遇到的常见问题,比如dpkg状态文件损坏,这时候可能需要手动修复或恢复该文件。引用中提到的备份数据和使用Live CD的方法,应该在更极端的情况下使用,比如系统完全无法启动时。 最后,生成相关问题时要确保问题与修复aptdpkg相关,覆盖用户可能进一步需要了解的内容,比如如何防止此类问题,或者如何彻底重装软件包。</think>### 修复Ubuntu 14中aptdpkg损坏的步骤 #### 1. **清理锁定文件** 当aptdpkg进程意外终止时,可能残留锁定文件,需手动删除: ```bash sudo rm /var/lib/apt/lists/lock sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock ``` #### 2. **更新软件包列表并修复依赖** 运行以下命令更新并修复依赖关系: ```bash sudo apt-get update sudo apt-get install -f # 强制修复依赖问题[^2] sudo dpkg --configure -a # 配置未完成的dpkg安装 ``` #### 3. **修复损坏的软件包** 若特定软件包导致问题,尝试重新安装: ```bash sudo apt-get --reinstall install <pkg-name> # 替换为具体包名[^1] ``` #### 4. **清理缓存并重建依赖树** 清除旧缓存并重新生成软件包列表: ```bash sudo apt-get clean sudo apt-get autoclean sudo apt-get update --fix-missing ``` #### 5. **使用dpkg强制修复** 若依赖关系复杂,可尝试强制安装并忽略错误(谨慎使用): ```bash sudo dpkg -i --force-overwrite /var/cache/apt/archives/*.deb ``` #### 6. **终极方案:Live CD恢复** 若上述方法无效,通过Ubuntu Live CD/USB挂载系统分区,备份数据后执行: ```bash sudo fsck /dev/sdX # 检查磁盘错误(替换为实际分区) chroot到原系统后运行apt修复命令[^4] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值