红联Linux门户
Linux帮助
当前位置: 红联Linux门户 > Debian

Debian Linux完整移除套件/重新安装套件/锁定套件版本(apt)

发布时间:2008-10-03 00:08:02来源:红联作者:urowoen
很多人常会发生把某个套件搞烂了,或者设定档之类不小心砍掉了,再来想到的当然是移除再重新安装或直接(apt-get install --reinstall package),但是怎么装,设定档就是回不来,搞烂的资料也还是留着.

这并不是Debian的错,主要是怕你在移除时,不小心就将重要资料跟着就砍掉了(ex: MySQL不小心移除就把DB砍掉,这就很尴尬了.)

此篇文章也有说明发生状况:如何在Debian Etch系统下完全移除套件与实体目录?

套件重新安装
就上述那篇文章的例子,不小心将Apache的设定档盖掉/砍掉,所以打算重新安装Apache.

套件移除重新安装,和apt-get install --reinstall apache2并没有错,只不过问题是, apache2的package里面并没有设定档. Orz.

由此可见Package套件内容:

dpkg -L apache2 | grep conf
dpkg -L apache2.2-common | grep conf # Debian设定档都放在package_name-common中
或者上述文章作者的做法是less /var/lib/dpkg/info/apache2.list也是可以.
所以要重新取得设定档,应该直接
apt-get install --reinstall apache2.2-common
即可. (请修改成自己系统的apache2版本)
套件完整移除
现在遇到的另一个状况是, MySQL被搞烂了,所以要将全部移除(含资料都要移除),再重新安装.

完整移除的步骤:

apt-get remove --purge mysql-server mysql-server-5.0 mysql-common mysql-client mysql-client-5.0
这一行就会将DB/设定档都完整移除(--purge会将所有移除),不过大多人的问题是, --purge后面那一串是从哪来的?

可用下述查法:

dpkg -l | grep mysql # dpkg -l会列出此系统安装的所有package
ls /var/lib/dpkg/info/*mysql*
移除之后,重新安装直接apt-get install就可以?~ :)

注:若只是Database file烂了,只要apt-get remove --purge mysql-server-5.0,再重新安装mysql-server-5.0即可.

套件锁定版本

假设现在要锁定gaim版本,不想要gaim被升级或降级,有下述两种做法:

echo "gaim hold" | dpkg --set-selections #将gaim锁定版本
dpkg --get-selections "gaim" #检查:出现gaim hold #状态是hold,就不能被升级了.
vim /etc/apt/preferences #内容如下,把版本编号写死.

Package: gaim
Pin: version 0.58*

套件解除锁定
echo "gaim install" | dpkg --set-selections

dpkg --get-selections "gaim" #检查:出现gaim install #状态被重置为install,就可以继续升级了

状态档案位置

hold / install这些状态标志都写在/var/lib/dpkg/status里,也可以手动去修改变hold / install等状态.
文章评论

共有 0 条评论