2009年10月26日

今天清理一下系统,使用了一个命令行,可能对其他人有参考价值

dpkg -l |grep "^rc"|awk ‘{print $2}’ |xargs aptitude -y purge

用途:

删除已经删除的软件包的残留配置文件。因为 debian 中 remove 包不删除配置文件,purge 才能清除,但根据依赖关系自动清除都是 remove,在加上自己失手操作,所以用得时间长了,难免残留很多没必要的配置文件,比较烦,于是有了上述操作。

说明:

1) dpkg -l

列出系统中安装的所有包的状态,`ii’ 开头的是正常安装的包,`rc’开头的则是删除但仍留下配置文件的包,其他状态则是有错误的状态,自己执行一次就明白了,输出结果的开头有说明的。

2) grep "^rc"

提取以 rc 开头的包,也就是被删除但仍残留配置文件的包的信息的行。

3) awk ‘{print $2}’

打印这些包的名字,他们位于 dpkg -l 输出结果的第二个字段,估计有很多人是通过这个命令认识到 awk 的,也有很多人只在这个命令行中才使用 awk,我就是其中之一。

4) xargs aptitude -y purge

把上述输出,也就是要清除配置文件的包的名字放在 aptitude -y purge 后面,purge命令会清除配置文件,而 -y 参数会自动对后面 aptitude 命令的提示回答是,这个开关通常是危险的,所以在一般情况下不要轻易使用,而在这里,如果你确定这些包的配置文件的清除是没有问题的的话,可以使用这个开关。

 

dpkg是Debian的中级软件包管理器,类似RPM.
dpkg是Debian软件包管理系统的中流砥柱,负责安全卸载软件包,配置,以及维护已安装的软件包.也是Debian系统中众多软件包管理工具的后端.有关dpkg的更多介绍参阅:http://www.dpkg.org
系统中所有packages的信息都在/var/lib/dpkg/目录下,其中子目录”/var/lib/dpkg/info”用于保存各个软件包的配置文件列表.
.conffiles 记录了软件包的配置文件列表
.list 保存软件包中的文件列表,用户可以从.list的信息中找到软件包中文件的具体安装位置.
.md5sums 记录了软件包的md5信息,这个信息是用来进行包验证的.
.prerm 脚本在Debian报解包之前运行,主要作用是停止作用于即将升级的软件包的服务,直到软件包安装或升级完成.
.postinst脚本是完成Debian包解开之后的配置工作,通常用于执行所安装软件包相关命令和服务重新启动.
/var/lib/dpkg/available文件的内容是软件包的描述信息,该软件包括当前系统所使用的Debian安装源中的所有软件包,其中包括当前系统中已安装的和未安装的软件包.
dpkg
查询以安装的信息
查询当前系统所有已安装的deb包
dpkg –l 命令用于查询当前系统所有以安装的deb包的信息.,通过less和grep可以执行更复杂的查询工作.
例如查找跟vim有关的软件包,dpkg –l |grep –ivim
(如发现iU 表示软件包未安装成功,ii表示安装成功)
查看已安装软件包的详细情况
dpkg –s 命令查看软件包的详细情况,包括版本,依赖之类的
查询系统中所安装软件包所安装的文件
dpkg –L 命令用于查询系统中所安装软件包的安装的文件安装到系统的位置和安装了那些.
小提示: 如何可以看软件包装到哪个地方?
用apt-get install *
如何可以看软件包装到哪个地方?
dpkg -L package-name|more

查询系统中某个文件属于那个软件包
dpkg –S 命令用于了解当前的软件属于那个软件包
查询未安装的信息
查询未安装软件包详细信息
dpkg –I 命令用于查看未安装软件包的详细信息,以便了解该软件包是否需要安装.
查询deb包文件中所包含的文件
dpkg –c 显示未安装deb软件包所包含的文件列表,以及安装位置
安装软件包
安装deb软件包
dpkg –i 手工安装deb包到系统中,不过有时会存在Dpends关系,建议使用apt-get 来安装.
如果通过dpkg –i安装软件后由于Dpends关系没有安装成功,可通过apt-get –f install解决
解决dpkg –i 安装deb包出现Dpends问题
apt-get –f install 解决Dpends问题.
例如:dpkg –i lftp_3.1.3-1_i386.deb
Selecting previously deselected package lftp.
(Reading database … 20654 files and directories currently installed.)
unpacking lftp (from lftp_3.1.3-1_i386.deb)…
dpkg:dependency problems prevent configuration of lftp:
ftp depends on libexpat1 (<=1.95.8);however
dpkg : error processing lftp (–install)
dependency problems –leaving unconfigured
Errors were encountered while processing:
lftp
//lftp软件包安装失败
dpkg –l |grep lftp
iU lftp 3.1.3-1 Sophisticated
command-line FTP/HTTP client p
//”dpkg -l” 查询信息表示lftp软件包未安装成功
(iU表示未安装成功,ii表示安装成功)
使用apt-get –f install解决
卸载deb软件包
卸载deb包
dpkg –r用于卸载指定的软件包,该命令只卸载软件包安装到系统中的文件,而不去删除软件包的配置文件,因此不是完全意义上的卸载.但是软件包保存在系统中,可以提供给以后在安装软件包时使用.
例如:dpkg –r prozilla 移除后再用dpkg –l |grep prozilla 查看
会看到rc proc 1.3.6-3woody3 multi-thraded download accelerator
表示软件包已经被卸载,但配置文件仍在“rc”带表配置文件仍在.
卸载软件包并清除配置文件
dpkg –P 用于卸载软件包同时也删除配置文件,dpkg –P 不能解决Dpends问题,建议卸载时使用apt-get操作
重新配置软件包
对于Debian系统中的众多软件包(尤其是系统和服务器软件包)来说,在第一次安装该软件包时候会显示对话框窗口,提示用户输入必要的配置信息.当用户需要再次对软件包配置的时候,可以使用dpkg-reconfigure来对指定的软件包进行配置.
比如dpkg-reconfigure locales
用于配置语言
alien包转换工具
如果我们有很喜欢的RPM包,而又没有deb版本
怎么办~?
可以同过alien来转换或者直接安装,这个小家伙可是个很方便的东西!
基本命令如下:
首先通过apt-get install alien来安装.
然后alien -i name-of-the-pakage.rpm /*用来直接安装rpm包
alien -d , –to-deb /*Make debian packages,This is the default
例:alien –d package.rpm
alien –r , –to-rpm /*Make rpm packages
例:alien –r package.deb
alien –p , –to-pkg /*Make Solaris pkg packages
alien –-to-slp /*Make slp packages

alien –t , –to-tgz /*Make tgz packages

alien –T 检测

alien –-patch=patch 设置patch

apt-get命令

使用Ubuntu Christian Edition时用到

下面将要介绍的所有命令都需要sudo!使用时请将“packagename”和“string”替换成您想要安装或者查找的程序。

  • apt-get update——在修改/etc/apt/sources.list或者/etc/apt/preferences之后运行该命令。此外您需要定期运行这一命令以确保您的软件包列表是最新的。
  • apt-get install packagename——安装一个新软件包(参见下文的aptitude)
  • apt-get remove packagename——卸载一个已安装的软件包(保留配置文件)
  • apt-get –purge remove packagename——卸载一个已安装的软件包(删除配置文件)
  • dpkg –force-all –purge packagename 有些软件很难卸载,而且还阻止了别的软件的应用,就可以用这个,不过有点冒险。
  • apt-get autoclean apt会把已装或已卸的软件都备份在硬盘上,所以如果需要空间的话,可以让这个命令来删除你已经删掉的软件
  • apt-get clean 这个命令会把安装的软件的备份也删除,不过这样不会影响软件的使用的。
  • apt-get upgrade——更新所有已安装的软件包
  • apt-get dist-upgrade——将系统升级到新版本
  • apt-cache search string——在软件包列表中搜索字符串
  • dpkg -l package-name-pattern——列出所有与模式相匹配的软件包。如果您不知道软件包的全名,您可以使用“*package-name-pattern*”。
  • aptitude——详细查看已安装或可用的软件包。与apt-get类似,aptitude可以通过命令行方式调用,但仅限于某些命令——最常见的有安装和卸载命令。由于aptitude比apt-get了解更多信息,可以说它更适合用来进行安装和卸载。
  • apt-cache showpkg pkgs——显示软件包信息。
  • apt-cache dumpavail——打印可用软件包列表。
  • apt-cache show pkgs——显示软件包记录,类似于dpkg –print-avail。
  • apt-cache pkgnames——打印软件包列表中所有软件包的名称。
  • 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-get autoclean——定期运行这个命令来清除那些已经卸载的软件包的.deb文件。通过这种方式,您可以释放大量的磁盘空间。如果您的需求十分迫切,可以使用apt-get clean以释放更多空间。这个命令会将已安装软件包裹的.deb文件一并删除。大多数情况下您不会再用到这些.debs文件,因此如果您为磁盘空间不足而感到焦头烂额,这个办法也许值得一试。

演示:

我的磁盘空间不够用了。我得把apt的缓存空间清空才行。

apt-get clean

额外的软件包

 

deborphan和debfoster工具可以找出已经安装在系统上的不会被用到的软件包。

 

 

提高命令行方式下的工作效率

 

您可以通过定义别名(alias)来提高这些命令的输入速度。例如,您可以在您的*~/.bashrc*文件中添加下列内容

 alias acs='apt-cache search'  alias agu='sudo apt-get update'  alias agg='sudo apt-get upgrade'  alias agd='sudo apt-get dist-upgrade'  alias agi='sudo apt-get install'  alias agr='sudo apt-get remove'

或者使用前面介绍的aptitude命令,如“alias agi='sudo aptitude install'”。

apt-get install zhcon

查看支持的字库 more /usr/share/i18n/SUPPORTED

确认有中文字库后执行下面步骤:

step 1:  编辑 /etc/locale.gen 添加如下内容,使系统中加入中文库
#koria add this for chinese input
zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8

step2: 执行脚本/usr/sbin/locale-gen,生成具有中文输入库的支持包
/usr/sbin/locale-gen

step3 :  编辑/etc/profile,添加如下内容
#koria add for chinese input
 export LANG="zh_CN.GBK"

Q&A:
Q: /etc/locale.gen为什么要添加
zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8

   A: 因为只有这里添加了中文库,然后用/usr/sbin/locale-gen生成对应库,才会显示中文及输入
Q: 为什么不用 zh_CN GB2312
A: 因为GBK 字符支持比GB2312多。

Q: 直接编辑~/.bashrc里添加
zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8

 可否?

A: 可以,但这样只对被添加的用户中英文支持,未设置的则不支持

Q: 在/etc/bash.bashrc里添加
zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8
  可否?

A: 不行, 因为我测试过,不行。 原因未知!

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/powerkoria/archive/2008/12/22/3583140.aspx

2009年10月23日
 
查看文章
   
如何在Linux下两台服务器之间使用scp拷贝时不需要输入密码?
2008-12-23 15:46

在使用crontab定时执行程序,其中运行完后需要向另一台服务器拷贝数据。用scp时总提示需要输入密码,如何不用输入密码呢?使用ssh-keygen搞定!
假设我是从服务器A(ip为172.17.10.8)到B(ip为172.17.10.9)。
1、使用ssh-keygen 命令生成密钥,一路回车即可。
在服务器A上
[zhj@localhost ~]$ cd ~/.ssh/
[zhj@localhost .ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/zhj/.ssh/id_rsa):
/home/zhj/.ssh/id_rsa already exists.
Overwrite (y/n)? y //如果生成过,则会提示是否覆盖,敲y回车继续。
Enter passphrase (empty for no passphrase): //不用输,直接回车
Enter same passphrase again: //不用输,直接回车
Your identification has been saved in /home/zhj/.ssh/id_rsa.
Your public key has been saved in /home/zhj/.ssh/id_rsa.pub.
The key fingerprint is:
8f:73:86:07:ff:5f:b2:7c:30:a4:ab:41:26:06:ce:83 zhj@localhost.localdomain

2、把这个密钥对中的公共密钥(id_rsa.pub)然后复制到服务器B上去,并改名为 authorized_keys
[zhj@lse .ssh]$ scp id_rsa.pub zhj@172.17.10.9:~/.ssh/authorized_keys

这样,在从服务器A到B使用ssh时,也不用输入密码了,真省事。

同理,如果从服务器B到服务器A也不输入密码,则在B上生成公共密钥,将id_rsa.pub拷贝到A的.ssh目录下,重命名为authorized_keys,如果有多个服务器之间实现无密码访问,则将id_rsa.pub追加到authorized_keys文件中即可。