一沙一世界 一树一菩提
分类: LINUX
2013-01-10 23:00:54
Windows系统中,通常使用应用软件自带的安装、卸载程序或在控制面板中的添加/ 删除程序来操作。整个过程操作简单方便,一目了然。
对于新手来说,Linux软件的安装和卸载一直都是困扰他们的问题。与Windows相类似,在Linux下也有功能强大的软件安装卸载工具:apt(Debian/Ubuntu系统), rpm(Redhat系统)。这些工具可以方便地查询、安装、卸载、升级软件,该工具是在命令行下使用的。输入man apt可了解详细用法,常用的有apt-cache, apt-get。
和该软件包安装风格类似的还有:Perl中使用cpan管理perl module的安装;PHP的pecl/pear可以完成php module和PEAR package的下载和安装等。
另外,Linux风格的软件一般都包括:配置文件(一般位于conf或/etc目录)、可执行文件(位于bin目录)、库文件(位于lib目录)、头文件(位于include目录)、帮助文档(位于man或doc目录)、日志文件(位于log目录)等。了解这些有助于举一反三、灵活使用。
【apt安装软件过程】根据/etc/apt/sources.list定义的源查找需要的package,下载到本地/var/cache/apt/archives,再安装。
【/etc/apt/sources.list文件】此文件中保存apt可以获取/下载软件包的源。格式类似与:
deb squeeze main deb http://security.debian.org/ squeeze/updates main可用的官方源可以从这里查找:
源是分布在世界各地用于存放软件包的服务器。修改了该文件需要运行apt-get update更新。
0。更新软件包源列表apt-get update
在修改/etc/apt/sources.list或/etc/apt/preferences之後需要运行该命令确保软件包列表是最新的。
1。apt命令:搜索软件包apt-cache search keyword
apt-file search filename
如果知道该package包含的某个文件的文件名,可以使用如上方法查找;需要安装apt-file。
apt-file是一个独立的软件包,安装使用sudo apt-get install apt-file;然后运行apt-file update;如果apt-file search filename输出的内容太多,可尝试使用apt-file search filename | grep -w filename。
2。apt命令:查看package信息apt-cache show package-name //查看包的详细信息
apt-cache showpkg package-name //查看包的概要信息
apt-cache show package-name | grep Version //仅仅查看版本信息
apt-show-versions package-name //显示包的版本信息
3。apt命令:安装包apt-get install package-name
apt-get install package-name1 package-name2 ...
apt-get install package-name1 package-name2-
安装package-name1的同时卸载package-name2
apt-get --reinstall install package-name
如果已经安装的软件包损坏希望重新安装可以使用如上命令。
apt-get install package-name=version
例如:apt-get install php5=5.3.3-7
有时候安装的时候会出现broken dependencies,这个时候可能需要安装为指定的旧的版本。
如果已经安装了最新版本,希望重新安装为旧的版本(降级安装),使用:
apt-get --reinstall install package-name=version
apt-cache depends package-name
auto-apt run command
例如:auto-apt run ./configure,会自动使用apt-get安装依赖的包。
4。apt命令:卸载包apt-get remove package-name
如上的卸载,软件的configuration files仍旧存在。
apt-get --purge remove package-name
apt-get --purge remove package-name1 package-name2+
在软件包名称之后添加’+',如上卸载package-name1,安装package-name2。
apt-get autoremove
//Remove automatically all unused packages
5。apt命令:系统升级apt-get upgrade
apt-get -u upgrade //可以罗列出需要升级的软件(推荐)
apt-get dist-upgrade
apt-get -u dist-upgrade //推荐
6。apt命令:删除不需要的安装包如上apt会将软件包下载到本地/var/cache/apt/archives/,然后安装。如果安装的软件包太多,会占据磁盘空间。使用clean和autoclean可以删除这些安装包。
apt-get clean
删除所有安装包
apt-get autoclean
保留最新版的安装包,删除旧版的。
7。其他技巧dpkg -l
dpkg -l package-name-pattern
//列出已经安装的与模式相匹配的软件包;如果您不知道软件包的全名,您可以使用*package-name-pattern*。
dpkg -S file
dpkg -L package-name
【apt安装可能遇到的其他问题】安装的时候遇到Broken packages问题(安装旧版本/软件包降级)使用apt安装软件包(apt-get install package-name 或者 apt-get --reinstall install package-name),默认会寻找source中包含软件的最新版进行下载安装。
有时候安装的时候可能遇到依赖包版本不匹配情况,例如:
今天在ubuntu10.04上安装libxml2-dev,执行sudo apt-get install libxml2-dev提示错误信息:
The following packages have unmet dependencies: libxml2-dev: Depends: libxml2 (=2.7.6.dfsg-1ubuntu1) but 2.7.6.dfsg-1ubuntu1.1 is to be installed E: Broken packages分别查看当前source中libxml2和libxml2-dev的版本信息:
apt-cache show libxml2 | grep Version 得到: Version: 2.7.6.dfsg-1ubuntu1.1 Version: 2.7.6.dfsg-1ubuntu1 apt-cache show libxml2-dev | grep Version 得到 Version: 2.7.6.dfsg-1ubuntu1结果说明当前已经安装的libxml2版本是Version: 2.7.6.dfsg-1ubuntu1.1,而将要安装的libxml2-dev的版本要求是Version: 2.7.6.dfsg-1ubuntu1。已经安装的libxml2版本过新。
解决方法有2个
可以从这里搜索package的名称libxml2-dev,了解该package的最新版本;如果有最新版,从选择包含该版本的source,添加到/etc/apt/sources.list中。如果没有可用的最新版,则失败。
方法有2个:
a. 简单的方法(推荐):
sudo apt-get --reinstall install libxml2=2.7.6.dfsg-1ubuntu1
重新安装libxml2并指定版本
b. 稍微复杂的方法:
sudo vi /etc/apt/preferences
编辑preferences文件,例如这里需要把package: libxml2从2.7.6.dfsg-1ubuntu1.1降级到2.7.6.dfsg-1ubuntu1,可以输入:
Package: libxml2 Pin: version 2.7.6.dfsg-1ubuntu1 Pin-Priority: 1001//Note, that the Pin-Priority has to be over 1000 if you are going back to an older version of a package.
保存preferences文件,然后输入sudo apt-get install libxml2就会完成libxml2的降级,获取到旧的指定版本。
如上的意思是设定(pin)包libxml2使用指定的版本。
该方法的缺点:以后apt-get upgrade或update manager在检测更新的时候不会检测该package的更新。
Keep in mind that this package version will be “pinned” and no future updates to that package will be picked up by the update manager. For further information on this subject look at the man pages for apt_preferences.