程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • HTTP

  • 计算机网络

  • 计算机操作与配置文档

    • Windows 常用命令
    • 工作常用命令
    • Windows设置环境变量
    • Linux上设置环境变量
    • 跨平台软件的安装与使用
      • 📌 为什么同样的软件在 Windows 和 Linux 上安装包不同?
      • ✅ 解压后的软件能直接用吗?
      • 🚀 如何让解压后的软件在不同系统上使用?
        • 1️⃣ 确保环境变量正确
        • 在 Linux/macOS 上
        • 在 Windows 上
        • 2️⃣ Linux 需要手动赋予执行权限
        • 3️⃣ Windows 可能缺少 `.bat` 文件
        • 4️⃣ JDK 需要和 CPU 架构匹配
      • 🚀 哪些软件可以跨系统运行?
      • 🖥 Windows 常见安装包格式
      • 🐧 Linux 常见安装包格式
      • 🍏 macOS 常见安装包格式
  • 计算机网络
  • 计算机操作与配置文档
scholar
2025-02-01
目录

跨平台软件的安装与使用

# 跨平台软件的安装与使用

在使用 JDK、Maven、Tomcat 等软件时,我们常常会发现,Windows 和 Linux 下的安装包格式有所不同。很多软件其实是跨平台的,但由于不同操作系统的文件管理和安装机制不同,它们的打包格式会有所区别。

# 📌 为什么同样的软件在 Windows 和 Linux 上安装包不同?

同样的软件在不同操作系统上,安装包格式不同,主要是因为操作系统的文件管理方式不同:

操作系统 常见软件安装包格式 适用场景
Windows .exe、.msi、.zip .exe、.msi 适用于一键安装,.zip 适用于解压即用
Linux .tar.gz、.tar.xz、.rpm、.deb .tar.gz、.tar.xz 用于手动解压,.rpm(RedHat/CentOS),.deb(Debian/Ubuntu)适用于包管理器安装
macOS .dmg、.pkg、.tar.gz .dmg、.pkg 用于 GUI 安装,.tar.gz 适用于手动安装

📌 但软件核心文件是一样的!

虽然安装包格式不同,但软件的核心文件和功能是一样的。打包格式的不同只是为了适应不同操作系统的安装方式,比如:

  • Windows 需要 .exe 作为安装程序。
  • Linux 更倾向于使用 .tar.gz 进行解压或 .rpm/.deb 进行包管理安装。

因此,如果软件支持跨平台,我们可以直接解压并使用,而不一定要使用安装程序。

# ✅ 解压后的软件能直接用吗?

答案是:可以直接使用,但需要注意一些细节!

很多跨平台软件(如 Maven、Tomcat、JDK)都是解压即用的:

  1. Windows 上,可以使用 .zip 格式解压后直接运行 bin 目录下的程序。
  2. Linux/macOS 上,通常使用 .tar.gz,解压后需要手动配置环境变量。

📌 例如,JDK、Maven、Tomcat 这些软件,我们可以直接解压并配置环境变量,就能运行!

# 🚀 如何让解压后的软件在不同系统上使用?

# 1️⃣ 确保环境变量正确

解压后的软件通常需要手动配置环境变量,特别是 JDK、Maven、Node.js 这些工具。

# 在 Linux/macOS 上

假设你下载了 jdk-11.0.13_linux-x64.tar.gz 并解压到 /usr/local/jdk,你需要:

export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
1
2

然后运行:java -version 确保 Java 可以被识别。

# 在 Windows 上

  1. 解压文件

  2. 打开“环境变量”设置

    • 右键 “此电脑” → “属性” → “高级系统设置” → “环境变量”
    • 添加 JAVA_HOME 变量,指向 C:\jdk
    • 编辑 Path 变量,添加 %JAVA_HOME%\bin
  3. 测试 打开 CMD,运行:

    java -version
    
    1

# 2️⃣ Linux 需要手动赋予执行权限

在 Linux 下,有时候解压后的程序默认没有执行权限,如果你尝试运行 startup.sh 启动 Tomcat,可能会报 "Permission denied" 错误。这时需要执行:

chmod +x bin/*
1

这样就能确保 bin 目录下的所有脚本可以执行。

# 3️⃣ Windows 可能缺少 .bat 文件

  • Linux 下的程序通常提供的是 .sh 脚本,比如 startup.sh、shutdown.sh。
  • Windows 下的程序通常有 .bat(批处理文件),比如 startup.bat、shutdown.bat。

如果你从 Linux 服务器 上拷贝了 Tomcat 到 Windows,可能会发现没有 .bat 文件,这时可以手动创建一个 start.bat:

@echo off
set JAVA_HOME=C:\jdk-11
set PATH=%JAVA_HOME%\bin;%PATH%
call bin\startup.sh
1
2
3
4

然后双击运行 start.bat,即可启动 Tomcat。

# 4️⃣ JDK 需要和 CPU 架构匹配

虽然大部分软件是跨平台的,但 JDK 需要根据 CPU 架构选择对应的版本:

  • x86/x64 处理器(常见的台式机、服务器):
    • Windows:jdk-11.0.13_windows-x64_bin.exe
    • Linux:jdk-11.0.13_linux-x64.tar.gz
  • ARM 处理器(树莓派、Mac M1/M2、部分云服务器):
    • Windows:没有 ARM 版本
    • Linux/macOS:jdk-11.0.13_linux-aarch64.tar.gz

如果你在 ARM 服务器上安装 x86 版本的 JDK,会导致 "cannot execute binary file" 错误。

# 🚀 哪些软件可以跨系统运行?

✅ 可以跨系统运行的

  • Java 程序(JDK、Maven、Tomcat) → 只需要正确配置环境变量
  • Node.js、Python、PHP → 只要安装了对应的解释器
  • Docker 容器 → 完全隔离环境,不受操作系统影响

🚫 不能直接运行的

  • Windows .exe、.dll → 需要 Wine 或 VM
  • Windows .bat 批处理脚本 → 需要转换为 .sh
  • Windows 特定的服务(如 SQL Server、IIS) → 需要 Linux 版本或 Docker 运行

✅ 大部分跨平台软件的核心文件是一样的,只是打包方式不同。 ✅ Windows 版的 .zip 文件解压到 Linux 后,很多软件(如 JDK、Maven)可以直接用。 🚫 但某些软件依赖 Windows 专用的 .exe、.dll 或注册表,不能直接在 Linux 运行。 ✅ 解决方案:

  1. 尽量下载官方提供的 Linux 版本
  2. 修改路径、环境变量
  3. 使用 Wine 运行 Windows 应用
  4. 使用 Docker 让应用运行在通用环境

# 🖥 Windows 常见安装包格式

文件格式 说明 使用方法
.exe Windows 可执行文件,通常包含安装向导或直接运行的程序 双击运行,按照安装向导进行安装
.msi Windows Installer,微软官方安装包格式,支持批量部署 双击运行,或使用 msiexec /i filename.msi 进行安装
.zip 纯压缩文件,不包含安装程序 解压即可使用(如便携版软件)
.rar 另一种压缩格式,需 WinRAR/7-Zip 解压 解压后运行(可能包含 .exe 安装程序)
.7z 7-Zip 专用压缩格式,压缩率更高 使用 7-Zip 解压后运行
.cab Windows Cabinet 文件,用于系统组件安装 使用 expand 命令解压,或 DISM 安装
.bat Windows 批处理脚本,包含一系列命令 直接双击运行 或在 CMD 中执行
.cmd 批处理命令文件,与 .bat 类似 双击运行或在 CMD 执行
.ps1 PowerShell 脚本,用于 Windows 自动化任务 在 PowerShell 执行 .\script.ps1
.appx Windows UWP 应用包格式 双击安装,或使用 Add-AppxPackage 命令安装
.msix 现代化的 Windows 应用安装包(升级版 .appx) 双击安装,或使用 Add-AppxPackage
.iso 光盘镜像文件,通常包含操作系统或软件 挂载后运行 setup.exe 进行安装
.wim Windows 映像文件,用于系统部署 使用 DISM 或 imagex 进行操作

# 🐧 Linux 常见安装包格式

文件格式 说明 使用方法
.tar 仅打包,不压缩 tar -xvf filename.tar
.tar.gz (.tgz) 先打包后 Gzip 压缩(常见) tar -zxvf filename.tar.gz
.tar.xz 先打包后 XZ 压缩(更高压缩率) tar -xJvf filename.tar.xz
.tar.bz2 先打包后 Bzip2 压缩 tar -xjvf filename.tar.bz2
.zip 与 Windows 相同,存储多个文件 unzip filename.zip
.rar RAR 压缩格式 unrar x filename.rar
.7z 7-Zip 格式 7z x filename.7z
.deb Debian/Ubuntu 安装包 dpkg -i filename.deb 或 apt install ./filename.deb
.rpm RedHat/CentOS/Fedora 安装包 rpm -ivh filename.rpm 或 dnf install filename.rpm
.apk Android 安装包(并非 Alpine Linux) adb install filename.apk
.sh Shell 脚本文件 chmod +x script.sh && ./script.sh
.run 可执行安装文件(NVIDIA 驱动等) chmod +x filename.run && ./filename.run
.bin 可执行二进制安装文件 chmod +x filename.bin && ./filename.bin
.AppImage Linux 便携应用格式(免安装) chmod +x filename.AppImage && ./filename.AppImage
.iso 光盘镜像文件 mount -o loop filename.iso /mnt
.img 磁盘映像文件(如树莓派系统) dd if=filename.img of=/dev/sdX bs=4M

# 🍏 macOS 常见安装包格式

文件格式 说明 使用方法
.dmg macOS 磁盘镜像文件,常用于安装应用 双击挂载,然后拖拽到 Applications
.pkg macOS 原生安装包格式,适用于系统级安装 双击运行,或 sudo installer -pkg filename.pkg -target /
.app macOS 应用程序文件夹(包含 .app 目录) 直接拖入 Applications 使用
.tar.gz 与 Linux 相同,压缩文件 tar -zxvf filename.tar.gz
.zip 压缩格式,部分 macOS 应用使用 双击解压
编辑此页 (opens new window)
上次更新: 2025/02/18, 05:49:06
Linux上设置环境变量

← Linux上设置环境变量

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式