活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

Linux常用软件安装方法全攻略 从apt yum到源码编译新手也能轻松掌握的安装技巧详解各种发行版的软件安装方案

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-3 00:00:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

Linux作为一个开源操作系统,拥有众多发行版,每个发行版都有其独特的软件管理方式。对于Linux新手来说,软件安装可能是最先遇到的挑战之一。不同于Windows下的”下一步”式安装,Linux提供了多种软件安装方法,从简单的包管理器命令到复杂的源码编译。本文将全面介绍Linux系统中常用的软件安装方法,帮助新手用户掌握各种安装技巧,无论使用哪种Linux发行版,都能轻松安装所需软件。

包管理器基础

包管理器是Linux系统中用于自动安装、配置、更新和卸载软件包的工具。它解决了软件依赖性问题,使用户无需手动处理复杂的依赖关系。包管理器通常从软件仓库(repository)获取软件包,这些仓库包含了经过该发行版维护者测试和认证的软件。

包管理器的主要功能包括:

• 安装软件包及其依赖
• 卸载软件包
• 更新软件包和系统
• 搜索软件包
• 管理软件仓库

不同的Linux发行版使用不同的包管理器,下面我们将详细介绍最常见的几种包管理系统。

基于Debian/Ubuntu的apt/apt-get系统

Debian及其衍生版(如Ubuntu、Linux Mint等)使用APT(Advanced Packaging Tool)作为包管理工具。APT是一个强大的包管理系统,它使用.deb格式的软件包。

apt与apt-get的区别

apt是apt-get和apt-cache等命令的整合,提供了更友好的用户界面。虽然apt-get仍然可用,但现代Debian/Ubuntu系统推荐使用apt。

常用apt命令

在安装新软件之前,最好先更新软件包列表:
  1. sudo apt update
复制代码

这个命令会从所有配置的软件仓库获取最新的软件包列表。

要升级系统中所有已安装的软件包:
  1. sudo apt upgrade
复制代码

如果要升级系统(包括可能添加或删除软件包的重要更新):
  1. sudo apt full-upgrade
复制代码

要搜索特定的软件包:
  1. apt search 软件名
复制代码

例如,搜索Web服务器nginx:
  1. apt search nginx
复制代码

要查看软件包的详细信息:
  1. apt show 软件包名
复制代码

例如:
  1. apt show nginx
复制代码

安装软件包非常简单:
  1. sudo apt install 软件包名
复制代码

例如,安装nginx:
  1. sudo apt install nginx
复制代码

要卸载软件包但保留配置文件:
  1. sudo apt remove 软件包名
复制代码

要完全卸载软件包及其配置文件:
  1. sudo apt purge 软件包名
复制代码

例如,完全卸载nginx:
  1. sudo apt purge nginx
复制代码

卸载软件后,可能会留下不再需要的依赖包。可以使用以下命令清理:
  1. sudo apt autoremove
复制代码

APT会将下载的软件包缓存在/var/cache/apt/archives/目录中。要清理这些缓存:
  1. sudo apt clean
复制代码

使用aptitude(可选)

aptitude是一个基于ncurses的APT前端,提供了文本界面和更多功能。安装方法:
  1. sudo apt install aptitude
复制代码

然后运行:
  1. sudo aptitude
复制代码

添加第三方软件仓库

有时,官方仓库中的软件版本可能较旧,或者某些软件不在官方仓库中。这时可以添加第三方软件仓库。

PPA是Ubuntu特有的软件仓库,允许开发者发布软件。

添加PPA:
  1. sudo add-apt-repository ppa:用户名/仓库名
  2. sudo apt update
复制代码

例如,添加Nextcloud PPA:
  1. sudo add-apt-repository ppa:nextcloud-devs/client
  2. sudo apt update
复制代码

编辑/etc/apt/sources.list文件或在/etc/apt/sources.list.d/目录下创建新文件,添加仓库信息。

例如,添加Docker官方仓库:
  1. sudo apt update
  2. sudo apt install apt-transport-https ca-certificates curl software-properties-common
  3. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  4. sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  5. sudo apt update
复制代码

使用dpkg安装本地.deb文件

有时,你可能需要安装下载的.deb文件。可以使用dpkg命令:
  1. sudo dpkg -i 软件包名.deb
复制代码

如果安装过程中出现依赖问题,可以使用以下命令修复:
  1. sudo apt install -f
复制代码

实例:在Ubuntu上安装Web服务器(LAMP栈)

让我们通过一个实例来演示如何在Ubuntu上安装LAMP(Linux, Apache, MySQL, PHP)栈:

1. 更新软件包列表:
  1. sudo apt update
复制代码

1. 安装Apache:
  1. sudo apt install apache2
复制代码

1. 安装MySQL:
  1. sudo apt install mysql-server
复制代码

1. 运行MySQL安全脚本:
  1. sudo mysql_secure_installation
复制代码

1. 安装PHP:
  1. sudo apt install php libapache2-mod-php php-mysql
复制代码

1. 验证安装:

创建一个PHP测试文件:
  1. sudo nano /var/www/html/info.php
复制代码

添加以下内容:
  1. <?php
  2. phpinfo();
  3. ?>
复制代码

保存文件,然后在浏览器中访问http://服务器IP地址/info.php,应该能看到PHP信息页面。

基于Red Hat/CentOS的yum/dnf系统

Red Hat及其衍生版(如CentOS、Fedora等)使用YUM(Yellowdog Updater, Modified)或DNF(Dandified YUM)作为包管理工具。它们使用.rpm格式的软件包。

yum与dnf的区别

dnf是yum的下一代版本,从Fedora 18开始引入,并在Fedora 22中成为默认包管理器。CentOS 8及以后版本也使用dnf。dnf提供了更好的性能、更清晰的输出和更强大的依赖解析。

常用yum/dnf命令

与APT不同,YUM/DNF通常在执行操作时自动更新软件包列表,但可以手动更新:
  1. sudo yum makecache  # 对于使用yum的系统
  2. sudo dnf makecache  # 对于使用dnf的系统
复制代码

要升级系统中所有已安装的软件包:
  1. sudo yum update  # 对于使用yum的系统
  2. sudo dnf upgrade  # 对于使用dnf的系统
复制代码

要搜索特定的软件包:
  1. yum search 软件名  # 对于使用yum的系统
  2. dnf search 软件名  # 对于使用dnf的系统
复制代码

例如,搜索Web服务器nginx:
  1. yum search nginx  # 对于使用yum的系统
  2. dnf search nginx  # 对于使用dnf的系统
复制代码

要查看软件包的详细信息:
  1. yum info 软件包名  # 对于使用yum的系统
  2. dnf info 软件包名  # 对于使用dnf的系统
复制代码

例如:
  1. yum info nginx  # 对于使用yum的系统
  2. dnf info nginx  # 对于使用dnf的系统
复制代码

安装软件包:
  1. sudo yum install 软件包名  # 对于使用yum的系统
  2. sudo dnf install 软件包名  # 对于使用dnf的系统
复制代码

例如,安装nginx:
  1. sudo yum install nginx  # 对于使用yum的系统
  2. sudo dnf install nginx  # 对于使用dnf的系统
复制代码

要卸载软件包:
  1. sudo yum remove 软件包名  # 对于使用yum的系统
  2. sudo dnf remove 软件包名  # 对于使用dnf的系统
复制代码

例如,卸载nginx:
  1. sudo yum remove nginx  # 对于使用yum的系统
  2. sudo dnf remove nginx  # 对于使用dnf的系统
复制代码

卸载软件后,可以使用以下命令清理不再需要的依赖包:
  1. sudo yum autoremove  # 对于使用yum的系统
  2. sudo dnf autoremove  # 对于使用dnf的系统
复制代码

YUM/DNF会将下载的软件包缓存在/var/cache/yum/或/var/cache/dnf/目录中。要清理这些缓存:
  1. sudo yum clean all  # 对于使用yum的系统
  2. sudo dnf clean all  # 对于使用dnf的系统
复制代码

添加第三方软件仓库

EPEL是一个由Fedora特别兴趣组维护的软件仓库,为RHEL(Red Hat Enterprise Linux)及其衍生版(如CentOS)提供额外的软件包。

安装EPEL:
  1. sudo yum install epel-release  # CentOS 7及更早版本
  2. sudo dnf install epel-release  # CentOS 8及以后版本
复制代码

可以编辑/etc/yum.repos.d/目录下的.repo文件来添加软件仓库。

例如,添加Remi仓库(提供最新的PHP版本):
  1. sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm  # CentOS 7
  2. sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm  # CentOS 8
复制代码

使用rpm安装本地.rpm文件

有时,你可能需要安装下载的.rpm文件。可以使用rpm命令:
  1. sudo rpm -i 软件包名.rpm
复制代码

如果安装过程中出现依赖问题,可以使用以下命令尝试解决:
  1. sudo yum localinstall 软件包名.rpm  # 对于使用yum的系统
  2. sudo dnf localinstall 软件包名.rpm  # 对于使用dnf的系统
复制代码

实例:在CentOS上安装Web服务器(LAMP栈)

让我们通过一个实例来演示如何在CentOS上安装LAMP(Linux, Apache, MySQL, PHP)栈:

1. 更新软件包列表:
  1. sudo yum update  # CentOS 7及更早版本
  2. sudo dnf update  # CentOS 8及以后版本
复制代码

1. 安装Apache:
  1. sudo yum install httpd  # CentOS 7及更早版本
  2. sudo dnf install httpd  # CentOS 8及以后版本
复制代码

1. 启动Apache服务并设置开机自启:
  1. sudo systemctl start httpd
  2. sudo systemctl enable httpd
复制代码

1. 安装MariaDB(MySQL的分支):
  1. sudo yum install mariadb-server mariadb  # CentOS 7及更早版本
  2. sudo dnf install mariadb-server mariadb  # CentOS 8及以后版本
复制代码

1. 启动MariaDB服务并设置开机自启:
  1. sudo systemctl start mariadb
  2. sudo systemctl enable mariadb
复制代码

1. 运行MariaDB安全脚本:
  1. sudo mysql_secure_installation
复制代码

1. 安装PHP:
  1. sudo yum install php php-mysql  # CentOS 7及更早版本
  2. sudo dnf install php php-mysql  # CentOS 8及以后版本
复制代码

1. 重启Apache服务以加载PHP模块:
  1. sudo systemctl restart httpd
复制代码

1. 验证安装:

创建一个PHP测试文件:
  1. sudo nano /var/www/html/info.php
复制代码

添加以下内容:
  1. <?php
  2. phpinfo();
  3. ?>
复制代码

保存文件,然后在浏览器中访问http://服务器IP地址/info.php,应该能看到PHP信息页面。

基于Arch Linux的pacman系统

Arch Linux使用Pacman作为其包管理工具。Pacman是一个简单而强大的包管理器,能够处理.pkg.tar.xz格式的软件包。

常用pacman命令

在Arch Linux中,首先需要同步软件包数据库:
  1. sudo pacman -Sy
复制代码

要升级整个系统:
  1. sudo pacman -Syu
复制代码

要搜索软件包:
  1. pacman -Ss 软件名
复制代码

例如,搜索Web服务器nginx:
  1. pacman -Ss nginx
复制代码

要查看软件包的详细信息:
  1. pacman -Si 软件包名
复制代码

例如:
  1. pacman -Si nginx
复制代码

安装软件包:
  1. sudo pacman -S 软件包名
复制代码

例如,安装nginx:
  1. sudo pacman -S nginx
复制代码

要卸载软件包但保留配置文件:
  1. sudo pacman -R 软件包名
复制代码

要完全卸载软件包及其配置文件:
  1. sudo pacman -Rns 软件包名
复制代码

例如,完全卸载nginx:
  1. sudo pacman -Rns nginx
复制代码

卸载软件后,可以使用以下命令清理不再需要的依赖包:
  1. sudo pacman -Qtdq | sudo pacman -Rns -
复制代码

Pacman会将下载的软件包缓存在/var/cache/pacman/pkg/目录中。要清理这些缓存:
  1. sudo pacman -Scc
复制代码

使用AUR(Arch User Repository)

AUR是Arch Linux用户社区维护的软件仓库,包含了大量官方仓库中没有的软件。使用AUR需要借助AUR助手,如yay、paru等。

以安装yay为例:
  1. sudo pacman -S git
  2. git clone https://aur.archlinux.org/yay.git
  3. cd yay
  4. makepkg -si
复制代码

使用yay安装软件:
  1. yay -S 软件包名
复制代码

例如,安装Visual Studio Code:
  1. yay -S visual-studio-code-bin
复制代码

实例:在Arch Linux上安装Web服务器(LAMP栈)

让我们通过一个实例来演示如何在Arch Linux上安装LAMP(Linux, Apache, MySQL, PHP)栈:

1. 同步软件包数据库并更新系统:
  1. sudo pacman -Syu
复制代码

1. 安装Apache:
  1. sudo pacman -S apache
复制代码

1. 启动Apache服务并设置开机自启:
  1. sudo systemctl start httpd
  2. sudo systemctl enable httpd
复制代码

1. 安装MySQL:
  1. sudo pacman -S mysql
复制代码

1. 初始化MySQL数据目录:
  1. sudo mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql
复制代码

1. 启动MySQL服务并设置开机自启:
  1. sudo systemctl start mysqld
  2. sudo systemctl enable mysqld
复制代码

1. 运行MySQL安全脚本:
  1. sudo mysql_secure_installation
复制代码

1. 安装PHP:
  1. sudo pacman -S php php-apache
复制代码

1. 配置Apache以使用PHP:

编辑Apache配置文件:
  1. sudo nano /etc/httpd/conf/httpd.conf
复制代码

在文件末尾添加以下内容:
  1. LoadModule php_module /usr/lib/httpd/modules/libphp.so
  2. AddHandler php-script .php
  3. Include conf/extra/php_module.conf
复制代码

保存文件并重启Apache服务:
  1. sudo systemctl restart httpd
复制代码

1. 验证安装:

创建一个PHP测试文件:
  1. sudo nano /srv/http/info.php
复制代码

添加以下内容:
  1. <?php
  2. phpinfo();
  3. ?>
复制代码

保存文件,然后在浏览器中访问http://服务器IP地址/info.php,应该能看到PHP信息页面。

基于SUSE的zypper系统

openSUSE和SUSE Linux Enterprise Server(SLES)使用Zypper作为其包管理工具。Zypper是一个功能强大的命令行包管理器,能够处理.rpm格式的软件包。

常用zypper命令

在openSUSE中,首先需要刷新软件仓库:
  1. sudo zypper refresh
复制代码

要升级整个系统:
  1. sudo zypper update
复制代码

或者:
  1. sudo zypper up
复制代码

要搜索软件包:
  1. zypper search 软件名
复制代码

或者:
  1. zypper se 软件名
复制代码

例如,搜索Web服务器nginx:
  1. zypper se nginx
复制代码

要查看软件包的详细信息:
  1. zypper info 软件包名
复制代码

例如:
  1. zypper info nginx
复制代码

安装软件包:
  1. sudo zypper install 软件包名
复制代码

或者:
  1. sudo zypper in 软件包名
复制代码

例如,安装nginx:
  1. sudo zypper in nginx
复制代码

要卸载软件包:
  1. sudo zypper remove 软件包名
复制代码

或者:
  1. sudo zypper rm 软件包名
复制代码

例如,卸载nginx:
  1. sudo zypper rm nginx
复制代码

卸载软件后,可以使用以下命令清理不再需要的依赖包:
  1. sudo zypper packages --unneeded
  2. sudo zypper rm $(zypper packages --unneeded | awk '{print $5}' | tail -n +5)
复制代码

Zypper会将下载的软件包缓存在/var/cache/zypp/packages/目录中。要清理这些缓存:
  1. sudo zypper clean
复制代码

添加第三方软件仓库

在openSUSE中,可以添加官方和第三方软件仓库。

例如,添加openSUSE的官方仓库:
  1. sudo zypper addrepo -f http://download.opensuse.org/distribution/leap/15.3/repo/oss/ openSUSE-OSS
  2. sudo zypper addrepo -f http://download.opensuse.org/distribution/leap/15.3/repo/non-oss/ openSUSE-NON-OSS
  3. sudo zypper addrepo -f http://download.opensuse.org/update/leap/15.3/oss/ openSUSE-UPDATE-OSS
  4. sudo zypper addrepo -f http://download.opensuse.org/update/leap/15.3/non-oss/ openSUSE-UPDATE-NON-OSS
复制代码

例如,添加Packman仓库(提供多媒体编解码器等):
  1. sudo zypper addrepo -f http://packman.inode.at/suse/openSUSE_Leap_15.3/ packman
复制代码

实例:在openSUSE上安装Web服务器(LAMP栈)

让我们通过一个实例来演示如何在openSUSE上安装LAMP(Linux, Apache, MySQL, PHP)栈:

1. 刷新软件仓库:
  1. sudo zypper refresh
复制代码

1. 安装Apache:
  1. sudo zypper in apache2
复制代码

1. 启动Apache服务并设置开机自启:
  1. sudo systemctl start apache2
  2. sudo systemctl enable apache2
复制代码

1. 安装MariaDB(MySQL的分支):
  1. sudo zypper in mariadb mariadb-client
复制代码

1. 启动MariaDB服务并设置开机自启:
  1. sudo systemctl start mariadb
  2. sudo systemctl enable mariadb
复制代码

1. 运行MariaDB安全脚本:
  1. sudo mysql_secure_installation
复制代码

1. 安装PHP:
  1. sudo zypper in php7 php7-mysql apache2-mod_php7
复制代码

1. 配置Apache以使用PHP:

编辑Apache配置文件:
  1. sudo nano /etc/apache2/httpd.conf
复制代码

确保以下行没有被注释掉:
  1. Include conf/mod_php7.conf
复制代码

保存文件并重启Apache服务:
  1. sudo systemctl restart apache2
复制代码

1. 验证安装:

创建一个PHP测试文件:
  1. sudo nano /srv/www/htdocs/info.php
复制代码

添加以下内容:
  1. <?php
  2. phpinfo();
  3. ?>
复制代码

保存文件,然后在浏览器中访问http://服务器IP地址/info.php,应该能看到PHP信息页面。

通用包格式:.deb和.rpm的安装方法

除了使用包管理器从软件仓库安装软件外,有时我们可能需要手动安装下载的软件包。Linux中最常见的两种软件包格式是.deb(用于Debian/Ubuntu等系统)和.rpm(用于Red Hat/CentOS/Fedora等系统)。

.deb包的安装方法

.deb包是Debian及其衍生版(如Ubuntu、Linux Mint等)使用的软件包格式。

dpkg是Debian包管理系统的底层工具,可以用来安装.deb文件。

安装.deb包:
  1. sudo dpkg -i 软件包名.deb
复制代码

例如,安装Google Chrome:
  1. sudo dpkg -i google-chrome-stable_current_amd64.deb
复制代码

如果安装过程中出现依赖问题,可以使用以下命令修复:
  1. sudo apt install -f
复制代码

gdebi是一个简单易用的工具,可以自动处理依赖关系。

安装gdebi:
  1. sudo apt install gdebi
复制代码

使用gdebi安装软件包:
  1. sudo gdebi 软件包名.deb
复制代码

例如:
  1. sudo gdebi google-chrome-stable_current_amd64.deb
复制代码

.rpm包的安装方法

.rpm包是Red Hat及其衍生版(如CentOS、Fedora等)使用的软件包格式。

rpm是RPM包管理系统的底层工具,可以用来安装.rpm文件。

安装.rpm包:
  1. sudo rpm -i 软件包名.rpm
复制代码

例如,安装Google Chrome:
  1. sudo rpm -i google-chrome-stable_current_x86_64.rpm
复制代码

如果安装过程中出现依赖问题,可以使用以下命令尝试解决:
  1. sudo yum localinstall 软件包名.rpm  # 对于使用yum的系统
  2. sudo dnf localinstall 软件包名.rpm  # 对于使用dnf的系统
复制代码

yum和dnf可以自动处理依赖关系,是安装.rpm包的推荐方法。

使用yum安装:
  1. sudo yum localinstall 软件包名.rpm
复制代码

使用dnf安装:
  1. sudo dnf localinstall 软件包名.rpm
复制代码

例如:
  1. sudo dnf localinstall google-chrome-stable_current_x86_64.rpm
复制代码

使用alien转换包格式

alien是一个工具,可以在.deb和.rpm包格式之间进行转换。这在某些情况下很有用,例如,当你只有.deb包但需要在基于Red Hat的系统上安装软件时。

安装alien:
  1. sudo apt install alien  # 在Debian/Ubuntu上
  2. sudo yum install alien  # 在CentOS/RHEL上
  3. sudo dnf install alien  # 在Fedora上
复制代码

将.deb包转换为.rpm包:
  1. sudo alien -r 软件包名.deb
复制代码

将.rpm包转换为.deb包:
  1. sudo alien -d 软件包名.rpm
复制代码

注意:使用alien转换的包可能无法正常工作,因为它只是简单地转换了包格式,而没有考虑不同发行版之间的依赖和配置差异。

通用二进制包安装方法

有些软件不提供特定于发行版的包,而是提供通用的二进制包,通常是压缩的tarball(.tar.gz或.tar.bz2)。这些包通常包含预编译的二进制文件,可以直接解压到系统目录中使用。

下载和解压

首先,下载软件的二进制包。然后,解压到合适的目录。

例如,安装Visual Studio Code的通用二进制包:
  1. wget https://code.visualstudio.com/sha/download?build=stable&os=linux-x64 -O vscode.tar.gz
  2. tar -xzf vscode.tar.gz
复制代码

移动到系统目录

将解压后的文件移动到系统目录,如/opt:
  1. sudo mv VSCode-linux-x64 /opt/vscode
复制代码

创建符号链接

为了方便使用,可以创建符号链接到/usr/local/bin:
  1. sudo ln -s /opt/vscode/bin/code /usr/local/bin/code
复制代码

创建桌面快捷方式(可选)

创建一个桌面快捷方式,以便从应用程序菜单启动软件:
  1. sudo nano /usr/share/applications/vscode.desktop
复制代码

添加以下内容:
  1. [Desktop Entry]
  2. Name=Visual Studio Code
  3. Comment=Code Editing. Redefined.
  4. GenericName=Text Editor
  5. Exec=/opt/vscode/bin/code
  6. Icon=/opt/vscode/resources/app/resources/linux/code.png
  7. Type=Application
  8. StartupNotify=false
  9. Categories=Utility;TextEditor;Development;IDE;
  10. MimeType=text/plain;inode/directory;
  11. Keywords=vscode;
复制代码

保存文件后,Visual Studio Code就会出现在应用程序菜单中。

设置环境变量(可选)

如果软件需要特定的环境变量,可以编辑/etc/environment文件或用户的~/.bashrc文件。

例如,添加Java环境变量:
  1. echo 'export JAVA_HOME=/opt/jdk' >> ~/.bashrc
  2. echo 'export PATH=$PATH:$JAVA_HOME/bin' >> ~/.bashrc
  3. source ~/.bashrc
复制代码

实例:安装Telegram Desktop

让我们通过一个实例来演示如何安装Telegram Desktop的通用二进制包:

1. 下载Telegram Desktop:
  1. wget https://telegram.org/dl/desktop/linux -O telegram.tar.xz
复制代码

1. 解压:
  1. tar -xf telegram.tar.xz
复制代码

1. 移动到系统目录:
  1. sudo mv Telegram /opt/telegram
复制代码

1. 创建符号链接:
  1. sudo ln -s /opt/telegram/Telegram /usr/local/bin/telegram
复制代码

1. 创建桌面快捷方式:
  1. sudo nano /usr/share/applications/telegram.desktop
复制代码

添加以下内容:
  1. [Desktop Entry]
  2. Name=Telegram Desktop
  3. Comment=Official desktop version of Telegram messaging app
  4. Exec=/opt/telegram/Telegram -- %u
  5. Icon=/opt/telegram/telegram.svg
  6. Terminal=false
  7. Type=Application
  8. Categories=Network;InstantMessaging;Qt;
  9. MimeType=x-scheme-handler/tg;
  10. Keywords=chat;im;messaging;messenger;sms;tdesktop;
  11. StartupWMClass=TelegramDesktop
复制代码

保存文件后,Telegram Desktop就会出现在应用程序菜单中。

源码编译安装方法

源码编译安装是Linux中最灵活但也最复杂的软件安装方法。这种方法允许你根据自己的需求定制软件,但需要一定的技术知识。

准备工作

在开始编译安装之前,需要确保系统已安装必要的开发工具和库。
  1. sudo apt update
  2. sudo apt install build-essential
复制代码
  1. sudo yum groupinstall "Development Tools"  # CentOS 7及更早版本
  2. sudo dnf groupinstall "Development Tools"  # CentOS 8及以后版本
复制代码
  1. sudo pacman -S base-devel
复制代码
  1. sudo zypper in -t pattern devel_basis
复制代码

下载源码

通常,源码可以从软件的官方网站或GitHub等代码托管平台下载。

使用wget下载:
  1. wget https://example.com/software-1.0.0.tar.gz
复制代码

使用git克隆:
  1. git clone https://github.com/user/software.git
  2. cd software
复制代码

解压源码

如果下载的是压缩包,需要先解压:
  1. tar -xzf software-1.0.0.tar.gz
  2. cd software-1.0.0
复制代码

查看README和INSTALL文件

大多数开源软件都包含README和INSTALL文件,这些文件包含了编译和安装的说明。在开始编译之前,务必阅读这些文件:
  1. cat README
  2. cat INSTALL
复制代码

配置编译选项

许多软件使用Autotools构建系统,可以通过./configure脚本配置编译选项。

查看可用的配置选项:
  1. ./configure --help
复制代码

运行配置脚本:
  1. ./configure --prefix=/usr/local --with-feature1 --without-feature2
复制代码

常用的配置选项包括:

• --prefix:指定安装目录,默认通常是/usr/local
• --sysconfdir:指定配置文件目录
• --localstatedir:指定数据文件目录
• --enable-feature:启用特定功能
• --disable-feature:禁用特定功能
• --with-package:使用特定外部包
• --without-package:不使用特定外部包

编译

配置完成后,使用make命令编译软件:
  1. make -j$(nproc)
复制代码

-j$(nproc)选项表示使用所有可用的CPU核心进行并行编译,可以加快编译速度。

安装

编译成功后,使用以下命令安装软件:
  1. sudo make install
复制代码

卸载

如果软件使用Autotools构建系统,通常可以通过以下命令卸载:
  1. sudo make uninstall
复制代码

注意:只有在编译后没有删除源码目录的情况下,才能使用make uninstall命令。

实例:从源码编译安装Nginx

让我们通过一个实例来演示如何从源码编译安装Nginx:

1. 安装依赖:
  1. # 在Debian/Ubuntu上
  2. sudo apt update
  3. sudo apt install build-essential libpcre3-dev zlib1g-dev libssl-dev
  4. # 在CentOS/RHEL上
  5. sudo yum groupinstall "Development Tools"  # CentOS 7及更早版本
  6. sudo dnf groupinstall "Development Tools"  # CentOS 8及以后版本
  7. sudo yum install pcre-devel zlib-devel openssl-devel  # CentOS 7及更早版本
  8. sudo dnf install pcre-devel zlib-devel openssl-devel  # CentOS 8及以后版本
复制代码

1. 下载Nginx源码:
  1. wget https://nginx.org/download/nginx-1.20.1.tar.gz
  2. tar -xzf nginx-1.20.1.tar.gz
  3. cd nginx-1.20.1
复制代码

1. 配置编译选项:
  1. ./configure --prefix=/usr/local/nginx \
  2.             --with-http_ssl_module \
  3.             --with-http_v2_module \
  4.             --with-http_realip_module \
  5.             --with-http_stub_status_module \
  6.             --with-http_gzip_static_module \
  7.             --with-pcre \
  8.             --with-file-aio \
  9.             --with-threads
复制代码

1. 编译:
  1. make -j$(nproc)
复制代码

1. 安装:
  1. sudo make install
复制代码

1. 创建Nginx用户:
  1. sudo useradd -r -d /var/cache/nginx -s /sbin/nologin nginx
复制代码

1. 创建systemd服务文件:
  1. sudo nano /etc/systemd/system/nginx.service
复制代码

添加以下内容:
  1. [Unit]
  2. Description=The NGINX HTTP and reverse proxy server
  3. After=syslog.target network.target remote-fs.target nss-lookup.target
  4. [Service]
  5. Type=forking
  6. PIDFile=/usr/local/nginx/logs/nginx.pid
  7. ExecStartPre=/usr/local/nginx/sbin/nginx -t
  8. ExecStart=/usr/local/nginx/sbin/nginx
  9. ExecReload=/usr/local/nginx/sbin/nginx -s reload
  10. ExecStop=/bin/kill -s QUIT $MAINPID
  11. PrivateTmp=true
  12. [Install]
  13. WantedBy=multi-user.target
复制代码

1. 启动Nginx服务并设置开机自启:
  1. sudo systemctl start nginx
  2. sudo systemctl enable nginx
复制代码

1. 验证安装:

在浏览器中访问服务器的IP地址,应该能看到Nginx的欢迎页面。

Snap和Flatpak等现代包管理系统

除了传统的包管理器外,Linux还出现了一些现代的包管理系统,如Snap和Flatpak。这些系统旨在解决传统包管理器的一些限制,如依赖冲突、版本滞后等问题。

Snap包管理系统

Snap是由Canonical(Ubuntu的开发者)开发的包管理系统,它允许在大多数Linux发行版上安装软件。Snap包是自包含的,包含了所有必要的依赖,因此不会与系统中的其他软件产生依赖冲突。

在Debian/Ubuntu上,Snap通常已经预装。如果没有,可以安装:
  1. sudo apt update
  2. sudo apt install snapd
复制代码

在CentOS/RHEL上:
  1. sudo yum install snapd  # CentOS 7及更早版本
  2. sudo dnf install snapd  # CentOS 8及以后版本
  3. sudo systemctl enable --now snapd.socket
复制代码

在Arch Linux上:
  1. sudo pacman -S snapd
  2. sudo systemctl enable --now snapd.socket
复制代码

在openSUSE上:
  1. sudo zypper in snapd
  2. sudo systemctl enable --now snapd.socket
复制代码

安装Snap包:
  1. sudo snap install 软件包名
复制代码

例如,安装Spotify:
  1. sudo snap install spotify
复制代码

要查找可用的Snap包:
  1. snap find 软件名
复制代码

例如,查找与Python相关的Snap包:
  1. snap find python
复制代码

要列出系统中已安装的Snap包:
  1. snap list
复制代码

更新所有Snap包:
  1. sudo snap refresh
复制代码

更新特定的Snap包:
  1. sudo snap refresh 软件包名
复制代码

卸载Snap包:
  1. sudo snap remove 软件包名
复制代码

Flatpak包管理系统

Flatpak是另一个现代的包管理系统,由Red Hat等公司支持。与Snap类似,Flatpak也提供了沙盒环境,允许软件在隔离的环境中运行。

在Debian/Ubuntu上:
  1. sudo apt update
  2. sudo apt install flatpak
复制代码

在CentOS/RHEL上:
  1. sudo yum install flatpak  # CentOS 7及更早版本
  2. sudo dnf install flatpak  # CentOS 8及以后版本
复制代码

在Arch Linux上:
  1. sudo pacman -S flatpak
复制代码

在openSUSE上:
  1. sudo zypper in flatpak
复制代码

Flathub是Flatpak的主要仓库,包含了大量的软件。添加Flathub仓库:
  1. flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
复制代码

安装Flatpak包:
  1. flatpak install flathub 软件包名
复制代码

例如,安装Spotify:
  1. flatpak install flathub com.spotify.Client
复制代码

要查找可用的Flatpak包,可以访问Flathub网站(https://flathub.org/)或使用命令行工具:
  1. flatpak search 软件名
复制代码

例如,查找与Python相关的Flatpak包:
  1. flatpak search python
复制代码

要列出系统中已安装的Flatpak包:
  1. flatpak list
复制代码

更新所有Flatpak包:
  1. flatpak update
复制代码

卸载Flatpak包:
  1. flatpak uninstall 软件包名
复制代码

Snap与Flatpak的比较

实例:使用Snap和Flatpak安装Visual Studio Code

让我们通过一个实例来演示如何使用Snap和Flatpak安装Visual Studio Code:
  1. sudo snap install code --classic
复制代码
  1. flatpak install flathub com.visualstudio.code
复制代码

安装后,Visual Studio Code会出现在应用程序菜单中,可以直接启动使用。

软件安装常见问题及解决方案

在Linux系统中安装软件时,可能会遇到各种问题。下面列出了一些常见问题及其解决方案。

依赖问题

安装软件时,系统提示缺少某些依赖包。

1. 使用包管理器自动解决依赖:
  1. # 在Debian/Ubuntu上
  2. sudo apt install -f
  3. # 在CentOS/RHEL上
  4. sudo yum install  # CentOS 7及更早版本
  5. sudo dnf install  # CentOS 8及以后版本
  6. # 在Arch Linux上
  7. sudo pacman -S 软件包名 --asdeps
  8. # 在openSUSE上
  9. sudo zypper install --auto-agree-with-licenses
复制代码

1. 手动安装依赖包:
  1. # 在Debian/Ubuntu上
  2. sudo apt install 依赖包名
  3. # 在CentOS/RHEL上
  4. sudo yum install 依赖包名  # CentOS 7及更早版本
  5. sudo dnf install 依赖包名  # CentOS 8及以后版本
  6. # 在Arch Linux上
  7. sudo pacman -S 依赖包名
  8. # 在openSUSE上
  9. sudo zypper install 依赖包名
复制代码

软件仓库问题

无法访问软件仓库,或者软件仓库中没有所需的软件。

1. 检查网络连接:
  1. ping example.com
复制代码

1. 更换软件仓库镜像:

在Debian/Ubuntu上,编辑/etc/apt/sources.list文件:
  1. sudo nano /etc/apt/sources.list
复制代码

在CentOS/RHEL上,编辑/etc/yum.repos.d/目录下的.repo文件:
  1. sudo nano /etc/yum.repos.d/CentOS-Base.repo
复制代码

在Arch Linux上,编辑/etc/pacman.d/mirrorlist文件:
  1. sudo nano /etc/pacman.d/mirrorlist
复制代码

在openSUSE上,编辑/etc/zypp/repos.d/目录下的.repo文件:
  1. sudo nano /etc/zypp/repos.d/repo-oss.repo
复制代码

1. 添加第三方软件仓库:

参考前面各章节中关于添加第三方软件仓库的说明。

权限问题

安装软件时提示权限不足。

1. 使用sudo命令获取管理员权限:
  1. sudo 命令
复制代码

1. 检查用户是否在sudo组中:
  1. groups
复制代码

如果用户不在sudo组中,可以使用以下命令添加:
  1. # 在Debian/Ubuntu上
  2. sudo usermod -aG sudo 用户名
  3. # 在CentOS/RHEL上
  4. sudo usermod -aG wheel 用户名
  5. # 在Arch Linux上
  6. sudo usermod -aG wheel 用户名
  7. # 在openSUSE上
  8. sudo usermod -aG wheel 用户名
复制代码

软件冲突

安装软件时提示与其他软件冲突。

1. 卸载冲突的软件:
  1. # 在Debian/Ubuntu上
  2. sudo apt remove 冲突软件名
  3. # 在CentOS/RHEL上
  4. sudo yum remove 冲突软件名  # CentOS 7及更早版本
  5. sudo dnf remove 冲突软件名  # CentOS 8及以后版本
  6. # 在Arch Linux上
  7. sudo pacman -R 冲突软件名
  8. # 在openSUSE上
  9. sudo zypper remove 冲突软件名
复制代码

1. 使用替代软件:

查找与冲突软件功能相同但不冲突的替代软件。

源码编译问题

从源码编译软件时出现错误。

1. 检查是否安装了必要的开发工具和库:

参考前面”源码编译安装方法”章节中的说明。

1. 查看错误信息并搜索解决方案:
  1. # 将错误信息复制到搜索引擎中
复制代码

1. 查看软件的文档和FAQ:
  1. cat README
  2. cat INSTALL
  3. cat FAQ
复制代码

1. 查看软件的Issue Tracker:

访问软件的GitHub页面或其他代码托管平台,查看是否有人遇到类似问题。

磁盘空间不足

安装软件时提示磁盘空间不足。

1. 检查磁盘空间使用情况:
  1. df -h
复制代码

1. 清理软件包缓存:
  1. # 在Debian/Ubuntu上
  2. sudo apt clean
  3. # 在CentOS/RHEL上
  4. sudo yum clean all  # CentOS 7及更早版本
  5. sudo dnf clean all  # CentOS 8及以后版本
  6. # 在Arch Linux上
  7. sudo pacman -Scc
  8. # 在openSUSE上
  9. sudo zypper clean
复制代码

1. 清理不再需要的依赖包:
  1. # 在Debian/Ubuntu上
  2. sudo apt autoremove
  3. # 在CentOS/RHEL上
  4. sudo yum autoremove  # CentOS 7及更早版本
  5. sudo dnf autoremove  # CentOS 8及以后版本
  6. # 在Arch Linux上
  7. sudo pacman -Qtdq | sudo pacman -Rns -
  8. # 在openSUSE上
  9. sudo zypper packages --unneeded
  10. sudo zypper rm $(zypper packages --unneeded | awk '{print $5}' | tail -n +5)
复制代码

1. 删除不需要的软件包:
  1. # 在Debian/Ubuntu上
  2. sudo apt remove 软件包名
  3. # 在CentOS/RHEL上
  4. sudo yum remove 软件包名  # CentOS 7及更早版本
  5. sudo dnf remove 软件包名  # CentOS 8及以后版本
  6. # 在Arch Linux上
  7. sudo pacman -R 软件包名
  8. # 在openSUSE上
  9. sudo zypper remove 软件包名
复制代码

1. 清理日志文件:
  1. sudo journalctl --vacuum-size=100M
复制代码

1. 清理临时文件:
  1. sudo rm -rf /tmp/*
复制代码

GPG密钥问题

添加软件仓库时提示GPG密钥错误。

1. 导入GPG密钥:
  1. # 在Debian/Ubuntu上
  2. sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 密钥ID
  3. # 在CentOS/RHEL上
  4. sudo rpm --import 密钥URL
复制代码

1. 更新软件包列表:
  1. # 在Debian/Ubuntu上
  2. sudo apt update
  3. # 在CentOS/RHEL上
  4. sudo yum makecache  # CentOS 7及更早版本
  5. sudo dnf makecache  # CentOS 8及以后版本
  6. # 在Arch Linux上
  7. sudo pacman -Sy
  8. # 在openSUSE上
  9. sudo zypper refresh
复制代码

总结:如何选择合适的安装方法

Linux系统提供了多种软件安装方法,每种方法都有其优缺点。下面是一个总结,帮助你根据不同情况选择合适的安装方法。

包管理器安装(apt/yum/dnf/pacman/zypper)

• 自动处理依赖关系
• 软件经过发行版维护者测试和认证
• 安装、更新、卸载简单
• 集成到系统更新中

• 软件版本可能较旧
• 软件选择有限

• 日常使用的软件
• 系统核心组件
• 对稳定性要求高的场景

通用二进制包安装

• 不依赖特定发行版
• 通常包含最新版本
• 安装简单

• 不自动处理依赖
• 不集成到系统更新中
• 可能与系统其他部分不兼容

• 软件没有提供特定于发行版的包
• 需要特定版本的软件
• 测试新软件

源码编译安装

• 完全控制编译选项
• 可以定制软件功能
• 通常可以获得最新版本
• 优化性能

• 安装过程复杂
• 需要开发工具和知识
• 不自动处理依赖
• 不集成到系统更新中
• 卸载困难

• 需要特定功能的软件
• 软件没有提供预编译包
• 性能敏感的应用
• 开发和测试环境

Snap/Flatpak安装

• 跨发行版兼容
• 自动处理依赖
• 沙盒环境增强安全性
• 通常包含最新版本
• 独立于系统其他部分

• 占用更多磁盘空间
• 启动可能较慢
• 与系统集成度低
• 可能存在权限问题

• 需要最新版本的软件
• 软件没有提供特定于发行版的包
• 隔离环境运行的应用
• 跨发行版部署的应用

选择建议

1. 日常使用:优先使用包管理器安装,这是最简单、最安全的方法。
2. 开发环境:根据需要选择包管理器、源码编译或Snap/Flatpak。如果需要特定版本或功能,可以考虑源码编译。
3. 服务器环境:优先使用包管理器安装,确保稳定性和安全性。如果需要特定版本,可以考虑使用通用二进制包或源码编译。
4. 测试新软件:可以考虑使用Snap/Flatpak或通用二进制包,避免影响系统稳定性。
5. 性能敏感应用:可以考虑源码编译,根据硬件特性优化软件。
6. 跨发行版部署:考虑使用Snap/Flatpak或通用二进制包,减少兼容性问题。

日常使用:优先使用包管理器安装,这是最简单、最安全的方法。

开发环境:根据需要选择包管理器、源码编译或Snap/Flatpak。如果需要特定版本或功能,可以考虑源码编译。

服务器环境:优先使用包管理器安装,确保稳定性和安全性。如果需要特定版本,可以考虑使用通用二进制包或源码编译。

测试新软件:可以考虑使用Snap/Flatpak或通用二进制包,避免影响系统稳定性。

性能敏感应用:可以考虑源码编译,根据硬件特性优化软件。

跨发行版部署:考虑使用Snap/Flatpak或通用二进制包,减少兼容性问题。

总之,选择哪种安装方法取决于你的具体需求、技术水平和使用场景。对于新手,建议优先使用包管理器安装,随着经验的积累,再尝试其他安装方法。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则