Skip to content

Commit 6e1971e

Browse files
authored
add flatpak article (#28)
* add flatpak article * Fixed date * Fixed half-space needed words * fix some typos * Fixed more typos
1 parent 8ce753f commit 6e1971e

4 files changed

Lines changed: 1125 additions & 0 deletions

File tree

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
---
2+
title: فلت‌هاب و فلت‌پک
3+
author: مهیار
4+
date: 2025-10-19
5+
---
6+
7+
![](/assets/img/flatpak-deps-management-and-submission/flatpak-banner.jpg)
8+
9+
وجود یک سیستم بسته‌بندی و مدیریت نرم‌افزار یکپارچه همیشه از چالش‌های مهم در توزیع‌های لینوکسی بوده است. در این مقاله، به نحوهٔ شکل‌گیری سیستم بسته‌بندی **Flatpak** و روش نصب و استفادهٔ آن در توزیع‌های اصلی لینوکسی می‌پردازیم.
10+
11+
## تاریخچه
12+
13+
نخستین تلاش جدی برای ارائهٔ قالبی یکپارچه و مستقل از توزیع‌های لینوکسی با پروژه‌ای به نام **XDG-App** آغاز شد. این پروژه را **الکساندر لارسن**، از توسعه‌دهندگان گنوم، پایه‌گذاری کرد.
14+
با گذر زمان و استقبال کاربران، XDG-App به **Flatpak** تغییر نام داد و به‌عنوان یک سیستم بسته‌بندی و توزیع نرم‌افزار در محیط ایزوله (sandbox) معرفی شد. از همان زمان، Flatpak همراه با مخزن مرکزی **Flathub** به زیرساختی محبوب برای انتشار و دریافت برنامه‌ها در اکوسیستم لینوکس تبدیل شد.
15+
16+
## فلت‌پک چیست؟
17+
18+
**فلت‌پک** یک سیستم بسته‌بندی و توزیع نرم‌افزار برای لینوکس است که برنامه‌ها را در محیط‌های ایزوله اجرا می‌کند. در این مدل، هر برنامه همراه با کتابخانه‌های مورد‌نیاز خود نصب می‌شود و از دیگر برنامه‌ها مستقل است؛ در نتیجه، مشکل تداخل نسخه‌های مختلف کتابخانه‌ها از بین می‌رود.
19+
20+
از دیگر مزایای این روش، **امنیت بیشتر و سرعت بالاتر I/O** است. فلت‌پک ضمن تأمین امنیت به‌واسطهٔ محیط ایزوله، از چک‌کردن مکرر پرمیشن‌های I/O جلوگیری می‌کند و در این‌گونه عملیات‌ها، سرعت بهینه‌تری نسبت به بسته‌های بومی از خود نشان می‌دهد. همچنین بسته‌های فلت‌پک را می‌توان روی توزیع‌های مختلف مانند **اوبونتو، فدورا، آرچ** و **دبیان** بدون هیچ تغییری اجرا کرد.
21+
22+
![معماری فلت‌پک](/assets/img/flatpak-deps-management-and-submission/diagram.svg)
23+
<p align="center"><em>شماتیکی از نحوهٔ ایزوله‌سازی و مدیریت وابستگی‌ها در فلت‌پک
24+
منبع: <a href="https://docs.flatpak.org/en/latest/basic-concepts.html">اسناد Flatpak</a></em></p>
25+
26+
## چرا فلت‌پک؟
27+
28+
یکی از مهم‌ترین ویژگی‌های فلت‌پک، **سازگاری بین توزیع‌ها** است. توسعه‌دهندگان می‌توانند یک‌بار بسته را بسازند و آن را در تمام توزیع‌ها اجرا کنند.
29+
از سوی دیگر، اجرای برنامه‌ها در محیط‌های ایزوله، امنیت سیستم را افزایش می‌دهد؛ زیرا هر برنامه تنها به منابعی دسترسی دارد که صراحتاً به آن اجازه داده شده است.
30+
همچنین روند به‌روزرسانی برنامه‌ها بسیار سرراست و راحت است و در نتیجه، آخرین نسخهٔ برنامه در اسرع وقت در فلت‌هاب قرار داده می‌شود.
31+
32+
با این حال، فلت‌پک به‌دلیل دانلود مکرر کتابخانه‌ها ممکن است فضای بیشتری اشغال کند (گاهی کتابخانه‌های مشترک در فلت‌پک از این مشکل تا حدودی جلوگیری می‌کنند). همچنین به‌دلیل ماهیت ایزوله‌بودن برنامه‌ها، گاهی دسترسی مستقیم به کارت گرافیک با چالش‌هایی روبه‌رو است و بنچ‌مارک‌های مختلف نشان می‌دهند بسته‌های Flatpak و Snap در رندر با استفاده از Blender و GIMP، عملکرد ضعیف‌تری نسبت به بسته‌های بومی دارند.
33+
34+
## مدیریت وابستگی‌ها در فلت‌پک
35+
36+
فلت‌پک برای مدیریت وابستگی‌ها از مفهومی به نام **Runtime** استفاده می‌کند. Runtime مجموعه‌ای از کتابخانه‌ها و ابزارهای پایه است که برنامه‌ها برای اجرا به آن نیاز دارند.
37+
در کنار آن، **SDK** برای توسعه‌دهندگان جهت ساخت بسته ارائه می‌شود.
38+
39+
بسته به نوع برنامه، می‌توان از Runtimeهای مختلف مانند **GNOME Platform**، **KDE Platform** یا **Freedesktop** استفاده کرد.
40+
فهرست کامل Runtimeها را می‌توانید در **[اسناد فلت‌پک](https://docs.flatpak.org/en/latest/available-runtimes.html)** مشاهده کنید.
41+
42+
برای نصب Runtimeها می‌توانید از دستورات خود فلت‌پک استفاده کنید:
43+
44+
```bash
45+
flatpak install flathub org.gnome.Platform
46+
flatpak install flathub org.gnome.Sdk
47+
```
48+
49+
## پورتال‌های XDG
50+
51+
پورتال‌های XDG نقش مهمی در تعامل ایمن میان برنامه‌های ایزوله و سیستم میزبان دارند.
52+
به‌عنوان مثال، زمانی‌که برنامه‌ای نیاز به باز‌کردن فایل دارد، درخواست خود را به پورتال ارسال می‌کند. پورتال یک دیالوگ استاندارد باز‌کردن فایل مطابق با محیط میزکار کاربر نمایش می‌دهد و پس از انتخاب کاربر، تنها فایل انتخاب‌شده در اختیار برنامه قرار می‌گیرد.
53+
54+
این سیستم شامل پورتال‌های متعددی مانند **File Chooser**، **Screenshot**، **Camera**، **Notification** و **Print** بوده و کتابخانه‌های مدرن مانند **GTK ۴** و **Qt ۶** نیز از این پورتال‌ها پشتیبانی می‌کنند.
55+
56+
## ساخت و اجرای یک بستهٔ فلت‌پک
57+
58+
برای شروع، ابزار `flatpak-builder` را نصب کنید:
59+
60+
```bash
61+
sudo apt install flatpak-builder # اوبونتو/دبیان
62+
sudo dnf install flatpak-builder # فدورا
63+
```
64+
65+
حال یک فایل Manifest با نام آیدی برنامه ایجاد کنید (در مثال ما، نام فایل `my.example.app` خواهد بود):
66+
67+
```json
68+
{
69+
"app-id": "my.example.app",
70+
"runtime": "org.gnome.Platform",
71+
"runtime-version": "49",
72+
"sdk": "org.gnome.Sdk",
73+
"command": "exampleapp",
74+
"finish-args": [
75+
"--share=ipc",
76+
"--socket=wayland",
77+
"--device=dri",
78+
"--filesystem=home"
79+
],
80+
"modules": [
81+
{
82+
"name": "myapp",
83+
"sources": [
84+
{
85+
"type": "git",
86+
"url": "https://github.com/example/app.git",
87+
"tag": "v1.0.0"
88+
}
89+
]
90+
}
91+
]
92+
}
93+
```
94+
> پ.ن: این نمونه، بسیار مختصر از یک برنامهٔ فلت‌پک است. هنگام ثبت برنامه در [Flathub](https://flathub.org)، ممکن است به دلایل مختلفی در این فایل بازنگری انجام شود.
95+
> برای اطلاعات بیشتر [اسناد فلت‌پک](https://docs.flatpak.org/en/latest/manifests.html) را مطالعه کنید.
96+
97+
اکنون می‌توانید بسته را بسازید و به‌صورت محلی اجرا کنید:
98+
99+
```bash
100+
flatpak-builder --repo=myrepo build-dir my.example.app.json
101+
flatpak install --user myrepo my.example.app
102+
```
103+
104+
## انتشار در فلت‌هاب
105+
106+
![](/assets/img/flatpak-deps-management-and-submission/flathub-ss.png)
107+
<p align="center"><em>نمایه‌ای از بازارچهٔ Flathub<br>
108+
منبع: <a href="https://flathub.org">فلت‌هاب</a></em></p>
109+
110+
فلت‌هاب، اصلی‌ترین مخزن بسته‌های فلت‌پک است. در این قسمت به‌صورت خلاصه، به نحوهٔ ثبت برنامه‌های خود در فلت‌هاب می‌پردازیم.
111+
112+
موارد مهم هنگام ثبت برنامه‌ها عبارت‌اند از:
113+
- بیلدشدن برنامه بدون نیاز به اینترنت
114+
- داشتن تگ گیت برای هرکدام از نسخه‌ها
115+
- وجود فایل Manifest بهینه (موارد جزئی هنگام ثبت برنامه به شما تذکر داده خواهد شد)
116+
- وجود فایل AppStream Manifest در پوشهٔ data برنامه
117+
- پاس‌شدن [Linter Check](https://docs.flathub.org/docs/for-app-authors/linter) فایل Manifest شما (قبل از درخواست باید برای ثبت [Exception](https://docs.flathub.org/docs/for-app-authors/linter#exceptions) اقدام کنید)
118+
- کارکردن روی برنامه مطابق با [راهنمای کیفیت](https://docs.flathub.org/docs/for-app-authors/metainfo-guidelines/quality-guidelines) فلت‌هاب
119+
120+
> پ.ن: موارد بسیار زیادند، اما در این‌جا به خلاصه‌ای از آن‌ها اشاره شده است. جهت مطالعهٔ بیشتر به [اسناد فلت‌هاب](https://docs.flathub.org/docs/for-app-authors/requirements) مراجعه کنید.
121+
122+
## نتیجه‌گیری
123+
124+
فلت‌پک، روشی مدرن، ایمن و توزیع‌پذیر برای اجرای نرم‌افزارها در لینوکس است. اگرچه ممکن است فضای بیشتری نسبت به بسته‌های بومی استفاده شود، اما در مقابل، کاربر را از مزایایی مانند **سازگاری بین توزیع‌ها، امنیت بالا** و **دسترسی سریع به نسخه‌های جدید** بهره‌مند می‌سازد.

0 commit comments

Comments
 (0)