笔记·软件管理
软件包基础
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/
rpm包管理
rpm包安装:
#rpm -ivh PACKAGE_FILE ...
--test: 测试安装,但不真正执行安装,即dry run模式
--nodeps:忽略依赖关系
--replacepkgs | replacefiles
--nosignature: 不检查来源合法性
--nodigest:不检查包完整性
--noscripts:不执行程序包脚本
%pre: 安装前脚本 --nopre
%post: 安装后脚本 --nopost
%preun: 卸载前脚本 --nopreun
%postun: 卸载后脚本 --nopostun
rpm包升级
#rpm -Uvh PACKAGE_FILE ...
# rpm -Fvh PACKAGE_FILE ...
--oldpackage:降级
--force: 强制安装
包查询
-qa #所有包
-q PACKAGE #查询
-qi PACKAGE #information
-qc PACKAGE #查询程序的配置文件
-ql PACKAGE #查询程序安装后生成的所有文件
-qd PACKAGE #查询程序的文档
-q --scripts PACKAGE #程序包自带的脚本
-qf FILE #查询指定的文件由哪个程序包安装生成
-qpi PACKAGE_FILE #针对尚未安装的包查询信息
-qpl PACKAGE_FILE, ... #针对尚未安装的包查询生成的文件
#和CAPABILITY相关
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
--provides:列出指定程序包所提供的CAPABILITY
-R:查询指定的程序包所依赖的CAPABILITY
包卸载
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
#rpm -e rpm --nodeps
包校验
#rpm -K|--checksig rpmfile
在检查包的来源和完整性前,必须导入所需要公钥
#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#rpm -qa "gpg-pubkey*"
yum管理
yum客户端配置文件:
/etc/yum.conf #为所有仓库提供公共配置
/etc/yum.repos.d/*.repo: #为每个仓库的提供配置文件
repo仓库配置文件指向的定义:
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
roundrobin:意为随机挑选,默认值
priority:按顺序访问
cost= 默认为1000
yum服务器的baseurl形式:
file:// 本地路径
http://
https://
ftp://
yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号,如:8,7,6
$arch: CPU架构,如:aarch64, i586, i686,x86_64等
$basearch:系统基础平台;i386, x86_64
$contentdir:表示目录,比如:centos-8,centos-7
$YUM0-$YUM9:自定义变量
yum-config-manager命令:可以生成yum仓库的配置文件及启用或禁用仓库,来自于yum-utils包
#rpm -qf `which yum-config-manager`
#增加仓库 yum-config-manager --add-repo URL或file
#禁用仓库 yum-config-manager --disable "仓库名"
#启用仓库 yum-config-manager --enable "仓库名"
yum命令:
#yum [options] [command] [package ...]
-y #自动回答为"yes"
-q #静默模式
--nogpgcheck #禁止进行gpg check
--enablerepo=repoidglob #临时启用此处指定的repo,支持通配符,如:"*"
--disablerepo=repoidglob #临时禁用此处指定的repo,和上面语句同时使用,放在后面的生效
#yum repolist [all|enabled|disabled] #显示仓库列表
#yum list #显示程序包
#yum list [all | glob_exp1] [glob_exp2] [...]
#yum list {available|installed|updates} [glob_exp1] [...] #显示可安装|已安装|可升级的包
#yum install package1 [package2] [...] #安装程序包
#yum reinstall package1 [package2] [...] #重新安装
--downloadonly #只下载相关包默认至/var/cache/yum/x86_64/7/目录下,而不执行install/upgrade/erase
--downloaddir=<path>, --destdir=<path> #--downloaddir选项来指定下载的目录,如果不存在自动创建
#yum remove | erase package1 [package2] [...] #卸载程序包
#yum check-update #检查可用升级
#yum upgrade|update [package1] [package2] [...]
#yum downgrade package1 [package2] [...] (降级)
#yum info [...] #查询
#yum provides | whatprovides feature1 [feature2] [...] #查看指定的特性(可以是某文件)是由哪个程序包所提供
#yum search string1 [string2] [...] #以指定的关键字搜索程序包名及summary信息
#yum deplist package1 [package2] [...] #查看指定包所依赖的capabilities
#dnf repoquery -l memcached #CentOS 8 查看未安装包的文件列表
#repoquery -ql memcached #CentOS 7 查看未安装包的文件列表
#yum clean [ packages|metadata|expire-cache|rpmdb|plugins|all ] #清除目录/var/cache/yum/缓存
#yum makecache #构建缓存
#yum history [info|list|packages-list|packages-info|summary|addoninfo|redo|undo|rollback|new|sync|stats] #yum历史命令
#yum localinstall|install rpmfile1 [rpmfile2] [...] #安装本地程序包
#yum localupdate|update rpmfile1 [rpmfile2] [...] #升级本地程序包
#yum updateinfo --summary|--list|--info #查看包的安全警报
包组管理的相关命令:
#yum grouplist [hidden] [groupwildcard] [...]
#yum groupinstall group1 [group2] [...]
#yum groupupdate group1 [group2] [...]
#yum groupremove group1 [group2] [...]
#yum groupinfo group1 [...]
私用yum仓库:
下载所有yum仓库的相关包和meta数据:
#reposync --repoid=REPOID --download-metadata -p /path #CentOS7以前版本,reposync工具来自于yum-utils包
#dnf reposync --repoid=REPOID --download-metadata -p /path #默认只下载rpm包,不下载meta数据,需要指定--download-metadata才能下载meta
创建私有yum仓库:
#createrepo [options] <directory>
DNF管理:
配置文件:
/etc/dnf/dnf.conf
仓库文件:
/etc/yum.repos.d/ *.repo
日志文件:
/var/log/dnf.rpm.log
/var/log/dnf.log
命令:
#dnf [options] <command> [<arguments>...]
#dnf --version
#dnf repolist
#dnf reposync
#dnf install httpd
#dnf remove httpd
#dnf clean all
#dnf makecache
#dnf list installed
#dnf list available
#dnf search nano
#dnf history undo 1
编译安装:
第一步:运行 configure 脚本,生成 Makefile 文件
安装路径设定
System types:支持交叉编译
--prefix=/PATH:指定默认安装位置,默认为/usr/local/
--sysconfdir=/PATH:配置文件安装位置
软件特性和相关指定:
Optional Features: 可选特性
--disable-FEATURE
--enable-FEATURE[=ARG]
Optional Packages: 可选包
--with-PACKAGE[=ARG] 依赖包
--without-PACKAGE 禁用依赖关系
第二步:make
第三步:make install
Ubuntu软件管理
dpkg包管理器:
dpkg -i package.deb #安装包
dpkg -r package #删除包,不建议,不自动卸载依赖于它的包
dpkg -P package #删除包(包括配置文件)
dpkg -l #列出当前已安装的包,类似rpm -qa
dpkg -l package #显示该包的简要说明
dpkg -s package #列出该包的状态,包括详细信息,类似rpm –qi
dpkg -L package #列出该包中所包含的文件,类似rpm –ql
dpkg -S <pattern> #搜索包含pattern的包,类似rpm –qf
dpkg --configure package #配置包,-a 使用,配置所有没有配置的软件包
dpkg -c package.deb #列出 deb 包的内容,类似rpm –qpl
dpkg --unpack package.deb #解开 deb 包的内容
apt包管理:
apt命令 被取代的命令 命令的功能
apt install apt-get install 安装软件包
apt remove apt-get remove 移除软件包
apt purge apt-get purge 移除软件包及配置文件
apt update apt-get update 刷新存储库索引
apt upgrade apt-get upgrade 升级所有可升级的软件包
apt autoremove apt-get autoremove 自动删除不需要的包
apt full-upgrade apt-get dist-upgrade 在升级软件包时自动处理依赖关系
apt search apt-cache search 搜索应用程序
apt show apt-cache show 显示安装细节
apt 特有的命令:
#apt list 列出包含条件的包(已安装,可升级等)
#apt edit-sources 编辑源列表
APT包索引配置文件:
/etc/apt/sources.list
/etc/apt/sources.list.d
apt命令操作日志:
/var/log/dpkg.log
查询软件xxx依赖哪些包:
#apt depends xxx
#apt-cache depends xxx