From bf1fb0f92e3cf50ad9205f11ccdf07f72dcee585 Mon Sep 17 00:00:00 2001 From: JieXu Date: Wed, 29 Oct 2025 09:21:37 +0800 Subject: [PATCH] RPM file remove x86-64-v1 Support. Update French translation. (#8216) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update ResUI.fr.resx * Update build-linux.yml * Update package-rhel.sh * 更新 build-linux.yml * Update ResUI.fr.resx * Update ResUI.fr.resx * Update ResUI.fr.resx * Update ResUI.fr.resx * Update ResUI.fr.resx * Update ResUI.fr.resx * Update ResUI.fr.resx * Update ResUI.fr.resx --- .github/workflows/build-linux.yml | 89 +++++++++++++++++++--------- package-rhel.sh | 17 ++++++ v2rayN/ServiceLib/Resx/ResUI.fr.resx | 44 +++++++------- 3 files changed, 99 insertions(+), 51 deletions(-) diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index 3f858e30..e030e465 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -9,6 +9,12 @@ on: push: branches: - master + tags: + - 'v*' + - 'V*' + +permissions: + contents: write env: OutputArch: "linux-64" @@ -21,7 +27,6 @@ jobs: strategy: matrix: configuration: [Release] - runs-on: ubuntu-24.04 steps: @@ -31,18 +36,18 @@ jobs: submodules: 'recursive' fetch-depth: '0' - - name: Setup + - name: Setup .NET uses: actions/setup-dotnet@v5.0.0 with: dotnet-version: '8.0.x' - name: Build run: | - cd v2rayN - dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r linux-x64 --self-contained=true -o $OutputPath64 - dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r linux-arm64 --self-contained=true -o $OutputPathArm64 - dotnet publish ./AmazTool/AmazTool.csproj -c Release -r linux-x64 --self-contained=true -p:PublishTrimmed=true -o $OutputPath64 - dotnet publish ./AmazTool/AmazTool.csproj -c Release -r linux-arm64 --self-contained=true -p:PublishTrimmed=true -o $OutputPathArm64 + cd v2rayN + dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r linux-x64 --self-contained=true -o "$OutputPath64" + dotnet publish ./v2rayN.Desktop/v2rayN.Desktop.csproj -c Release -r linux-arm64 --self-contained=true -o "$OutputPathArm64" + dotnet publish ./AmazTool/AmazTool.csproj -c Release -r linux-x64 --self-contained=true -p:PublishTrimmed=true -o "$OutputPath64" + dotnet publish ./AmazTool/AmazTool.csproj -c Release -r linux-arm64 --self-contained=true -p:PublishTrimmed=true -o "$OutputPathArm64" - name: Upload build artifacts uses: actions/upload-artifact@v5.0.0 @@ -56,8 +61,8 @@ jobs: if: github.event.inputs.release_tag != '' run: | chmod 755 package-debian.sh - ./package-debian.sh $OutputArch $OutputPath64 ${{ github.event.inputs.release_tag }} - ./package-debian.sh $OutputArchArm $OutputPathArm64 ${{ github.event.inputs.release_tag }} + ./package-debian.sh "$OutputArch" "$OutputPath64" "${{ github.event.inputs.release_tag }}" + ./package-debian.sh "$OutputArchArm" "$OutputPathArm64" "${{ github.event.inputs.release_tag }}" - name: Upload deb to release uses: svenstaro/upload-release-action@v2 @@ -73,8 +78,8 @@ jobs: if: github.event.inputs.release_tag != '' run: | chmod 755 package-release-zip.sh - ./package-release-zip.sh $OutputArch $OutputPath64 - ./package-release-zip.sh $OutputArchArm $OutputPathArm64 + ./package-release-zip.sh "$OutputArch" "$OutputPath64" + ./package-release-zip.sh "$OutputArchArm" "$OutputPathArm64" - name: Upload zip archive to release uses: svenstaro/upload-release-action@v2 @@ -85,36 +90,62 @@ jobs: file_glob: true prerelease: true - # release RHEL package - - name: Package RPM (RHEL-family) - if: github.event.inputs.release_tag != '' + rpm: + needs: build + if: | + (github.event_name == 'workflow_dispatch' && github.event.inputs.release_tag != '') || + (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')) + runs-on: ubuntu-24.04 + container: + image: quay.io/almalinuxorg/10-base:latest + options: --platform=linux/amd64/v2 + env: + RELEASE_TAG: ${{ github.event.inputs.release_tag != '' && github.event.inputs.release_tag || github.ref_name }} + + steps: + - name: Prepare tools (Red Hat) run: | - chmod 755 package-rhel.sh - # Build for both x86_64 and aarch64 in one go (explicit version passed; no --buildfrom) - ./package-rhel.sh "${{ github.event.inputs.release_tag }}" --arch all + dnf -y makecache + dnf -y install epel-release + dnf -y install sudo git rpm-build rpmdevtools dnf-plugins-core rsync findutils tar gzip unzip which + + - name: Checkout repo (for scripts) + uses: actions/checkout@v5.0.0 + with: + submodules: 'recursive' + fetch-depth: '0' + + - name: Restore build artifacts + uses: actions/download-artifact@v4 + with: + name: v2rayN-linux + path: ${{ github.workspace }}/v2rayN/Release + + - name: Ensure script permissions + run: chmod 755 package-rhel.sh + + - name: Package RPM (RHEL-family) + run: ./package-rhel.sh "${RELEASE_TAG}" --arch all - name: Collect RPMs into workspace - if: github.event.inputs.release_tag != '' run: | - mkdir -p "${{ github.workspace }}/dist/rpm" - rsync -av "$HOME/rpmbuild/RPMS/" "${{ github.workspace }}/dist/rpm/" - # Rename to requested filenames - find "${{ github.workspace }}/dist/rpm" -name "v2rayN-*-1.x86_64.rpm" -exec mv {} "${{ github.workspace }}/dist/rpm/v2rayN-linux-rhel-x64.rpm" \; || true - find "${{ github.workspace }}/dist/rpm" -name "v2rayN-*-1.aarch64.rpm" -exec mv {} "${{ github.workspace }}/dist/rpm/v2rayN-linux-rhel-arm64.rpm" \; || true + mkdir -p "$GITHUB_WORKSPACE/dist/rpm" + rsync -av "$HOME/rpmbuild/RPMS/" "$GITHUB_WORKSPACE/dist/rpm/" || true + find "$GITHUB_WORKSPACE/dist/rpm" -name "v2rayN-*-1*.x86_64.rpm" -exec mv {} "$GITHUB_WORKSPACE/dist/rpm/v2rayN-linux-rhel-64.rpm" \; || true + find "$GITHUB_WORKSPACE/dist/rpm" -name "v2rayN-*-1*.aarch64.rpm" -exec mv {} "$GITHUB_WORKSPACE/dist/rpm/v2rayN-linux-rhel-arm64.rpm" \; || true + echo "==== Dist tree ====" + ls -R "$GITHUB_WORKSPACE/dist/rpm" || true - name: Upload RPM artifacts - if: github.event.inputs.release_tag != '' uses: actions/upload-artifact@v5.0.0 with: name: v2rayN-rpm - path: | - ${{ github.workspace }}/dist/rpm/**/*.rpm + path: dist/rpm/**/*.rpm - name: Upload RPMs to release uses: svenstaro/upload-release-action@v2 - if: github.event.inputs.release_tag != '' with: - file: ${{ github.workspace }}/dist/rpm/**/*.rpm - tag: ${{ github.event.inputs.release_tag }} + file: dist/rpm/**/*.rpm + tag: ${{ env.RELEASE_TAG }} file_glob: true prerelease: true diff --git a/package-rhel.sh b/package-rhel.sh index 8384e765..b93ea82c 100644 --- a/package-rhel.sh +++ b/package-rhel.sh @@ -19,6 +19,23 @@ else exit 1 fi +# ======================== Kernel version check (require >= 6.11) ======================= +MIN_KERNEL_MAJOR=6 +MIN_KERNEL_MINOR=11 +KERNEL_FULL=$(uname -r) +KERNEL_MAJOR=$(echo "$KERNEL_FULL" | cut -d. -f1) +KERNEL_MINOR=$(echo "$KERNEL_FULL" | cut -d. -f2) + +echo "[INFO] Detected kernel version: $KERNEL_FULL" + +if (( KERNEL_MAJOR < MIN_KERNEL_MAJOR )) || { (( KERNEL_MAJOR == MIN_KERNEL_MAJOR )) && (( KERNEL_MINOR < MIN_KERNEL_MINOR )); }; then + echo "[ERROR] Kernel $KERNEL_FULL is too old. Requires Linux >= ${MIN_KERNEL_MAJOR}.${MIN_KERNEL_MINOR}." + echo "Please upgrade your system or use a newer container (e.g. Fedora 42+, RHEL 10+, Debian 13+)." + exit 1 +fi + +echo "[OK] Kernel version >= ${MIN_KERNEL_MAJOR}.${MIN_KERNEL_MINOR}." + # ===== Config & Parse arguments ========================================================= VERSION_ARG="${1:-}" # Pass version number like 7.13.8, or leave empty WITH_CORE="both" # Default: bundle both xray+sing-box diff --git a/v2rayN/ServiceLib/Resx/ResUI.fr.resx b/v2rayN/ServiceLib/Resx/ResUI.fr.resx index 2222d8c4..a56802e3 100644 --- a/v2rayN/ServiceLib/Resx/ResUI.fr.resx +++ b/v2rayN/ServiceLib/Resx/ResUI.fr.resx @@ -472,7 +472,7 @@ Langue (redémarrage requis) - Importer des liens depuis le presse-papiers (Ctrl+V) + Importer liens depuis le presse-papiers (Ctrl+V) Scanner le QR code à l’écran (Ctrl+S) @@ -619,7 +619,7 @@ Sécurité couche transport (TLS) - *tcp par défaut ; un mauvais choix empêchera la connexion + *tcp par défaut ; un mauvais choix bloque la connexion Type de Core @@ -652,7 +652,7 @@ Port Socks - *Valeur du port Socks pour la configuration personnalisée (facultatif). Si défini, Xray/sing-box (Tun) démarrera un service Socks en amont supplémentaire pour fournir le routage sélectif et l’affichage de la vitesse. + *Valeur du port Socks (config perso, optionnelle). Si défini, Xray/sing-box (Tun) démarre un service Socks en amont supplémentaire pour fournir le routage sélectif et l’affichage de la vitesse. Parcourir @@ -670,7 +670,7 @@ Masquer la fenêtre au démarrage - Intervalle de mise à jour automatique des fichiers Geo (heures) + Intervalle de mise à jour auto des fichiers Geo (heures) Core : paramètres de base @@ -691,7 +691,7 @@ domainStrategy de Freedom (sortant) - Auto-ajuster la largeur des colonnes après maj. des abonnements + Auto-ajuster la largeur des colonnes après maj. abonnements Vérifier les mises à jour pré-version (à activer avec prudence) @@ -724,7 +724,7 @@ Mot de passe d’authentification - DNS personnalisés (plusieurs possibles, séparés par des virgules) + DNS perso (plusieurs configurables, séparés par virgules) Lever la restriction de proxy en boucle locale pour les applications Win10 UWP @@ -865,7 +865,7 @@ Documentation détaillée des règles - Saisie de DnsObject prise en charge (format JSON), cliquer pour voir la documentation + Saisie DnsObject prise en charge (format JSON), cliquer pour doc Laissez vide pour les groupes ordinaires @@ -898,7 +898,7 @@ Filtrage par alias (regex) - Afficher les journaux + Afficher les logs Activer Tun @@ -979,7 +979,7 @@ En attente du test (appuyer sur Échap pour arrêter)... - Désactivez ceci en cas de coupures anormales + Désactiver cette option si coupure anormale Mise à jour désactivée, abonnement ignoré @@ -1009,10 +1009,10 @@ DNS personnalisé sing-box - Veuillez renseigner la structure JSON DNS ; cliquer pour voir la documentation + Saisissez la structure JSON DNS ; cliquez pour voir la doc. - Cliquez pour importer la configuration DNS par défaut + Cliquez pour importer la config DNS par défaut Stratégie résolution domaine (sing-box) @@ -1045,10 +1045,10 @@ Algo contrôle congestion - Alias de configuration du proxy amont + Alias de config du proxy amont - Alias de configuration du proxy aval + Alias de config du proxy aval Assurez-vous que l’alias config existe et est unique @@ -1114,7 +1114,7 @@ Activer le fragmentation (Fragment) - Activer le fichier de cache de sing-box (fichiers de reˋgles) + Activer le fichier de cache de sing-box (fichiers règles) Set de règles sing-box perso @@ -1207,7 +1207,7 @@ Stratégie de résolution par défaut des sortants - Orientation de la mise en page principale (redémarrage requis) + Orientation mise en page principale (redémarrage requis) Adresse de résolution de domaine pour sortants @@ -1330,7 +1330,7 @@ JSON brut XHTTP Extra, format : { XHTTPObject } - Masquer dans la barre d’état lors de la fermeture de la fenêtre + Masquer dans la barre d’état à la fermeture de la fenêtre Niveau de concurrence lors des tests multithread @@ -1351,7 +1351,7 @@ Thème - Copier la commande proxy terminal vers le presse-papiers + Copier la cmd proxy terminal dans le presse-papiers Recommencer le test des éléments échoués, {0} restants. Appuyez sur Échap pour arrêter... @@ -1369,7 +1369,7 @@ Plage de ports sautés - Écrase le port ; pour plusieurs groupes, séparez par des virgules (,) + Écrase le port ; pour plusieurs groupes, séparer par virgules (,) Générer un groupe de stratégie depuis plusieurs profils @@ -1447,7 +1447,7 @@ Valider les IP des domaines de la région concernée - Après configuration, les IP renvoyées pour les domaines régionaux (p. ex. geosite:cn) seront validées ; seules les IP attendues seront retournées + Après config, les IP renvoyées des domaines régionaux (ex. geosite:cn) seront vérifiées ; seules les IP attendues seront retournées. Activer le DNS personnalisé @@ -1471,7 +1471,7 @@ Modèle de configuration complet v2ray - Ajoute seulement la configuration sortante, routing.balancers et routing.rules.outboundTag. Voir la documentation. + Ajoute seulement la config sortante, routing.balancers et routing.rules.outboundTag. Voir la doc. N’ajoutez pas de sorties pour protocoles non-proxy. @@ -1492,10 +1492,10 @@ Début de l’analyse et du traitement du contenu d’abonnement - Sélectionner une configuration + Choisir une config. - Actif globalement par défaut, avec filtrage FakeIP intégré ; ne fonctionne que dans sing-box + Actif globalement par défaut, avec filtre FakeIP intégré ; ne fonctionne que dans sing-box Veuillez ajouter au moins une configuration