赞
踩
静态和动态链接
链接主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正确地衔接,分为静态链接和动态链接
静态链接
1、把程序对应的依赖库复制一份到包
2、libxxx.a
3、嵌入程序包
4、升级难,需重新编译
5、占用较多空间,迁移容易
动态链接
1、只把依赖加做一个动态链接
2、libxxx.so
3、连接指向
4、占用较少空间,升级方便
动态库和静态库的区别如下图;
C程序静态链接
Java程序运行
java 字节码,号称一次编译,到处运行
编译好以后可以运行在不能的平台上,因为它内部有java虚拟机,分不同平台的虚拟机wins 虚拟机、linux虚拟机
内部是通过java编译器来操作
/lib64 共享库
Debian dpkg
1、dpkg 包管理器已经打包好,路径无需自己指定
2、.deb文件安装 dpkg -i .deb
redhat rpm
1、rmp包管理器
2、rpm -ivh
包命名
源代码:name-VERSION.tar.gz|bz2|xz
VERSION: major.minor.release
rpm包命名方式:
name-VERSION-release.arch.rpm
例:bash-4.2.46-19.el7.x86_64.rpm
1、bash-4.2.46 开源软件版本号
2、19.el7.x86_64 整体指的是发行版,19 指的是打包次数 el7 redhat企业版7
VERSION: major.minor.release
release:release.OS
常见的arch:
x86: i386, i486, i586, i686
x86_64: x64, x86_64, amd64
powerpc: ppc
跟平台无关:noarch
实现盘自动挂载方式:
systemctl start autofs
systemctl enable autofs
这个路径适用于centos6、centos7
cd /misc/cd/Packages
查看不同平台的rpm包
cd /misc/cd/Package
[root@centos7 Packages]#ls *.rpm |rev|cut -d. -f2|rev|sort |uniq -c
1385 noarch
2636 x86_64
[root@centos7 Packages]#ls *.rpm|sed -r 's/.*\.(.*)\.rpm$/\1/'|sort|uniq -c
1385 noarch
2636 x86_64
centos7 以后不支持32位
/lib64 是共享库,很多程序都需要借助里面的库文件,如果移除危害很大,慎操作
库文件
查看二进制程序所依赖的库文件
ldd /PATH/TO/BINARY_FILE
管理及查看本机装载的库文件
ldconfig 加载配置文件中指定的库文件
/sbin/ldconfig –p 显示本机已经缓存的所有可用库文件名及文件路径映射关系
配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
缓存文件:/etc/ld.so.cache
对于Vmware来说,选择光盘重置的办法;
1、选择 "重置",重置相当于物理关机,而非命令行关机
2、出现开机的进度条,立马敲"ESC",可以露出启动方式
3、选择"CD-RAM Drive"
4、选择:troube shutting
5、选择rescue ;救援模式,绕过硬盘故障
6、如果对于删除的文件,需要安装rpm -ivh /run/install/Package/*.rpm --root=/mnt/sysimage ,要装在/root下。而非安装在当前目录
ldconfig -p #查看硬盘中加载的共享库
包管理器
程序包管理器:
功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而
方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作
包文件组成 (每个包独有)
RPM包内的文件
RPM的元数据,如名称,版本,依赖性,描述等
安装或卸载时运行的脚本
RPM包依赖于/var/lib/rpm数据库,里面记录了程序名称及版本;依赖关系、功能说明、安装后生成的各个文件路径和校验码
如果此数据库破坏,基本不能用。每次安装rpm包,都会从这个路径下检索,如果已经安装则不会再次安装
程序包的来源
管理程序包的方式:
使用包管理器:rpm
使用前端工具:yum, dnf
获取程序包的途径:
(1)系统发版的光盘或者官方服务器
CentOS镜像:
(2)项目官方站点
(3) 第三方组织:
Fedora-EPEL:
Extra Packages for Enterprise Linux
Rpmforge:RHEL推荐,包很全
搜索引擎:
Compare, Download & Develop Open Source & Business Software - SourceForge
(4) 自己制作
注意:第三方包建议要检查其合法性:来源合法性,程序包的完整性
rpm包管理
CentOS系统上使用rpm命令管理程序包:
安装、卸载、升级、查询、校验、数据库维护
安装:
rpm {-i|--install} [install-options] PACKAGE_FILE …
-v: verbose
-vv: 更加详细的过程
-h: 以#显示程序包管理执行进度
之前一直执行这个命令,却不知道h的含义。。。。。
rpm 命令检查包的具体来源
上面所说的每安装rpm包,/var/lib/rpm,此时查看发现已经更新时间了
rpm包安装
[install-options]
--test: 测试安装,但不真正执行安装,即dry run模式
--nodeps:忽略依赖关系
--replacepkgs | replacefiles
--nosignature: 不检查来源合法性
--nodigest:不检查包完整性
--noscripts:不执行程序包脚本
%pre: 安装前脚本 --nopre
%post: 安装后脚本 --nopost
%preun: 卸载前脚本 --nopreun
%postun: 卸载后脚本 --nopostun
rpm安装时有时报错缺少依赖,可以加参数来忽略依赖,但安装的包依旧用不了 --nodeps:忽略依赖关系
rpm -q mariadb 查看是否安装 #q query 查询 mariadb 只需输入服务名称,不用加版本号
rpm -e mariadb 卸载
rpm -ql tree 查看包中包含哪些文件
[root@centos7 Packages]#rm -f /usr/bin/tree
[root@centos7 Packages]#rpm -ivh /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm
warning: /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing... ################################# [100%]
package tree-1.6.0-10.el7.x86_64 is already installed
可以使用 --replacepkgs 全覆盖
[root@centos7 ~]#rpm -ivh /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm --replacekgs
只覆盖冲突的包 replacefiles
rpm -qi Package #i 表示 information
查看程序包是否有脚本
[root@centos7 usr]#rpm -q --scripts tree
磁盘里面的包,安装脚本
[root@centos7 usr]#rpm -q --scripts /misc/cd/Package/......
rpm包升级
升级:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
rpm {-F|--freshen} [install-options] PACKAGE_FILE...
upgrade:安装有旧版程序包,则“升级”
如果不存在旧版程序包,则“安装”
freshen:安装有旧版程序包,则“升级”
如果不存在旧版程序包,则不执行升级操作
rpm -Uvh PACKAGE_FILE ...
rpm -Fvh PACKAGE_FILE ...
--oldpackage:降级
--force: 强制安装
******注意******
(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此直接安装新版本内核
(2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文
件不会直接覆盖老版本的配置文件,而把新版本文件重命名(FILENAME.rpmnew)后
保留
(3) 升级会遇到很多不可预知的问题,建议有问题重装即可
包查询
rpm {-q|--query} [select-options] [query-options]
[select-options]
-a:所有包
-f:查看指定的文件由哪个程序包安装生成
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
rpm2cpio 包文件|cpio –itv 预览包内文件
rpm2cpio 包文件|cpio –id “*.conf” 释放包内文件
rpm -qa |grep Package 查看包是否已安装
rpm包格式的改成cpio格式的,然后预览:
rpm2cpio /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm |cpio -tv
压缩成cpio格式的:
rpm2cpio /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm |cpio -idv ./usr/bin/tree
这样的方法只是手工打包出来,文件属性不像rpm包打包的文件属性,使用时候小心谨慎
[query-options]
--changelog:查询rpm包的changelog
-c:查询程序的配置文件
-d:查询程序的文档
-i:information
-l:查看指定的程序包安装后生成的所有文件
--scripts:程序包自带的脚本
--provides:列出指定程序包所提供的CAPABILITY
-R:查询指定的程序包所依赖的CAPABILITY
包卸载:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers][--test] PACKAGE_NAME ...
当包卸载时,对应的配置文件不会删除, 以FILENAME.rpmsave形式保留
查看磁盘中的文件来自与哪个包
[root@centos7 cmatrix]#rpm -qf /usr/bin/tree
tree-1.6.0-10.el7.x86_64
查看文件列表 p 整个文件路径,而非包本身
rpm -qpi /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm
rpm -q --whatrequires /bin/bash
哪些包需要依赖bash
bash 是需要依赖哪个包
[root@centos7 usr]#rpm -q --whatprovides /bin/bash
bash-4.2.46-31.el7.x86_64
包校验
rpm {-V|--verify} [select-options] [verify-options]
S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P capabilities differ
导入所需要公钥
rpm -K|checksig rpmfile 检查包的完整性和签名
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7
rpm -qa “gpg-pubkey*”
[root@centos7 ~]#chown ttyang /bin/tree
[root@centos7 ~]#ll /bin/tree
-rwxr-xr-x 1 ttyang root 62768 Jun 10 2014 /bin/tree
查看rpm包属性
[root@centos7 ~]#rpm -V tree
.....U... /usr/bin/tree #U 代表所有者发生变化
查看硬盘里包文件是否修改, -a 参数指的是所有文件
[root@centos7 ~]#rpm -Va
检验包:
cat /misc/cd/RPM-GPG-KEY-CentOS-7
将上述此文件导入
rpm --import /misc/cd/RPM-GPG-KEY-CentOS-7
密钥:
[root@centos7 ~]#rpm -qa "gpg-pubkey*"
gpg-pubkey-f4a80eb5-53a7ff4b
[root@centos7 ~]#rpm -qi gpg-pubkey-f4a80eb5-53a7ff4b
卸载密钥:
[root@centos7 ~]#rpm -e gpg-pubkey-f4a80eb5-53a7ff4b
rpm -K 校验,确保来源合法
root@centos7 ~]#rpm -K tree-1.6.0-10.el7.x86_64.rpm
===================================================================
底层原理:
yum 安装可以解决包依赖的问题
1、yum是用python写的程序,底层是rpm,如果把rpm数据库破坏,yum也将不能使用
2、yum是C/S模式,需要实现建yum服务器,分为2大块:要安装的文件列表+仓库;仓库里面包含的所有rpm包和元数据(metadata),并且包分组也在元数据里面;还要说的是存储metadata的包称作repodata
3、yum的客户端需要配置,/etc/yum.repos.d/*.repo ,在配置文件里写清楚文件路径
配置好以后,获取yum的流程如下-- yum install httpd 底层原理
1、查询本地底层repo的源文件,是否配置仓库
2、找到互联网的yum服务器,查看metadata,是否有依赖。客户端将(metadata)元数据下载到缓冲区中
3、连接到缓冲区,下载好rpm包,rpm安装好以后一般会卸载,metadata 会缓存下来,以便后续下载使用
=====================================================================
对于光盘而言,cd /misc/cd/Package/ 里面有repodata,就说明有yum源
cat CentOS-Base.repo
[base] # 名字自定义,必须唯一
name=CentOS-$releasever - Base #描述性的文字
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #把仓库信息放在文件路径下
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ # 仓库路径; $指的是变量 CPU架构的主版本号、操作系统版本号
gpgcheck=1 # 检查包是否合法
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #密钥
[root@centos7 yum.repos.d]#pwd
/etc/yum.repos.d
将此路径下的以.repo 结尾的文件移除到另外一个文件夹bak,如果不移除的话,就会进行干扰
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
**************************************************************
基础base.repo 配置是这样的
[root@centos7 yum.repos.d]#cat base.repo
[base]
name=cdrom base
baseurl=file:///misc/cd
gpgcheck=0
***************************************************************
enabled=0 默认启用; 0是禁用,1是启用
gpgcheck=1 默认是1,启用
yum repolist 列出所有仓库信息
配置epel源如下所示
*****************************************************************
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/$releasever/$basearch/
gpgcheck=0
enabled=1
*******************************************************************
#删除已经配置好的源,切记找对路径如要误删
rm -rf /var/cache/yum/*
#查看当前可用yum源
yum repolist
#查看所有yum源,包含禁用的
yum repolist all
下载好以后,yum源路径在 /var/cache/yum/x86_64/7
[root@centos7 cache]#ls /var/cache/yum/x86_64/7/
base epel timedhosts timedhosts.txt
#其中base是本地源, epel是手动配置好的源
后续如果出现yum源的问题,就可以从下面2个方面分析;
1、路径写错了
2、缓存
rpm数据库
数据库重建:
/var/lib/rpm
rpm {--initdb|--rebuilddb}
initdb: 初始化
如果事先不存在数据库,则新建之
否则,不执行任何操作
rebuilddb:重建已安装的包头的数据库索引目录
有时网络不通,采用桥接方式连接,需要yum安装文件,默认就在epel 源里下载,此时需要禁用epel源,选择本地安装
alias disepel='sed -ri /enabled/s/enabled=1/enabled=0/ /etc/yum.repos.d/base.repo'
alias epel='sed -ri /enabled/s/enabled=0/enabled=1/ /etc/yum.repos.d/base.repo'
[root@centos7 yum.repos.d]#cat base.repo
[base]
name=cdrom base
baseurl=file:///misc/cd
https://mirrors.aliyun.com/epel/$releasever/$basearch/
#可以写两个路径
gpgkey=file:///misc/cd/RPM-GPG-KEY-CentOS-7 #安全起见,第一次装会询问是否安装key
#gpgcheck=1
failovermethod={roundrobin|priority}
roundrobin:意为随机挑选,默认值
priority:按顺序访问
cost= 默认为1000 #cost数值越大,说明代价越大,优先级越低
yum命令
yum命令的用法:
yum [options] [command] [package ...]
显示仓库列表:
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] [...] (重新安装)
升级程序包:
yum update [package1] [package2] [...]
yum downgrade package1 [package2] [...] (降级)
检查可用升级:
yum check-update
卸载程序包:
yum remove | erase package1 [package2] [...]
查看程序包information:
yum info [...]
查看指定的特性(可以是某文件)是由哪个程序包所提供:
yum provides | whatprovides feature1 [feature2] [...]
清理本地缓存:
清除/var/cache/yum/$basearch/$releasever缓存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins |
构建缓存:
yum makecache
搜索:yum search string1 [string2] [...]
以指定的关键字搜索程序包名及summary信息
查看指定包所依赖的capabilities:
yum deplist package1 [package2] [...]
yum的日志
cat /var/log/yum.log
yum的安装历史
[root@centos7 log]#yum history
Loaded plugins: fastestmirror, langpacks
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
2 | ttyang <ttyang> | 2020-08-21 22:12 | Install | 1 <
1 | System <unset> | 2020-07-01 23:57 | Install | 1382 >
history list
查看上述说列出来ID为2的信息;
[root@centos7 log]#yum history info 2
Loaded plugins: fastestmirror, langpacks
Transaction ID : 2
Begin time : Fri Aug 21 22:12:08 2020
Begin rpmdb : 1386:4f7527a1defed85d7f6150bf5b1abbb07ee007fc
End time : 22:12:09 2020 (1 seconds)
End rpmdb : 1387:cad1f514c75ebd89c1f01b928cd4a53f5ef20814
User : ttyang <ttyang>
Return-Code : Success
Command Line : install sl
Transaction performed with:
Installed rpm-4.11.3-35.el7.x86_64 @anaconda
Installed yum-3.4.3-161.el7.centos.noarch @anaconda
Installed yum-plugin-fastestmirror-1.1.31-50.el7.noarch @anaconda
Packages Altered:
Install sl-5.02-1.el7.x86_64 @epel
history info
删除依赖
yum history undo 2
撤销依赖
yum history redo 2
rpm安装某些包时,因为依赖而无法安装
[root@centos7 ~]#rpm -ivh /misc/cd/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm
error: Failed dependencies:
/etc/mime.types is needed by httpd-2.4.6-88.el7.centos.x86_64
httpd-tools = 2.4.6-88.el7.centos is needed by httpd-2.4.6-88.el7.centos.x86_64
libapr-1.so.0()(64bit) is needed by httpd-2.4.6-88.el7.centos.x86_64
libaprutil-1.so.0()(64bit) is needed by httpd-2.4.6-88.el7.centos.x86_64
/etc/mime.types是所需要的包
[root@centos7 ~]#yum provides /etc/mime.types
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
mailcap-2.1.41-2.el7.noarch : Helper application and MIME type associations for file types
Repo : base
Matched from:
Filename : /etc/mime.types
需要准备依赖的包 mailcap-2.1.41-2.el7.noarch
重装
yum reinstall COMMAND
后续安装rpm包,可以直接yum,直接跳过依赖
yum install /misc/cd/Packages/*.rpm
yum命令
查看程序包information:
yum info [...]
查看包依赖于哪个文件
[root@centos7 ~]#yum deplist httpd
DNF (DaNdiFied)
DNF介绍:新一代RPM软件包管理器,是用python编写的,红帽8.0版本取代了yum,DNF包管理器克服了YUM包管理器的一些瓶颈,提升
了包括用户体验,内存占用,依赖分析,运行速度等。
安装所需软件包,依赖epel源
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/dnf-conf-0.6.4-2.sdl7.noarch.rpm
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64//dnf-0.6.4-2.sdl7.noarch.rpm
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/python-dnf-0.6.4-2.sdl7.noarch.rpm
yum install python-dnf-0.6.4-2.sdl7.noarch.rpm dnf-0.6.4-2.sdl7.noarch.rpm dnf-conf-0.6.4-2.sdl7.noarch.rpm python2-libcomps-0.1.8-3.el7.x86_64.rpm libcomps-0.1.8-3.el7.x86_64.rpm
配置文件:/etc/dnf/dnf.conf
仓库文件:/etc/yum.repos.d/ *.repo
日志: /var/log/dnf.rpm.log
DNF 使用与yum一样
程序包编译
程序包编译安装:
Application-VERSION-release.src.rpm --> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装
源代码-->预处理-->编译-->汇编-->链接-->执行
源代码组织格式:
多文件:文件中的代码之间,很可能存在跨文件依赖关系
C、C++:make 项目管理器
configure脚本 --> Makefile.in --> Makefile
java: maven
编译安装
C语言源代码编译安装三步骤:
1、./configure
(1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的 指定以及Makefile.in文件生成Makefile
(2) 检查依赖到的外部环境,如依赖的软件包
2、make 根据Makefile文件,构建应用程序
3、make install 复制文件到相应路径
开发工具:
autoconf: 生成configure脚本
automake:生成Makefile.in
注意:安装前查看INSTALL,README
编译C源代码:
准备:提供开发工具及开发环境
开发工具:make, gcc等
开发环境:开发库,头文件
glibc:标准库
实现:通过“包组”提供开发组件
Development Tools
Server Platform Development
生产实践:(基于最小化安装的系统)
yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree screen lsof tcpdump wget ntpdate net-tools iotop bc zip unzip nfs-utils
==============================================================
具体步骤:
第一步:configure脚本
选项:指定安装位置、指定启用的特性
--help: 获取其支持使用的选项
选项分类:
安装路径设定:
--prefix=/PATH:指定默认安装位置,默认为/usr/local/
--sysconfdir=/PATH:配置文件安装位置
System types:支持交叉编译
Optional Features: 可选特性
--disable-FEATURE
--enable-FEATURE[=ARG]
注意:通常被编译操作依赖的程序包,需要安装此程序包的“开发”组件, 其包名一般类似于name-devel-VERSION
第二步:make
第三步:make install
安装后的配置:
(1) 二进制程序目录导入至PATH环境变量中
编辑文件/etc/profile.d/NAME.sh
export PATH=/PATH/TO/BIN:$PATH
(2) 导入帮助手册
编辑/etc/man.config|man_db.conf文件
添加一个MANPATH
==============================================================
Ubuntu 软件管理
Debian 软件包通常是预编译的二进制 制格式的扩展名“.deb”,类似rpm文件。 因此安装 快速,无需编译软件。
dpkg:package manager for Debian,类似于rpm, dpkg是基于Debian的系统的包 管理器。可以安装,删除和构建软件包,但无法自动下载和安装软件包或其依赖项。安装命令为dpkg -i *.deb
APT:Advanced Packaging Tool,功能强大的软件管理工具,甚至可升级整个Ubuntu 的系统,基于客户/服务器架构
APT工作原理:在服务器上先复制所有DEB包,然后用APT的分析工具genbasedir根据 每个DEB 包的包头(Header)信息对所有的DEB包进行分析,并将该分析结果记录在文 件夹base内的一个DEB 索引清单文件中,一旦APT 服务器内的DEB有所变动,要使用 genbasedir产生新的DEB索引清单。客户端在进行安装或升级时先要查询DEB索引清单, 从而获知所有具有依赖关系的软件包,并一同下载到客户端以便安装。当客户端需要安 装、升级或删除某个软件包时,客户端计算机取得DEB索引清单压缩文件后,会将其解 压置放于 /var/cache/apt/,而客户端使用apt-get install或apt-get upgrade命令的时 候,就会将这个文件夹内的数据和客户端计算机内的DEB数据库比对,知道哪些DEB已 安装、未安装或是可以升级的。
dpkg常见用法: man dpkg
dpkg -i * 安装
dpkg -r * 删除包,不建议,不自动卸载依赖于它的包
dpkg -P * 删除包(包括配置文件)
dpkg -l 列出当前已安装的包,类似rpm -qa
dpkg -l package 显示该包的简要说明,类似rpm –qi
dpkg -L * 列出该包中所包含的文件,类似rpm –ql
dpkg -S * 搜索包含pattern的包,类似rpm –qf
dpkg -s * 列出该包的状态,包括详细信息,类似rpm –qi
dpkg --configure package 配置包,-a 使用,配置所有没有配置的软件包
dpkg -c package.deb 列出 deb 包的内容,类似rpm –qpl
dpkg --unpack package.deb 解开 deb 包的内容
例子:
查看/bin/bash来自于哪个软件包
dpkg -S /bin/bash
安装本地的 .deb 文件
dpkg -i /mnt/cdrom/pool/main/z/zip/zip_3.0-11build1_amd64.deb
卸载软件包
dpkg -r zip
注意:一般建议不要使用dpkg卸载软件包。因为删除包时,其它依赖它的包不 会卸载,并且可能无法再正常运行
1、Ubuntu 16.04 之前, 在基于 Debian 的 Linux 发 行版中,有各种工具可以与 APT 进行交互,以方便用户安装、删除和管理的软件包。 apt-get 是其中一个常用的命令行工具,另外一款较为流行的命令行与 GUI 兼顾的工 具是 aptitude ,之前最常用的 Linux 包管理命令都被分散在了 apt-get、apt-cache 和 apt-config 这三条命令中。在Ubuntu 16.04 之后, apt 相当于 apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。
2、 apt 与 apt-get 有一些类似的命令选项,但它并不能完全向下兼容 apt-get 命令,也即 可用 apt 替换部分 apt-get 系列命令,但不是全部。
3、具体用法可以查看帮助:apt help
4、 apt 特有的命令
apt list 列出包含条件的包(已安装,可升级等)
apt edit-sources 编辑源列表
5、 apt命令操作(如安装和删除软件包)记录在/var/log/dpkg.log日志文件中
6、 apt-cache madison 包名称 将列出所有来源的版本
例子:
apt示例:
安装包: apt install tree zip
删除包: apt remove tree zip
说明:apt remove中添加--purge选项会删除包配置文件,谨慎使用
更新包索引: apt update
升级包:要升级系统,请首先更新软件包索引,再升级
apt upgrade
yum search Package 搜索包
编辑环境变量
vim /etc/profile.d/env.sh
执行生效
. /etc/profile.d/env.sh
查看是否生效
echo $PATH
设置开机自起:
vim /etc/rc.d/rc/local
将http 服务启动命令添加进去
/apps/httpd24/bin/apachectl start
然后修改可执行权限
chmod +x /etc/rc.d/rc.local
服务是持续的,并且是一个大软件,必须设置开机自起
如果只有命令行,非图形化界面,对于centos系统,可以安装一个包组
yum install GNOME Desktop
Ubuntu 中的仓库系统已经配置好了,无需手工干预
apt update
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。