当前位置:  首页  >  服务器技术  >  Linux/unix  >  Linux入门

Linux包管理命令与Ubuntu安装nginx详解

在linux下安装一些软件或服务的时候免不了要和rpm包和deb包打交道,他们是两种Linux系统下最常见的安装包格式。rpm包主要应用在RedHat系列包括Fedora等发行版的Linux系统上,deb包主要应用于Debian系列包括现在比较流行的Ubuntu等发行版上。二者对应的安装命令分别为rpm与dpkg。

在linux下安装一些软件或服务的时候免不了要和rpm包和deb包打交道,他们是两种Linux系统下最常见的安装包格式。rpm包主要应用在RedHat系列包括 Fedora等发行版的Linux系统上,deb包主要应用于Debian系列包括现在比较流行的Ubuntu等发行版上。 二者对应的安装命令分别为rpm与dpkg。

Ubuntu的软件包格式是deb,如果要安装rpm的包,则要先用alien把rpm转换成deb。alien安装与转换命令:
sudo apt-get install alien #安装alien
sudo alien xxxx.rpm #将rpm转换位deb,完成后会生成一个同名的xxxx.deb
sudo dpkg -i xxxx.deb #安装deb包

以往在Cent OS下可以使用rpm命令安装、卸载、升级和管理软件或检查是否安装了某个软件非常方便。常用命令:

rpm -q:查询系统是否已安装某软件包(-q就是–query)
rpm -qpl:列出.rpm软件包文件列表
rpm -i:安装指定的软件包到当前linux系统
rpm -ivh:安装指定的软件包时显示详细的安装信息
rpm -Uvh file.rpm  升级指定的软件包时显示详细的安装信息
rpm –force:强制安装软件包,将覆盖属于其他包的同名文件
rpm –nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。
rpm -e:卸载指定的软件包
rpm -U:升级指定的软件包(系统中未安装则进行安装)
rpm -a:查询所有已安装的软件包
rpm -f:查询包含有某文件的软件包
rpm -p:查询软件包文件为package file的软件包
rpm -s:显示软件包中文件的状态 states (暗含了 -l)。每个文件的状态是 normal, not installed, 或 replaced 其中之一。
rpm -v:输出冗余信息
rpm -ql gcc 列出所有已安装的rpm包中的文件列表 (等同于rpmquery -ql gcc或rpm -qa |grep gcc)
rpm -qi  查询所安装的rpm包详细信息(information)
rpm -qc 列出配置文件(/etc下的文件)
rpm -qd 列出帮助文件(man)
rpm -qf /bin/ls  查询一个已经安装的文件属于哪个软件包(需要存在已安装文件/bin/ls 才能查到)
rpm -qp 根据rpm包查询.rpm 文件,可以接其他参数(如i查详细信息,l查文件列表 等)
rpm -qR 列出需要的依赖套件

但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时。所以很多情况下我们出于方便,选择使用yum包管理器来进行安装。Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器(例如淘宝镜像、腾讯云、网易镜像等,可自己配置)自动下载RPM包并且安装,可以自动处理软件包的依赖关系,一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

Yum安装适用于RHEL/CentOS系列。YUM安装步骤:

1).使用vi命令创建nginx仓库描述信息文件: vi /etc/yum.repos.d/nginx.repo

在文件中增加如下内容:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1

根据你安装的系统不同,替换OS为你的系统名称,如:“rhel” 或 “centos”,

替换OSRELEASE为你的系统版本,如:“5”  或 “6”。

2).执行命令: yum install nginx 即可安装。

公司大部分服务器用的都是Linux Cent OS,使用rpm和yum比较熟练。但是yum安装只适用于RHEL/CentOS系列。今天遇到一个特殊的需求,网站代码要求部署到CP提供的Ubuntu系统服务器上。所以有必要再说一下deb的安装命令。

dpkg是一个Debian的一个命令行工具,它可以用来安装、删除、构建和管理Debian的软件包(.deb文件)。常用命令如下:

dpkg -i <.deb file name> 安装软件示例:dpkg -i avg71flm_r28-1_i386.deb
dpkg -R /usr/local/src 安装一个目录下面所有的软件包
dpkg -unpack package_file 释放.deb软件包,但不进行配置,如果和-R一起使用,参数可以是一个目录
dpkg -configure package_file 重新配置和释放软件包,如果和-a一起使用,将配置所有没有配置的软件包
dpkg -r 删除软件包(保留其配置信息)
dpkg -update-avail 替代软件包的信息
dpkg -merge-avail 合并软件包信息
dpkg -A package_file 从软件包里面读取软件的信息
dpkg -P 删除一个包(包括配置信息)
dpkg -forget-old-unavail 丢失所有的Uninstall的软件包信息
dpkg -clear-avail 删除软件包的Avaliable信息
dpkg -C 查找只有部分安装的软件包信息
dpkg -compare-versions ver1 op ver2 比较同一个包的不同版本之间的差别
dpkg -help 显示帮助信息
dpkg -licence/license 显示dpkg的Licence
dpkg -version 显示dpkg的版本号
dpkg -b directory [debfilename] 建立一个deb文件
dpkg -c filename 显示一个deb包的文件目录
dpkg -I filename [control-file] 显示一个deb的说明
dpkg -l package-name-pattern 搜索deb包,如:dpkg -I vim
dpkg -L 列出与该包先关联的文件
dpkg -l 显示所有已经安装的Deb包,同时显示版本号以及简短说明
dpkg -s package-name 报告指定包的状态信息
dpkg -L package-Name 显示一个包安装到系统里面的文件目录信息
dpkg -S filename-search-pattern 搜索指定包里面的文件(模糊查询)
dpkg -p package-name 显示包的具体信息

dpkg命令安装会绕过apt包管理数据库直接操作.deb软件包,所以用dpkg安装的软件包用apt再安装时,系统无法识别,将会覆盖之前dpkg方式安装的软件包。

dpkg用来安装.deb文件,一般用于安装本地的deb文件,但不会解决模块的依赖关系,且不会关心ubuntu的软件仓库内的软件。

apt工具自己会从软件源服务器上下载.deb包,下载完后自动安装。apt可以解决.deb安装包的依赖问题,并会咨询软件仓库, 但不会安装本地的.deb文件, 可以说apt是建立在dpkg之上的软件包管理工具。

Apt安装适用于debian系统。apt安装步骤:

1.使用vi命令增加nginx仓库描述信息: vi /etc/apt/sources.list

在文件中增加如下内容:

deb http://nginx.org/packages/debian/ codename nginx
deb-src http://nginx.org/packages/debian/ codename nginx

(以上ubuntu更新源source.list可自己更新,参考http://www.cnblogs.com/nexiyi/archive/2013/01/06/2847166.html)
如果是debian 6.x系统,替换codename为squeeze

如果是ubuntu系统,根据系统版本替换codename为下边的对应值:

支持的版本

Version    Codename
10.04    lucid
11.10    oneiric
12.04    precise
12.10    quantal

2.执行命令:

apt-get update #启用新的更新源
apt-get install nginx

常用的APT命令参数

apt-cache search package 搜索包
apt-cache show package 获取包的相关信息,如说明、大小、版本等
apt-cache depends package 了解使用依赖
apt-cache rdepends package 查看该包被哪些包依赖
sudo apt-get install package 安装包,apt会自动下载安装,若有依赖性软件包,apt也会自动下载安装
sudo apt-get install package –reinstall 重新安装包
sudo apt-get -f install 修复安装”-f = –fix-missing”
sudo apt-get remove package 删除包,如有依赖的软件包,则会一并移除
sudo apt-get remove package –purge 删除包,包括删除配置文件等
sudo apt-get update 更新源(该指令是用来取得记录在 /etc/apt/sources.list 内的远端服务器的软件包清单,在使用apt-get dist-upgrade指令升级软件前,一定要记得先用此指令将软件包清单更新)
sudo apt-get upgrade 更新已安装的软件包
sudo apt-get dist-upgrade 升级系统
sudo apt-get dselect-upgrade 使用 dselect 升级
sudo apt-get build-dep package 安装相关的编译环境
apt-get source package 下载该包的源代码
sudo apt-get clean && sudo apt-get autoclean 清理无用的包(当使用 apt-get install 指令安装后,下载的软件包会放置在 /var/cache/apt/archives,使用apt-get clean指令可将其删除)
sudo apt-get check 检查是否有损坏的依赖

aptitude与 apt-get 一样,是 Debian 及其衍生系统性能极其强大的包管理工具。基于APT机制, 整合了dselect和apt-get的所有功能,并具有更灵活的特性,特别是在依赖关系的处理上。比如,aptitude在删除一个包时,会同时删除自身所依赖的包,使得系统中不会残留大量无用的软件包。

关于aptitude的用法

安装软件包

dpkg -i package_name.deb #安装本地软件包,不解决依赖关系
apt-get install package #在线安装软件包,自动解决依赖关系
aptitude install pattern #同上

apt-get install package –reinstall #重新安装软件包
apitude reinstall package #同上

卸载软件包

dpkg -r package #卸载软件包
apt-get remove package #同上
aptitude remove package #同上

dpkg -P #卸载软件包及配置文件
apt-get remove package –purge #卸载软件包及配置文件
apitude purge pattern #同上

自动移除软件包

apt-get autoremove #删除不再需要的软件包
注:aptitude无须命令,卸载时它会自动删除无用的软件包

清除下载的软件包

apt-get clean #清除 /var/cache/apt/archives 目录
aptitude clean #同上

apt-get autoclean #清除 /var/cache/apt/archives 目录,不过只清理过时的包
aptitude autoclean #同上

编译相关 apt-get source package #获取源码

apt-get build-dep package #解决编译源码 package 的依赖关系
aptitude build-dep pattern #解决编译源码 pattern 的依赖关系

平台相关

apt-cross –arch ARCH –show package 显示属于 ARCH 构架的 package 软件包信息
apt-cross –arch ARCH –get package #下载属于 ARCH 构架的 package 软件包
apt-cross –arch ARCH –install package #安装属于 ARCH 构架的 package 软件包
apt-cross –arch ARCH –remove package #移除属于 ARCH 构架的 package 软件包
apt-cross –arch ARCH –purge package #移除属于 ARCH 构架的 package 软件包
apt-cross –arch ARCH –update #升级属于 ARCH 构架的 package 软件包

注:慎重考虑要不要用这种方法来安装不同构架的软件包,这样会破坏系统。对于 amd64 的用户可能需要强制安装某些 i386 的包,千万不要把原来 amd64 本身的文件给 replace 了。最好只是安装一些 lib 到 /usr/lib32 目录下。同样地,可以用 apt-file 看某个其它构架的软件包包含哪些文件,或者是文件属于哪个包,不过记得最先要用 apt-file –architecture ARCH update 来升级 apt-file 的数据库,在 search 或 show 时也要指定 ARCH。

更新源

apt-get update #更新源
aptitude update #同上

更新系统

apt-get upgrade #更新已经安装的软件包,如果依赖性改变(如需要新的依赖包),则保留原安装包,放弃升级。
aptitude safe-upgrade #同上
apt-get dist-upgrade #升级系统,升级的同时会为了解决依赖性而安装新套件
aptitude full-upgrade #同上

以上安装方式基本可满足大部用户的需求,若需要更为灵活的安装可选择源码编译方式安装。

正式开始前,编译环境需要提前安装好开发库gcc和g++(gcc-c++)。安装方式如下:

ububtu平台:

apt-get install build-essential
apt-get install libtool

centos平台:

安装make:

yum -y install gcc automake autoconf libtool make

安装gcc g++:

yum install gcc gcc-c++

1.确保你的系统已安装好了PCRE库(URL rewrite依赖此),zlib库(gzip压缩依赖此),OpenSSL库(开启HTTPS,数据传输加密、认证)。

假如源码的下载目录选定为/usr/local/src,具体的安装命令如下:

安装PCRE:

cd /usr/local/src
wget http://219.239.26.13/files/31370000064D0A62/jaist.dl.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
tar -zxvf pcre-8.37.tar.gz
cd pcre-8.37
./configure或者
./configure –prefix=/usr/local/pcre –enable-utf8 –enable-unicode-properties –enable-pcregrep-libz –enable-pcregrep-libbz2
make
make install

安装zlib:

cd /usr/local/src
wget http://zlib.net/zlib-1.2.8.tar.gz
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make
make install

安装openSSL:

apt-get purge openssl #卸载旧版本OpenSSL
rm -rf /etc/ssl #删除配置文件

cd /usr/local/src
wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
tar -zxvf openssl-1.0.1c.tar.gz

cd openssl-1.0.1c/

./config –prefix=/usr/local –openssldir=/usr/local/ssl(或./configure)
make && make install

./config shared –prefix=/usr/local –openssldir=/usr/local/ssl

make clean
make && make install

说明:prefix 是安装目录,openssldir 是配置文件目录(解压目录),另外建议安装两次,shared 作用是生成动态连接库。

2.下载nginx-*.tar.gz包。解压到你指定的目录,进入解压的目录。

3.设定配置参数,指定安装方式,附加模块等信息,具体请参考模块对应的说明文档。下边的命令只指定了安装目录。

./configure  –prefix = /usr/local/nginx
或者:
./configure –user=www –group=www –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module –with-http_gzip_static_module –with-pcre=/usr/local/src/pcre-8.37

4.编译安装。

make
make install

若终端未提示错误消息即表明安装成功。

吐了个 "CAO" !
RankList | 热门文章
扫码关注 PHP1 官方微信号
Recommend | 推荐阅读
PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有