如需了解从包管理器安装软件的相关知识,请参阅 软件安装基础。
如果官方提供了软件的安装方法,优先参考。
如果软件方有可访问的软件源,则优先选择软件方提供的软件源。
软件源无法访问时,选择镜像源,或直接从软件源的 URL 下载软件包,手动解决依赖问题。
如果能在二进制包和源码包之间选择,则优先选择前者。
如果你要对软件做定制、修改,则选择源码包。
/usr/local
)x
权限/usr/bin
或 /usr/sbin
创建指向软件的可执行文件的符号链接(推荐,具体看情况)PATH
中软件下载页面一般会同时提供校验方式。
如果提供的是 MD5 / SHA1 / SHA256 / SHA512,可以使用以下方式进行校验:
Linux:
md5sum 文件
sha1sum 文件
sha256sum 文件
sha512sum 文件
Windows(PowerShell):
Get-FileHash 文件 -Algorithm MD5
Get-FileHash 文件 -Algorithm SHA1
Get-FileHash 文件
Get-FileHash 文件 -Algorithm SHA512
如果提供 GPG 校验,一般会提供一个签名文件:
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEz9yiRbEEPPKl+Xhl/+h0BBaL2EcFAmI7glgACgkQ/+h0BBaL
......
bCCO6JUHFjyUpfb3XMupfMlXmAHlrW3edRdXSiXljyXkggK1rsU=
=TgaN
-----END PGP SIGNATURE-----
可以通过如下方式验证:
gpg --verify 签名文件 要校验的文件
一般会报错:
gpg: Signature made Thu 24 Mar 2022 04:26:00 AM CST
gpg: using RSA key CFDCA245B1043CF2A5F97865FFE87404168BD847
gpg: Can't check signature: No public key
此时需要先通过提供的 RSA Key 导入公钥(需联网):
gpg [--keyserver 如果提供了keyserver,填到这里] --receive-keys 显示的RSAKey
如果在公司内网,可以从 keyserver(如 https://keys.openpgp.org/)下载公钥。
公钥的格式一般如下:
-----BEGIN PGP PUBLIC KEY BLOCK-----
xsFNBFq+ToQBEADRYvIVtbK6owynD3j3nxwpW2KEk/p+aDvtXmc2SR2dBcZ8sFW2
R5vEsG8d3/D3wgv5pcL3KfNNXQYUnXVbobrFUUWQYc79qIsE3MgiPf5NVOtwKPUR
......
taQpepQlDyUcvSM2nTw4E6/zkzJKG/7J7f1y3Z1efw==
=9GnV
-----END PGP PUBLIC KEY BLOCK-----
然后离线导入公钥:
gpg --import 公钥文件
验证成功的标志为 Good signature
:
ding@ding-server:~$ gpg --verify Python-3.10.4.tgz.asc Python-3.10.4.tgz
gpg: Signature made Thu 24 Mar 2022 04:26:00 AM CST
gpg: using RSA key CFDCA245B1043CF2A5F97865FFE87404168BD847
gpg: Good signature from "Pablo Galindo Salgado <pablogsal@gmail.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: A035 C8C1 9219 BA82 1ECE A86B 64E6 28F8 D684 696D
Subkey fingerprint: CFDC A245 B104 3CF2 A5F9 7865 FFE8 7404 168B D847
ln
- 创建链接ln [选项] 源文件 要创建的链接文件
选项:
-s
:符号链接(默认为硬链接)-f
:如链接文件已存在,则删除再创建软件安装中,创建的一般是符号链接。
相当于 Windows 中的快捷方式。
实质上是一个文件,记录源文件的路径,故会对 inode 和磁盘空间有影响。
如果源文件被删、改名或移动,则链接会失效,在 ls
加上颜色时会显示出来;恢复源文件,链接恢复正常。
虽然在 Windows 中也可创建,但在 Windows 中较少用。
如果用 ls
查看,无法区分硬链接和源文件;对 inode 和磁盘空间几乎无影响。
不能跨文件系统,不能链接目录。
一些软件提供商只提供源码。如 Python 的官方实现 CPython,官方下载只有 Windows 和 macOS 版本提供二进制包,其他的只提供源码包。
make
)如果出错,不可进行下一步,建议处理问题后回退。
/usr/local/src
(一般需 root 权限)./configure
:建立 Makefilemake clean
:移除目标文件make
:根据 Makefile 中的默认设置进行编译make install
(一般需 root 权限):将编译内容安装到指定目录update-alternatives
CentOS 中需要 root 权限,Ubuntu 中部分需要。
实质是改变链接的指向,达到版本切换的目的。不仅可以处理文件,也可以处理目录。
也可以用于默认配置切换,如默认编辑器 editor
的关系图如下:
查看全部名称当前指向的位置:
update-alternatives --get-selections
arptables auto /usr/sbin/arptables-nft
awk auto /usr/bin/gawk
builtins.7.gz auto /usr/share/man/man7/bash-builtins.7.gz
c++ auto /usr/bin/g++
c89 auto /usr/bin/c89-gcc
c99 auto /usr/bin/c99-gcc
cc auto /usr/bin/gcc
cpp auto /usr/bin/cpp
...
查看单个名称的可选项:
update-alternatives --list editor
/bin/ed
/bin/nano
/usr/bin/vim.basic
/usr/bin/vim.tiny
更改可选项(交互):
ding@ding-server:~$ sudo update-alternatives --config editor
There are 4 choices for the alternative editor (providing /usr/bin/editor).
Selection Path Priority Status
------------------------------------------------------------
0 /bin/nano 40 auto mode
1 /bin/ed -100 manual mode
2 /bin/nano 40 manual mode
* 3 /usr/bin/vim.basic 30 manual mode
4 /usr/bin/vim.tiny 15 manual mode
Press <enter> to keep the current choice[*], or type selection number: 0
update-alternatives: using /bin/nano to provide /usr/bin/editor (editor) in auto mode
更改可选项(非交互,需要路径在前面的列表中,否则会报错):
sudo update-alternatives --set editor /usr/bin/vim.basic
以 Python 为例,先看有哪些命令:
ding@ding-server:~$ whereis python
python: /usr/bin/python3.8 /usr/bin/python3.8-config /usr/bin/python2.7 /usr/bin/python2.7-config /usr/bin/python /usr/lib/python3.8 /usr/lib/python2.7 /usr/lib/python3.9 /etc/python3.8 /etc/python2.7 /usr/local/bin/python3.10-config /usr/local/bin/python3.10 /usr/local/lib/python3.8 /usr/local/lib/python2.7 /usr/local/lib/python3.10 /usr/include/python3.8 /usr/include/python2.7 /usr/share/python /opt/workspace/bin/python3.8 /opt/workspace/bin/python
ding@ding-server:~$ whereis pip
pip: /usr/bin/pip /usr/local/bin/pip3.10 /usr/local/bin/pip /usr/local/bin/pip3.8 /opt/workspace/bin/pip /opt/workspace/bin/pip3.8 /usr/share/man/man1/pip.1.gz
至此我们整理相关文件路径如下:
# python
/usr/bin/python3.8
/usr/bin/python2.7
/usr/local/bin/python3.10
# python-config
/usr/bin/python3.8-config
/usr/bin/python2.7-config
/usr/local/bin/python3.10-config
# pip
/usr/local/bin/pip3.10
/usr/local/bin/pip3.8
系统一些功能(如 apt)依赖 3.8,故需要默认为 3.8 版本的。
基本格式:
sudo update-alternatives --install 链接路径 名称 指向路径 优先级
本例中执行的命令:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 50
sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.10 80
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 100
sudo update-alternatives --install /usr/bin/python2 python2 /usr/bin/python2.7 100
sudo update-alternatives --install /usr/bin/python-config python-config /usr/bin/python3-config 100
sudo update-alternatives --install /usr/bin/python-config python-config /usr/bin/python2-config 50
sudo update-alternatives --install /usr/bin/python3-config python3-config /usr/local/bin/python3.10-config 80
sudo update-alternatives --install /usr/bin/python3-config python3-config /usr/bin/python3.8-config 100
sudo update-alternatives --install /usr/bin/python2-config python2-config /usr/bin/python2.7-config 100
sudo rm /usr/bin/pip3 # 先删除原有的 /usr/bin/pip3
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 100
sudo update-alternatives --install /usr/bin/pip3 pip3 /usr/local/bin/pip3.10 80
sudo update-alternatives --install /usr/bin/pip3 pip3 /usr/local/bin/pip3.8 100
需要更改 /usr/local/bin/pip3.8
的 shebang:从
#!/usr/bin/python3
到
#!/usr/bin/python3.8
其他一些依赖于 Python 3.8 的程序也可以做此修改,之后可以将前面的 *3
指向到 *3.10
。
现在很多软件方会提供安装软件需要的命令。以下给一些例子。
这些脚本涉及到外网连接,基本上在公司内网不可用,如果真的要使用,需要变通。
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install jenkins
实质上是添加、更新软件源,之后从软件源安装软件。
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
一键安装脚本,具体行为要看脚本。