انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


ارائه ۲۴٫۱۰ اوبونتو منتشر شد 🎉

نویسنده موضوع: معرفی استایل و آیکن و فونت  (دفعات بازدید: 2250 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 784
  • جنسیت : پسر
  • Debian + Mate
پاسخ : معرفی استایل و آیکن و فونت
« پاسخ #15 : 23 تیر 1401، 05:41 ق‌ظ »
( اگر در رابطه با این کد بیشتر توضیح بدهید، سپاسگزار خواهم بود.)

نقل‌قول
You need a file called a makefile to tell make what to do. Most often, the makefile tells make how to compile and link a program.
https://www.gnu.org/software/make/manual/make.html

نقل‌قول
.PHONY

    The prerequisites of the special target .PHONY are considered to be phony targets. When it is time to consider such a target, make will run its recipe unconditionally, regardless of whether a file with that name exists or what its last-modification time is. See Phony Targets.
https://www.gnu.org/software/make/manual/html_node/Special-Targets.html#Special-Targets

نقل‌قول
4.6 Phony Targets

A phony target is one that is not really the name of a file; rather it is just a name for a recipe to be executed when you make an explicit request. There are two reasons to use a phony target: to avoid a conflict with a file of the same name, and to improve performance.
https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html

نقل‌قول
By default, Makefile targets are "file targets" - they are used to build files from other files.
نقل‌قول
However, sometimes you want your Makefile to run commands that do not represent physical files in the file system.
https://stackoverflow.com/questions/2145590/what-is-the-purpose-of-phony-in-a-makefile

نقل‌قول
The Makefile
To use make in your project, you need to have a file named Makefile at the root of your project. This file instructs make on what to do. The Makefile consists of a set of rules. Each rule has 3 parts: a target, a list of prerequisites, and a recipe.
نقل‌قول
Note that there are tabs before the recipe lists. Anything other than tabs will result in an error.
نقل‌قول
The target represents a goal that you want to achieve, usually this is a file that needs to be created in your build. The prerequisites list tells make which files are this target dependent on. The prerequisites can be a file or another target. Finally the recipes are a list of shell commands that will be executed by make as part of building the target.
https://earthly.dev/blog/python-makefile

خلاصه یک آدم بیکار می خواهد که یک عمر بنشیند و بنشیند تا ببیند که درد این Makefile  بی زبون نامهربون چیه؟!


آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 784
  • جنسیت : پسر
  • Debian + Mate
پاسخ : معرفی استایل و آیکن و فونت
« پاسخ #16 : 25 تیر 1401، 10:53 ق‌ظ »
با سلام مجدد.

  ۱- در نصب فایل های بصورت deb. با استفاده از gdebi در محیط گرافیکی root، بر روی آن
  فایل کلیک راست کرده و فرآیند نصب صورت می گیرد ولی نمی دانم چرابرای کاربر فعلی ام که عضو sudo هم است ،
   هر چند که گزینه gdebi برای در منو کلیک راست برای آن می آید ولی بعد از زدن دگمه Install Package  هیچ گونه اتفاقی نمی افتد و فرآیند نصب
  صورت نمی گیرد و مجبورم بصورت خط فرمان از gedbi در محیط کاربر فعلی ام استفاده نمایم،یعنی :
sudo gdebi  file.deb
 ۲-برای راحتی کار برای ساخت پکیج های deb. از source code   ، چندین برنامه مانند debianizer و debreate  و  debmaker و...
 ایجاد شده است، خواستم نصبشان کنم ولی کار نکردند ، این مشکلات پیش آمدند:
 
 برای debianizer بعد از نصب این مشکل پیش آمد.( عکس Debianizer.png )
 برای debreate در زمان نصب این error را می دهد.( عکس debreate.png ) در مخازن دبیان بسته ای بنام wxgtk3.0 و wxgtk2.8 وجود ندارد.
 برای  debmaker ، اصلا نمی توانم نصبش کنم.( عکس debmaker.png ) چرا نصب نمی شود؟ چرا فایل هایی مانند Makefile یا install.sh و ... ندارد؟!

 آیا بغیر از اینها ، برنامه دیگری در این زمینه می شناسید؟


 ۳- در فولدر دبیان ، فایلی بنام control است. در داخل این فایل قسمتی است بنام Depends ، کدامیک از موارد زیر را می خواهیم به این Depends  معرفی کنیم:

  منظور Requirements قید شده در فایل README.md :

 مثلا :
نقل‌قول
  ## Requirements

- GTK `>=3.20`
- `gnome-themes-extra` (or `gnome-themes-standard`)
- Murrine engine — The package name depends on the distro.
  - `gtk-engine-murrine` on Arch Linux
  - `gtk-murrine-engine` on Fedora
  - `gtk2-engine-murrine` on openSUSE
  - `gtk2-engines-murrine` on Debian, Ubuntu, etc.
- `sassc` — build dependency


 یا عناصر موجود در فولدر release است که می خواهیم به برنامه معرفی کنیم . ( عکس release.png )
 برای ساخت فایل deb. در مبحث Depends ، بغیر از این فایل control ، جای دیگری لازم نیست که وابستگی ها را به برنامه معرفی بنماییم؟

 
 ۴-  بسته equivs چه کمکی در این زمینه می تواند برایم داشته باشد؟


آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5124
  • جنسیت : پسر
پاسخ : معرفی استایل و آیکن و فونت
« پاسخ #17 : 25 تیر 1401، 03:53 ب‌ظ »
( اگر در رابطه با این کد بیشتر توضیح بدهید، سپاسگزار خواهم بود.)
اون PHONY. باعث میشه که make، هدف install رو مربوط به یه فایل ندونه.
اگه PHONY. مشخص نمیشد و یه فایل به اسم install داخل جایی قرار داشت که make install رو اجرا می‌کردید، اونوقت make کار خاصی انجام نمیداد چون فایلی به همین اسم اونها وجود داره.

این یه آموزش فارسی کوتاهه که می‌تونید ببینید و در مورد Makefile ها اطلاعات بدست بیارید.

در مورد عکس اولی که توی همین ارسال گذاشتید، می‌تونید Architecture رو به all تغییر بدید. از اونجایی که این بسته فقط شامل یه سری تم هست و به چیز خاصی نیاز نداره، مهم نیست معماری پردازنده چی باشه. در هر صورت میشه از اون استفاده کرد.
هر چند توی این شرایط، فرق زیادی نداره که all باشه یا نه چون فقط قراره روی سیستم شما نصب بشه. قرار نیست وارد یه مخزن عمومی بشه.

اینبار می خواهم این فایل  deb. را از طریق دیگری ایجاد نمایم. ولی در این روش  با مشکل روبرو می شوم.
مانند مثال قبلی (قبل از اصلاح) در سیستم نصب می شود ولی چون هیچ فایلی که شامل تم باشه، داخل اون بسته deb قرار ندارد،
کار نمی کند و چیزی به قسمت  Style  در  Appearance اضافه نمی شود و فقط نشان می دهد که به صورت ظاهری به Synaptic اضافه شده است.
راهکار قبلی را خواستم برای این روش ساخت فایل  deb. استفاده کنم، یعنی ساختن Makefile ولی فایده نداشت .
اگه می‌خواهید با debhelper و debuild بسته deb بسازید، باید چیز‌های بیشتری رو در نظر بگیرید.
این یه راهنمای مناسب برای شروع هست.

از اینجا می‌تونید لینک و منبع به بقیه راهنما‌ها رو پیدا کنید. (یه لینک به راهنمای بالایی هم هست)

بهتره در مورد ساختار بسته‌های deb و وظیفه فایل‌های داخل اون اطلاعات بدست بیارید. فعلا اینها رو ببینید: deb-dsc(5) deb(5) deb-control(5)
برای اطلاعات بیشتر می‌تونید اینها رو هم ببینید: deb-conffiles(5) deb-md5sums(5)
بعد می‌تونید صفحات man مربوط postinst preinst postrm prerm رو ببینید: deb-postinst(5) deb-preinst(5) deb-postrm(5) deb-prerm(5)

در آخر می‌تونید deb-triggers(5)  و deb-shlibs(5) رو ببینید. ولی ممکنه اینها یکم سخت باشند.

این صفحات man همراه بسته dpkg-dev هستند. یه سری صفحه man دیگه هم همراه این بسته هستند. می‌تونید اونها رو هم ببینید.
می‌تونید اینجوری ببینید چه man هایی به زبان انگلیسی همراه بسته dpkg-dev هست:
dpkg -L dpkg-dev | grep '/usr/share/man/man[1-9]'

برای debianizer بعد از نصب این مشکل پیش آمد.( عکس Debianizer.png )
به نظر میاد این برنامه با java نوشته شده. برای اجرای اون، به محیط اجرایی جاوا (jre) نیاز دارید.
بسته openjdk-11-jre یا openjdk-17-jre رو نصب کنید. اولی نسخه ۱۱ جاوا هست و دومی نسخه ۱۷.

نقل‌قول
برای debreate در زمان نصب این error را می دهد.( عکس debreate.png ) در مخازن دبیان بسته ای بنام wxgtk3.0 و wxgtk2.8 وجود ندارد.
مگه اون رو از مخازن نصب نمی‌کنید؟ اگه اینجوره پس باید وابستگی‌هاش هم همراهش نصب بشن. یا اینکه برای اون برنامه، مخزن جدا اضافه کردید؟

در ضمن طبق چیزی که توی عکس هست، به بسته‌های python-wxgtk3.0 و python-wxgtk2.8 نیاز داره.
از اونجایی که توی دبیان و همینطور مینت، از پایتون ۳ استفاده میشه، شاید اسم اسم بسته‌ها python3-wxgtk3.0 و python3-wxgtk2.8 باشه.

توی دبیان چنین بسته‌هایی نیست. ولی بسته python3-wxgtk4.0 وجود داره.

نقل‌قول
برای  debmaker ، اصلا نمی توانم نصبش کنم.( عکس debmaker.png ) چرا نصب نمی شود؟ چرا فایل هایی مانند Makefile یا install.sh و ... ندارد؟!
لازم نیست حتما یه Makefile یا install.sh اونجا باشه. توسعه‌دهنده می‌تونه با هر روشی که می‌خواهد، برنامه رو کامپایل کنه.
توی هون فایل Readme.md گفته چیکار کنید.

این برنامه با go نوشته شده. برای اینکه بتونید اون رو کامپایل کنید، باید ابزار‌های مورد نیاز رو داشته باشید.
اول بسته golang-go رو نصب کنید تا چیز‌های مورد نیاز نصب بشن.
sudo apt install golang-go

بعد طبق چیزی که توی فایل Readme.md گفته، به این شکل برنامه رو دریافت و کامپایل کنید:
go get github.com/linuxerwang/debmaker

فکر کنم بعد از اینکار، فایل‌های اجرایی داخل دایرکتوری پروژه قرار میگیرن.

نقل‌قول
آیا بغیر از اینها ، برنامه دیگری در این زمینه می شناسید؟
با برنامه debmake می‌تونید یه کد منبع رو به کد منبع دبیانی تغییر بدید تا بشه با اون یه بسته deb ساخت. فکر کنم این هم از debhelper استفاده می‌کنه.

نقل‌قول
۳- در فولدر دبیان ، فایلی بنام control است. در داخل این فایل قسمتی است بنام Depends ، کدامیک از موارد زیر را می خواهیم به این Depends  معرفی کنیم:

  منظور Requirements قید شده در فایل README.md :

 مثلا :
نقل‌قول
  ## Requirements

- GTK `>=3.20`
- `gnome-themes-extra` (or `gnome-themes-standard`)
- Murrine engine — The package name depends on the distro.
  - `gtk-engine-murrine` on Arch Linux
  - `gtk-murrine-engine` on Fedora
  - `gtk2-engine-murrine` on openSUSE
  - `gtk2-engines-murrine` on Debian, Ubuntu, etc.
- `sassc` — build dependency
در مورد GTK `>=3.20 چیزی نمی‌دونم. احتمالا اسم چندین کتابخانه مختلف رو باید نوشت. ولی از اونجایی که این یه تم هست، مطمئن نیستم اینکار باید انجام بشه یا نه.

برای gnome-themes-extra کافیه همین رو توی فایل control نوشت چون چنین بسته‌ای توی مخازن دبیان هست.
برای murrine engine، طبق چیزی که اونجا گفته، لازمه gtk2-engines-murrine توی فایل control به عنوان یکی دیگه از وابستگی‌ها نوشته بشه.

علاوه بر بسته‌های معمولی deb، بسته‌های کد منبع هم وجود دارند. اینها در واقعیت کد منبع برنامه هستند که برای کار توی دبیان و ایجاد deb از اونها، تغییر پیدا کردند.
برای اینکه بتونید از این بسته‌ها، بسته deb ایجاد کنید، معمولا به یه سری ابزار نیاز دارید. این ابزار‌ها به عنوان build dependency مشخص میشن.

اگه می‌خواهید یه بسته اصولی از orchis بسازید، لازمه sassc رو به عنوان build dependency اون مشخص کنید.
ولی از اونجایی که قرار نیست این  بسته رو منتشر کنید، اینکار لازم نیست. اگه هم انجام بدید اتفاقی نمی‌افته.

شاید لازم باشه کمترین نسخه بسته‌ها که orchis به اونها وابسته هست رو هم مشخص کنید تا APT درست کار کنه. مطمئن نیستم.
میدونید که زکات علم نشر آن است

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 784
  • جنسیت : پسر
  • Debian + Mate
پاسخ : معرفی استایل و آیکن و فونت
« پاسخ #18 : 26 تیر 1401، 11:40 ق‌ظ »
بر طبق این دستورالعمل :

https://wiki.debian.org/Packaging/Intro?action=show&redirect=IntroDebianPackaging

می خواهم بروم جلو:
نقل‌قول
Step 1: Rename the upstream tarball

دوباره به سایت:
https://github.com/vinceliuice/Orchis-theme
مراجعه می کنم و اینبار بجای zip ، فایل tar.gz.  را دانلود می کنم(عکس 1) ، در مثالی که در سایت دبیان آورده فایل hithere_1.0.orig.tar.gz
دارای واژه orig.tar.gz است ولی مال من tar.gz. می باشد.این orig چیست؟

سایت دبیان می گوید:
نقل‌قول
Note that there is an underscore (_), not a dash (-), in the name. This is important.

و اینکار را می کند:
$ mv hithere-1.0.tar.gz hithere_1.0.orig.tar.gz
من هم می خواهم از همین دستور استفاده کنم.( عکس 2)
سوال: چون در اسم فایل ، شماره ورژن ننوشته ،آیا برای استفاده در سیستم خودم همین طور الکی می توانم ورژنی بدهم؟( مثلا من در اینجا همین طوری ورژن 1.0 را دادم.)


نقل‌قول
Step 2: Unpack the upstream tarball

در سایت دبیان از این دستور برای  Unpack کردن استفاده کرده است:

$ tar xf hithere_1.0.orig.tar.gz
من هم از همین دستور می خواهم استفاده کنم.( عکس 3)

نقل‌قول
The source will unpack into a directory of the same name, and upstream version with a hyphen in between (not an underscore), so the upstream tarball should unpack into a directory called "hithere-1.0".

In this case, the tarball already unpacks into the correct subdirectory, so no changes are required.

ولی همانطور که می بینید تا جایی که من متوجه می شوم با این دستور در مثال سایت دبیان فایل hithere_1.0.orig.tar.gz به hithere-1.0 تبدیل می شود
 ولی چرا در مال من فایل orchis_1.0.tar.gz تبدیل می شود به Orchis-theme-2022-05-29 نه به orchis-1.0 ، چیزی به ذهنم نمی رسد!


آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5124
  • جنسیت : پسر
پاسخ : معرفی استایل و آیکن و فونت
« پاسخ #19 : 27 تیر 1401، 04:06 ب‌ظ »
دوباره به سایت:
https://github.com/vinceliuice/Orchis-theme
مراجعه می کنم و اینبار بجای zip ، فایل tar.gz.  را دانلود می کنم(عکس 1) ، در مثالی که در سایت دبیان آورده فایل hithere_1.0.orig.tar.gz
دارای واژه orig.tar.gz است ولی مال من tar.gz. می باشد.این orig چیست؟
اول از همه، منظورم از کد منبع، فایل‌هایی هست که توسعه‌دهنده منتشر کرده.

منظورم از تغییر کد منبع اینه: اضافه کردن فایل به فایل‌های اصلی برنامه، تغییر بعضی قسمت‌ها، حذف بعضی چیز‌ها و کلا هر کار که بعد از اون، چیزی که پیش ما هست، با چیزی که توسعه دهنده منتشر کرده تفاوت داشته باشه. اینکه فقط access time و create time عوض بشن، تغییر حساب نمیشه.
عوض کردن دسترسی‌‌ و attribute  فایل‌ها، تغییر حساب میشه.

اون orig توی اسم نشون میده که این چیزی هست که توسط توسعه‌دهنده منتشر شده.
از اونجایی که قراره یه سری تغییرات روی کد منبع اعمال بشه، این تغییر اسم رو انجام میدن تا مشخص باشه که کد منبع، یه تفاوتی داره با چیزی که فایل‌های deb از اون ساخته شدند.

نقل‌قول
سوال: چون در اسم فایل ، شماره ورژن ننوشته ،آیا برای استفاده در سیستم خودم همین طور الکی می توانم ورژنی بدهم؟( مثلا من در اینجا همین طوری ورژن 1.0 را دادم.)
شاید با اینکار به مشکل بخورید. مطمئن نیستم.

نقل‌قول
در سایت دبیان از این دستور برای  Unpack کردن استفاده کرده است:

$ tar xf hithere_1.0.orig.tar.gz
من هم از همین دستور می خواهم استفاده کنم.( عکس 3)

نقل‌قول
The source will unpack into a directory of the same name, and upstream version with a hyphen in between (not an underscore), so the upstream tarball should unpack into a directory called "hithere-1.0".

In this case, the tarball already unpacks into the correct subdirectory, so no changes are required.

ولی همانطور که می بینید تا جایی که من متوجه می شوم با این دستور در مثال سایت دبیان فایل hithere_1.0.orig.tar.gz به hithere-1.0 تبدیل می شود
 ولی چرا در مال من فایل orchis_1.0.tar.gz تبدیل می شود به Orchis-theme-2022-05-29 نه به orchis-1.0 ، چیزی به ذهنم نمی رسد!
فکر کنم به این دلیل این اتفاق افتاده که موقع ایجاد اون فایل فشرده tar، اسم دایرکتوری، Orchis-theme-2022-05-29 بوده.
به طور دستی اسم دایرکتوری رو تغییر بدید به orchis-1.0 و ببینید میشه پیش رفت یا نه. هرچند فکر کنم این روش به نتیجه نرسه.

یه راه دیگه اینه که خودتون از دایرکتوری استخراج شده، فایل فشرده tar با اسم مناسب بسازید و عملیات استخراج و ساخت بسته deb رو دوباره با این فایل جدید شروع کنید.
برای اینکار اول برید داخل دایرکتوری که استخراج شده. بعد این رو بزنید:
tar -czf /path/to/output.tar.gz  --transform='s|^\.|orchis-1.0|' .
به جای path/to/output.tar.gz/ مسیر به جایی که می‌خواهید فایل فشرده tar ذخیره بشه رو قرار بدید.
دقت کنید یه نقطه آخر دستور هست. اون رو هم باید بذارید. اون رو به /. تغییر ندید.

بعد بررسی کنید این تغییر جواب میده یا نه.
نمی‌دونم این کاری که گفتم چقدر با استاندارد‌های دبیان هماهنگ هست. ولی ممکنه کار بده.
شاید خود دستور tar قابلیتی داشته باشه که با اون اسم چیز‌هایی که داخل فایل‌فشرده هست رو تغییر داد. مطمئن نیستم.
میدونید که زکات علم نشر آن است

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 784
  • جنسیت : پسر
  • Debian + Mate
پاسخ : معرفی استایل و آیکن و فونت
« پاسخ #20 : 28 تیر 1401، 09:06 ب‌ظ »
با تشکر مجدد از آقای Dragon- عزیز.
« آخرین ویرایش: 29 تیر 1401، 04:54 ق‌ظ توسط norouzi90 »

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 784
  • جنسیت : پسر
  • Debian + Mate
پاسخ : معرفی استایل و آیکن و فونت
« پاسخ #21 : 01 امرداد 1401، 02:31 ب‌ظ »
 در پوشه source  ، پوشه ای  بنام release  وجود دارد، که حاوی فایل هایی است.( عکس 1)
مسیر پوشه release بدین قرار است:

/home/a/Desktop/orchis-1/release/


در این پوشه release  فایلی بنام make-release.sh  هم وجود دارد(عکس 2 ) ، که با اجرای آن فایل های tar.xz موجود در پوشه release  ،  در همان پوشه اکسترکت شده و سپس همگی پوشه های اکسترکت شده در پایان دوباره حذف شده و در واقع محتویات پوشه release به حالت اولیه برمی گردد.
چه دستوری می توانم بکار ببرم تا پوشه های اکسترکت شده ناشی از اجرای
فایل  make-release.sh  بجای پوشه release  در مسیر  دیگری اکسترکت شوند( و در همانجا  هم باقی بمانند و حذف نشوند.)
ولی ابتدا بایستی پوشه های زیر ایجاد گردد ( هیچیک از این پوشه ها وجود ندارند و بایستی ساخته شوند)، یعنی:

/usr/share/themes/

مسیر پوشه های usr/share/themes  در زیر مجموعه مسیر  home/a/Desktop/orchis-1/ قرار خواهند گرفت.
یعنی مسیر این می شود:

home/a/Desktop/orchis-1/release/usr/share/themes/

و در واقع در پایان، پوشه های اکسترکت شده در داخل پوشه themes قرار بگیرند و در همانجا باقی بمانند و حذف نشوند.

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 784
  • جنسیت : پسر
  • Debian + Mate
پاسخ : معرفی استایل و آیکن و فونت
« پاسخ #22 : 02 امرداد 1401، 01:01 ق‌ظ »
البته  تا حد توانایی خودم توانستم ، از روش دوم( یعنی debuild  )  فایل deb. را بسازم.
چون برنامه نویس نیستم ، اینکار برایم  سخت بود و در عین حال جالب هم بود. 
نتایجی که بدست آوردم برای استفاده علاقمندان در اینجا قرار می‌دهم .

برای ساخت فایل deb. از سورس ، روشهای گوناگونی وجود دارد.
ساده‌ترین راهی که بخواهید در نظر بگیرید استفاده از دستور  sudo checkinstall می باشد.
با این مراحل:
۱- extract کردن فایل تاربال.
۲- رفتن به داخل پوشه extract شده.
(توجه شود در این روش تغییر نام پوشه extract شده برای ادامه کار اجباری نیست ، ولی سعی کنید که اگر از این روش استفاده می‌کنید ، اگر نام پوشه extract شده شما با نام یکی از بسته های موجود در مخازن اصلی توزیعتان یکی باشد ، حتماً نام پوشه extract شده را به نام دیگری تغییر بدهید.)
۳-در این روش برخلاف روش debuild نیازی به ساختن پوشه debian و متعلقات آن در داخل پوشه extract شده سورس نمی باشد.
۴- بنظر می‌رسد برای گرفتن نتیجه درست از این روش بایستی فایل Makefile در پوشه سورس تان باشد.اگر نباشد خودتان بایستی آنرا بسازید. چون در این مثال چنین فایلی در پوشه سورس موردنظرم وجود نداشت ،آقای Dragon- زحمت آنرا برایم کشیدند.
۵- استفاده از دستور sudo checkinstall 
با استفاده از این دستور علاوه بر اینکه این نرم‌افزار در سیستمتان نصب می‌شود که پکیج منیجر سیستمتان قادر به شناسایی و همچنین حذف آن می‌باشد ، یک فایل deb. ای در اختیارتان خواهد بود که هر وقت که خواستید دوباره با استفاده از این فایل دوباره آنرا نصب کنید.
۶- اگر خواستید بعد از حذف این نرم‌افزار با استفاده از فایل deb. آنرا دوباره نصب کنید ، حتماً یادتان باشد که در مراحل نصب در پاسخ به سؤال y/N  ، همین‌طوری فقط کلید اینتر را نزنید ، در این حالت نرم‌افزار برایتان نصب نخواهد شد ، ضروری است که حتماً حرف y را تایپ کرده و سپس اینتر را بزنید.(عکس 1)

خوب می‌رسیم به روش دوم(debuild) برای ساخت فایل deb. از سورس:




۱- extract کردن فایل تاربال.
۲- رفتن به داخل پوشه extract شده.
۳- در اینجا چون پوشه سورس ام فاقد پوشه دبیان و متعلقات آن می‌باشد ( و معمولاً در بیشتر موارد خودتان بایستی بسازید) .

نقل‌قول
''Debianization''

After the first compilation, it's time to create the Debian specific part of the package.

Debianize the package by using dh_make or one of the other automatic packaging tools.

https://wiki.debian.org/HowToPackageForDebian

یعنی اگر می‌خواهید از پوشه سورس ، فایل deb. بسازید ، بایستی در پوشه سورستان پوشه ای بنام debian با فایل‌های درون آن بسازید که به این عمل   Debianization می‌گویند ، که این عمل هم می‌تواند بصورت دستی و یا با استفاده از ابزارهایی مانند  dh_make بسازید ولی در اکثریت موارد باز هم نیازمند ویرایش فایل‌های درون پوشه debian هستید.
دستوری که باید بکار ببرید:

dh_make   --createorig
همانطور که در عکس 2 می‌بینید ، این دستور خطا داده است. خطایش هم این است که شما تنها مجازید در اسم پوشه ای که می‌خواهید در درون آن این دستور dh_make را اجرا بکنید ، تنها می‌توانید از حروف کوچک و اعداد بین صفر تا ده و همچنین علامت های  + و – و . استفاده کنید.
بنابراین در اینجا من اسم پوشه را از  Orchis-theme-2022-05-29 به orchis-1 تغییر نام می دهم.
(همانطور که در sudo checkinstall  گفتم ، تغییر نام پوشه برای آن روش اجباری نیست)
  با اجرای این دستور از شما سؤال پرسیده می شود:

نقل‌قول
Type of package: (single, indep, library, python)
[s/i/l/p]?

در اینجا کلید s را فشار بدهید.( البته با توجه به نوع کارتان می‌توانید گزینه های دیگر را انتخاب نمایید.)

بعد می پرسد:
نقل‌قول
Are the details correct? [Y/n/q]

که در اینجا کلید y را فشار بدهید.( عکس 3)
این دستور دو تا ماحصل دارد:
الف) ایجاد پوشه دبیان و فایل‌های درونش.
ب) ایجاد فایلی با پسوند  orig.tar.xz. در بیرون از پوشه اکسترکت شده.( در اینجا برای من فایلی بنام   orchis_1.orig.tar.xz  ایجاد می شود،که البته با آن کاری ندارم.)

همانطور که در انتها اشاره شده:

نقل‌قول
Done. Please edit the files in the debian/ subdirectory now.

بایستی تشریف ببریم و فایل‌های درون پوشه debian را ویرایش نماییم. می‌توانیم بدون توجه به این مورد به کارمان ادامه بدهیم و فایلی بنام deb. با دستور بعدی بگیریم ولی این فایل ناکارآمد است .

همانطور که می‌دانید برای این مورد من خواستم از Makefile ای که برای روش قبلی استفاده کردم برای این روش استفاده کنم ولی فایده‌ای نداشت.
ما در ساخت  فایل deb.  عمدتا با دو نوع از Dependency  سروکار داریم :
الف) Build-Depends
ب)Depends

Build-Depends : بسته هایی که فقط در طول زمان ساخت استفاده می‌شود و بایستی روی رایانه توسعه‌دهنده باشد.( مثلاً بسته  debhelper  )
 ولی depends ، بسته هایی هستند که  باید بر روی ماشین های کاربران نصب شود.

برای اطلاع از ایندو می‌توانیم به  README نرم افزاری که بر روی آن کار می‌کنیم مراجعه کنیم.
برای ویرایش وابستگی‌ها برای پکیج خودمان به فایل  control درون پوشه debian مراجعه می‌کنیم.
البته این فایل تنظیمات دیگری هم دارد که فعلاً برای من لازم نبودند.
فایل control من برای این برنامه:

Source: orchis
Section: unknown
Priority: optional
Maintainer: a <a@unknown>
Build-Depends: debhelper-compat (= 13)
Standards-Version: 4.5.1
Homepage: <insert the upstream URL, if relevant>
#Vcs-Browser: https://salsa.debian.org/debian/orchis
#Vcs-Git: https://salsa.debian.org/debian/orchis.git
Rules-Requires-Root: no

Package: orchis
Architecture: any
Depends:
 gtk2-engines-murrine (>= 0.98),
 ${misc:Depends}
Description: this is a theme.

یک فایل بسیار مهم ، شاید مهمترین فایل پوشه debian  ، فایلی است بنام rules  .
ما باید کاری بکنیم  تا  فایل ها  را در مکان مناسب نصب کند ، مشابه کار Makefile
در اینجا این فایل rules با کدنویسی سروکار دارد.
چون من برنامه نویس نیستم و از کد سر در نمی‌آورم ( خیلی وقت پیش سعی کرده بودم که به زبانهای برنامه نویسی سی و سی پلاس پلاس و سی شارپ و php  و همچنین بانک اطلاعاتی مای اسکویل نظری بیاندازم ولی برایم خیلی سخت بودند، بنابراین بی خیالشان شده‌ام و سعی می‌کنم زندگیم تا حد ممکن بدون کد باشد!)

خلاصه مجبور شدم قضیه کدها را با تقلب حل کنم. در مخازن اصلی دبیان پایدار تا  آنجایی که بررسی کردم بسته murrine-themes تا حدودی می‌توانست به دادم برسد و از منجلاب کد ندانستن نجاتم بدهد. بنابراین سورس این بسته را از طریق زیر بدست آوردم.( البته اگر برای شما این دستور برای این بسته و یا بسته دیگری کار نکرد، احتمالا بایستی فایل  etc/apt/sources.list/ را ویرایش بفرمایید.):

sudo apt source murrine-themes
از ویژگیهای open source در اینجا بهره می گیرم و فایل rules پوشه debian ام را حذف می‌کنم و  شیرجه می‌زنم تا بجایش از  فایل rules  بسته  murrine-themes  استفاده نمایم. کدهای این فایل:

#!/usr/bin/make -f

THEMES_DIR=debian/murrine-themes/

build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp

build-stamp:
dh_testdir
touch build-stamp

clean:
dh_testdir
dh_testroot
rm -f build-stamp
dh_clean

install: build
dh_testdir
dh_testroot
dh_prep
dh_installdirs
cp -r usr $(THEMES_DIR)
find $(THEMES_DIR) -name COPYING -exec rm '{}' \;
find $(THEMES_DIR) -name gtkrc -exec sed -i 's/gtk-tooltips/gtk-tooltip*/' '{}' \;
# dh_fixperms ignores /usr/share/themes
chmod -R 0644 $(THEMES_DIR);
chmod -R +X $(THEMES_DIR);

binary-indep: build install
dh_testdir
dh_testroot
dh_installdocs
dh_installchangelogs
dh_fixperms
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install

ادامه کار برایم این امر را نشان می‌دهد که بایستی یک تغییراتی در این کدها بدهم تا برایم کار بکنند. دو تا تغییر می دهم:

بجای سطر:

/THEMES_DIR=debian/murrine-themes

این را بکار می برم:

/THEMES_DIR=debian/orchis

تا این حد امتحان کردم برنامه کار نکرد و بناچار یک سطر اینطوری به کدها اضافه می کنم، شاید کار بکند:

cp   -r   usr/share/themes $(THEMES_DIR)
و فایل rules ام با ویرایش هایی که انجام دادم بدین صورت در می آید:

#!/usr/bin/make -f

THEMES_DIR=debian/orchis/

build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp

build-stamp:
dh_testdir
touch build-stamp

clean:
dh_testdir
dh_testroot
rm -f build-stamp
dh_clean

install: build
dh_testdir
dh_testroot
dh_prep
dh_installdirs
cp -r usr/share/themes $(THEMES_DIR)
cp -r usr $(THEMES_DIR)
find $(THEMES_DIR) -name COPYING -exec rm '{}' \;
find $(THEMES_DIR) -name gtkrc -exec sed -i 's/gtk-tooltips/gtk-tooltip*/' '{}' \;
# dh_fixperms ignores /usr/share/themes
chmod -R 0644 $(THEMES_DIR);
chmod -R +X $(THEMES_DIR);

binary-indep: build install
dh_testdir
dh_testroot
dh_installdocs
dh_installchangelogs
dh_fixperms
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install
و حالا یک قسمت دیگری می‌ماند که در ارسالی بالاترم خواستم این موضوع را دوستان راهنمایی بکنند  و تا دوستان بخواهند راهنمایی بکنند ، مجبورم تا از یک تقلب دیگری استفاده کنم تا این پروژه ، روی زمین نماند . موضوعی که با آن دست به گریبان هستم این است که در فایل deb. ای که از روش قبلی بدست آوردم ، پوشه ای بنام themes وجود دارد که در داخلش theme های برنامه هستند ، ولی چه‌جوری در اینجا این عمل را انجام بدهم خودش مساله است، چون چیزی به ذهنم فعلاً نمی‌رسد ، می‌روم از پوشه usr/ و محتویات آن از فایل deb. قبلی  یک کپی برمی‌دارم و میاورم و میگذارم در مسیر  پوشه اکسترکت شده ام.

الان می‌رسد به دستور بعدی:

debuild -rfakeroot -uc -us -b -d
این دستور خطا می‌دهد( عکس 4) و بناچار از این دستور استفاده می کنم:

sudo debuild -rfakeroot -uc -us -b -d
با این روش بلاخره فایل deb. ایجاد می‌شود( عکس 5) و برخلاف روش sudo checkinstall که هم برنامه نصب می‌شود و هم یک فایل deb. به شما می‌دهد ، در این روش برنامه با اجرای دستور debuild بر روی سیستم نصب نمی‌شود و تنها یک فایل  deb. به شما داده می‌شود که می‌توانید آنرا بر روی سیستمتان نصب نمایید.

برنامه را نصب می‌کنم و توسط پکیج منیجر سیستم به خوبی شناخته می‌شود .(عکس 6)
اگر در رابطه با ارتقا روش بالایی که بیشتر بصورت تجربی بدست آوردم ، مطالبی داشتید، بفرمایید، ممنون می شوم.
 البته خودم هم سعی می‌کنم که روش بالایی را تا حد ممکن بهینه کنم.

« آخرین ویرایش: 02 امرداد 1401، 01:15 ق‌ظ توسط norouzi90 »

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 784
  • جنسیت : پسر
  • Debian + Mate
پاسخ : معرفی استایل و آیکن و فونت
« پاسخ #23 : 02 امرداد 1401، 01:08 ق‌ظ »
ادامه عکسها:

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 784
  • جنسیت : پسر
  • Debian + Mate
پاسخ : معرفی استایل و آیکن و فونت
« پاسخ #24 : 03 امرداد 1401، 12:27 ب‌ظ »
و حالا یک قسمت دیگری می‌ماند که در ارسالی بالاترم خواستم این موضوع را دوستان راهنمایی بکنند  و تا دوستان بخواهند راهنمایی بکنند ، مجبورم تا از یک تقلب دیگری استفاده کنم تا این پروژه ، روی زمین نماند . موضوعی که با آن دست به گریبان هستم این است که در فایل deb. ای که از روش قبلی بدست آوردم ، پوشه ای بنام themes وجود دارد که در داخلش theme های برنامه هستند ، ولی چه‌جوری در اینجا این عمل را انجام بدهم خودش مساله است، چون چیزی به ذهنم فعلاً نمی‌رسد ، می‌روم از پوشه usr/ و محتویات آن از فایل deb. قبلی  یک کپی برمی‌دارم و میاورم و میگذارم در مسیر  پوشه اکسترکت شده ام.

البته خودم هم سعی می‌کنم که روش بالایی را تا حد ممکن بهینه کنم.

در ارسالی قبلی ، چون چیزی به ذهنم نمی رسید مجبور شدم که پوشه themes را از روش اول که از   sudo checkinstall بدست آورده بودم و بیاورم و در روش دوم ( debuild ) استفاده نمایم.
خوشبختانه این مشکل را توانستم با کمی ویرایش همان فایل rules حل نمایم و دیگر نیازی به چنین عملی نیست.

این مطلب و کمی مطالب دیگری را در اینجا توضیح می‌دهم که بدون دانستن اینها امکان ویرایش فایل rules   توسط کاربرانی مانند خودم که از برنامه نویسی سررشته ندارند، امکانپذیر نخواهد بود.

نکته:
در فایل  rules اگر در ابتدای مسیری اسلش / بکار رفته باشد بمعنای اشاره به  مسیری در سیستم عامل مان می‌باشد و به پوشه سورس ربطی ندارد.
مثلاً    usr/share/themes/   اشاره دارد به پوشه themes  در داخل ریشه سیستم عاملمان قرار دارد.

در فایل   rules   اگر در ابتدای مسیری اسلش /  بکار نرفته باشد بمعنای اشاره به مسیری در پوشه سورسمان است و  به‌ مسیری در سیستم عاملمان اشاره ندارد.
مثلاً     usr/share/themes   اشاره دارد به مسیر پوشه themes در داخل پوشه سورس مان.
یعنی در داخل پوشه سورس مان پوشه ای بنام usr وجود دارد که در داخل آن پوشه ای بنام share وجود دارد و در داخل آن پوشه ای بنام themes وجود دارد.

یا مثلاً     debian/usr  ، چون در ابتدای مسیر علامت اسلش بکار نرفته است اشاره دارد به پوشه ای بنام usr  در داخل پوشه ای بنام debian  در  داخل پوشه سورس مان.

بنابراین بود یا نبود علامت اسلش در ابتدای مسیر در کدهای نوشته شده در داخل فایل rules خیلی مهم است. که اگر بود مسیر به پوشه یا فایلی در سیستم عامل اصلی امان اشاره می‌کند و اگر نبود به فایل یا پوشه در داخل پوشه سورس.

نکته:
در دستور     cp   -r    ، آپشن   r-  یا  R-  ، تمامی محتویات دایرکتوری موردنظر را  به مسیر موردنظر کپی می‌کند و بدون این آپشن  r- امکان کپی دایرکتوری وجود ندارد.
به عبارت دیگر برای کپی کردن یک دایرکتوری با تمام زیر شاخه هایش از گزینه r- یا R- استفاده می شود.

نکته:
برای حذف یک پوشه با تمامی زیر شاخه هایش از دستور    rm  -r  بکار ببرید.

این فایل rules مربوط به بسته  murrine-themes است:
#!/usr/bin/make -f

THEMES_DIR=debian/murrine-themes/

build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp

build-stamp:
dh_testdir
touch build-stamp

clean:
dh_testdir
dh_testroot
rm -f build-stamp
dh_clean

install: build
dh_testdir
dh_testroot
dh_prep
dh_installdirs
cp -r usr $(THEMES_DIR)
find $(THEMES_DIR) -name COPYING -exec rm '{}' \;
find $(THEMES_DIR) -name gtkrc -exec sed -i 's/gtk-tooltips/gtk-tooltip*/' '{}' \;
# dh_fixperms ignores /usr/share/themes
chmod -R 0644 $(THEMES_DIR);
chmod -R +X $(THEMES_DIR);

binary-indep: build install
dh_testdir
dh_testroot
dh_installdocs
dh_installchangelogs
dh_fixperms
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install

البته اینبار چنان این فایل را برای استفاده در تم  orchis  ویرایش خواهیم کرد که  با فایل deb ای که ایجاد می‌شود  نه تنها  باعث نصب این نرم‌افزار توسط پکیج منیجر سیستممان بشود بلکه فایل‌های themes مربوط به این برنامه هم در داخل فایل deb قرار بگیرد.
تغییراتی که برای این ایجاد این نتایج در فایل rules بدهیم بدین قرار است:

تغییر سطر:
THEMES_DIR=debian/murrine-themes/به:
THEMES_DIR=debian/orchis/

متغیر دیگری را هم ایجاد می کنیم:
abc=Orchis

کد:
mkdir usrایجاد پوشه usr در داخل پوشه سورس ( همانطور که می‌بینید در اولش اسلش نگذاشته ایم ، بنابراین در داخل پوشه سورس ایجاد می شود.)


کد:
mkdir usr/shareایجاد پوشه share در داخل پوشه usr  .


کد:
mkdir usr/share/themesایجاد پوشه themes در داخل پوشه share  .


کد:
./install.shنصب برنامه در سیستممان ، بدون آنکه پکیج منیجر سیستممان این برنامه را  بشناسد ،  فایل‌هایی که با نصب شدن این برنامه بوجود می‌آیند لازم خواهیم داشت. پوشه ها و فایل‌های ناشی از نصب این برنامه در مسیر   usr/share/themes/  قرار می گیرند. اگر دستور debuild را بدون sudo اجرا بکنیم بجای این مسیر در مسیر پوشه کاربر فعلی ایجاد خواهد شد، در پوشه ای بنام themes.  .
(با خواندن فایل readme متوجه خواهید شد که بایستی از کدام دستور یا دستورات برای نصب برنامه استفاده کنید.)


کد:
cp -r /usr/share/themes/$(abc)* usr/share/themesدر اینجا بایستی از خلاقیتمان استفاده کنیم. با اجرای دستور  install.sh/.  ، تعدادی پوشه در
مسیر   usr/share/themes/  ایجاد شده است. با استفاده از این دستور آن پوشه ها را با محتویاتشان به داخل  usr/share/themes  در داخل پوشه سورس مان کپی می کنیم. چون در ابتدای همگی پوشه های تازه ایجاد شده واژه Orchis  بکار رفته است و  در بالا این واژه را بعنوان متغییر تعریف کرده‌ایم از عبارت    *(abc)$ 
استفاده می نماییم. نکته بسیار مهم توجه به بزرگی و کوچکی حروف است. Orchis است نه orchis   
که اگر به این نکته توجه نکنیم در هنگام اجرای دستور debuild  ، به ما می‌گوید که چنین پوشه یا فایلی وجود ندارد.
شاید شما بخواهید بجای برنامه orchis یک برنامه دیگری نصب کنید ، در این حالت ببینید که فایل‌های نصبی آن برنامه بر روی سیستم عاملتان در کجاها نصب شده ، شاید مثلاً در usr/bin/  نصب شده باشد ، آنوقت این دستور را بایستی ویرایش نمایید، چه برای مبدأ و چه مقصد .

کد:
rm -r /usr/share/themes/$(abc)*جون theme  های مربوطه با دستور  nstall.sh/.  در سیستممان ایجاد شده و نه توسط پکیج منیجر سیستممان ، بعد از کپی برداری از آن‌ها توسط دستور قبلی ، آن‌ها را از سیستممان حذف می کنیم.
اگر  با این دستور آن‌ها را حذف نکنیم  ، آن‌ها در سیستممان باقی خواهند ماند ، چون توسط پکیج منیجرمان نصب نشده‌اند که بعداً بخواهیم با نصب فایل deb از طریق پکیج منیجر سیستممان ، از طریق پکیج منیجر سیستممان آن‌ها را حذف کنیم. آن‌ها همین‌طوری باقی خواهند ماند مگر اینکه بخواهیم آن‌ها را بصورت دستی حذف کنیم.

کد:
cp -r usr/share/themes $(THEMES_DIR)کپی کردن محتویات  usr/share/themes  به   /debian/orchis  ، که همگی این‌ها در داخل پوشه سورسمان قرار دارند.

بطور کلی rules با ویرایشی که انجام دادیم اینگونه می شود:
#!/usr/bin/make -f

THEMES_DIR=debian/orchis/
abc=Orchis

build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp

build-stamp:
dh_testdir
touch build-stamp

clean:
dh_testdir
dh_testroot
rm -f build-stamp
dh_clean

install: build
dh_testdir
dh_testroot
dh_prep
dh_installdirs

mkdir usr
mkdir usr/share
mkdir usr/share/themes

./install.sh

cp -r /usr/share/themes/$(abc)* usr/share/themes
rm -r /usr/share/themes/$(abc)*



cp -r usr/share/themes $(THEMES_DIR)
cp -r usr $(THEMES_DIR)
find $(THEMES_DIR) -name COPYING -exec rm '{}' \;
find $(THEMES_DIR) -name gtkrc -exec sed -i 's/gtk-tooltips/gtk-tooltip*/' '{}' \;
# dh_fixperms ignores /usr/share/themes
chmod -R 0644 $(THEMES_DIR);
chmod -R +X $(THEMES_DIR);

binary-indep: build install
dh_testdir
dh_testroot
dh_installdocs
dh_installchangelogs
dh_fixperms
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install

در اینجا ویرایش فایل  rules امان تمام می شود. بقیه مراحل طبق ارسالی قبلی است با این تفاوت که دیگر نیازی به قرار دادن پوشه theme ها بصورت دستی در داخل پوشه سورس مان نیست.
فایل deb ایجاد شده  بخوبی نصب و اجرا و حذف می شود.


چون من برنامه نویس نیستم ، یک سؤالی در ذهنم باقی‌مانده است و اینکه:
آیا کارهایی که کلاً من در اینجا برای ایجاد فایل deb انجام داده‌ام از دیدگاه برنامه نویسان یک کار کثیف است یا نه؟


آفلاین سودو.

  • High Hero Member
  • *
  • ارسال: 3095
  • جنسیت : پسر
  • :(){ :|:& };:
پاسخ : معرفی استایل و آیکن و فونت
« پاسخ #25 : 03 امرداد 1401، 01:31 ب‌ظ »
-Dragon part II : norouzi90
اکران در سراسر انجمن !

دمت گرم پسر ، تحسینت میکنم ، خسته نباشی ، روحیه کنجکاو و شخصیت پر تلاشی داری واقعا : )
آرچ و گنوم!

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 784
  • جنسیت : پسر
  • Debian + Mate
پاسخ : معرفی استایل و آیکن و فونت
« پاسخ #26 : 03 امرداد 1401، 02:28 ب‌ظ »
-Dragon part II : norouzi90
اکران در سراسر انجمن !

دمت گرم پسر ، تحسینت میکنم ، خسته نباشی ، روحیه کنجکاو و شخصیت پر تلاشی داری واقعا : )

تشکر آقای سودو ، لطف دارید.

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5124
  • جنسیت : پسر
پاسخ : معرفی استایل و آیکن و فونت
« پاسخ #27 : 04 امرداد 1401، 04:54 ب‌ظ »
در پوشه source  ، پوشه ای  بنام release  وجود دارد، که حاوی فایل هایی است.( عکس 1)
مسیر پوشه release بدین قرار است:

/home/a/Desktop/orchis-1/release/


در این پوشه release  فایلی بنام make-release.sh  هم وجود دارد(عکس 2 ) ، که با اجرای آن فایل های tar.xz موجود در پوشه release  ،  در همان پوشه اکسترکت شده و سپس همگی پوشه های اکسترکت شده در پایان دوباره حذف شده و در واقع محتویات پوشه release به حالت اولیه برمی گردد.
...
داخل اون دایرکتوری چندین فایل release از تم با رنگ‌های مختلف هست. یه نفر می‌تونه مستقیم این فایل‌ها رو به میزکار بده تا میزکار اون رو نصب کنه. اینجوری نیازی به اجرا اسکریپت install.sh هم نیست.

اون اسکریپت make-release.sh برای کاری که می‌خواهید انجام بدید مناسب نیست. نحوه کار اون رو هم درست متوجه نشدید.
اون اسکریپت فایل release میسازه. می‌تونید تمام فایل‌های فشرده‌ای که توی اون دایرکتوری هست رو پاک و اون اسکریپت رو اجرا کنید و ببینید که یه سری tarball اونجا ایجاد میشن.
برخلاف چیزی که گفتید، فایل‌های فشرده اونجا استخراج نمیشن. بلکه اون اسکریپت اول اون فایل‌های فشرده‌ای که اونجا هست رو پاک می‌کنه، بعد اسکریپت install.sh رو با آرگومان‌های مناسب اجرا می‌کنه تا نسخه مورد نظر تم اونجا کپی بشه و در نهایت از اون نسخه تم، یه tarball میسازه.

برای کاری که می‌خواهید انجام بدید، باید از اسکریپت install.sh استفاده کنید. make-release.sh مناسب نیست.
میشه اسکریپت make-install.sh رو تغییر داد ولی به اینکار نیازی نیست و همون اسکریپت install.sh مناسب هست.

فایل control من برای این برنامه:

Source: orchis
Section: unknown
Priority: optional
Maintainer: a <a@unknown>
Build-Depends: debhelper-compat (= 13)
Standards-Version: 4.5.1
Homepage: <insert the upstream URL, if relevant>
#Vcs-Browser: https://salsa.debian.org/debian/orchis
#Vcs-Git: https://salsa.debian.org/debian/orchis.git
Rules-Requires-Root: no

Package: orchis
Architecture: any
Depends:
 gtk2-engines-murrine (>= 0.98),
 ${misc:Depends}
Description: this is a theme.
برای Homepage می‌تونید https://github.com/vinceliuice/Orchis-theme رو مشخص کنید.
برای Architecture هم میشه all رو مشخص کرد.

موقع ساخت بسته‌های deb، اگه معماری رو all مشخص کنید، به این معنی هست که اون بسته می‌تونه روی همه معماری‌ها کار کنه و لازم نیست جدا جدا برای هر معماری ساخته بشه.
معمولا بسته‌هایی که فقط شامل فایل‌های معمولی غیر اجرایی هستند، اینجوریند. بسته‌هایی که شامل برنامه‌ای هستند که به یه زبان تفسیری (مثل پایتون یا perl) نوشته شده هم معمولا اینجوری هستند.
برای مثال بسته apt-file شامل یه سری فایل متنی به همراه خود برنامه apt-file هست. چون خود برنامه با perl نوشته شده، میشه اون رو هر جایی که perl هست اجرا کرد و به معماری بستگی نداره.
خود perl به معماری وابسته هست ولی apt-file کاری به معماری نداره. هرجا perl باشه کار میده.

بسته gnome-backgrounds و plasma-workspace-wallpapers هم اینجوری هستند چون فقط یه سری عکس jpg و چنتا فایل متنی همراهشون هست.

اگه معماری any مشخص بشه، به این معنی هست که این بسته می‌تونه روی همه معماری‌ها کار کنه ولی باید برای هر معماری به صورت جدا ساخته بشه.

از اونجایی که این بسته فقط شامل تم هست و اون تم خودش به یه معماری خاص وابسته نیست، میشه Architecture رو برابر all قرار داد.
« آخرین ویرایش: 04 امرداد 1401، 05:05 ب‌ظ توسط Dragon- »
میدونید که زکات علم نشر آن است

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5124
  • جنسیت : پسر
پاسخ : معرفی استایل و آیکن و فونت
« پاسخ #28 : 04 امرداد 1401، 05:09 ب‌ظ »
این فایل rules مربوط به بسته  murrine-themes است:
#!/usr/bin/make -f

THEMES_DIR=debian/murrine-themes/

build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp

build-stamp:
dh_testdir
touch build-stamp

clean:
dh_testdir
dh_testroot
rm -f build-stamp
dh_clean

install: build
dh_testdir
dh_testroot
dh_prep
dh_installdirs
cp -r usr $(THEMES_DIR)
find $(THEMES_DIR) -name COPYING -exec rm '{}' \;
find $(THEMES_DIR) -name gtkrc -exec sed -i 's/gtk-tooltips/gtk-tooltip*/' '{}' \;
# dh_fixperms ignores /usr/share/themes
chmod -R 0644 $(THEMES_DIR);
chmod -R +X $(THEMES_DIR);

binary-indep: build install
dh_testdir
dh_testroot
dh_installdocs
dh_installchangelogs
dh_fixperms
dh_compress
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install

البته اینبار چنان این فایل را برای استفاده در تم  orchis  ویرایش خواهیم کرد که  با فایل deb ای که ایجاد می‌شود  نه تنها  باعث نصب این نرم‌افزار توسط پکیج منیجر سیستممان بشود بلکه فایل‌های themes مربوط به این برنامه هم در داخل فایل deb قرار بگیرد.
تغییراتی که برای این ایجاد این نتایج در فایل rules بدهیم بدین قرار است:
...
کد:
mkdir usrایجاد پوشه usr در داخل پوشه سورس ( همانطور که می‌بینید در اولش اسلش نگذاشته ایم ، بنابراین در داخل پوشه سورس ایجاد می شود.)

کد:
mkdir usr/shareایجاد پوشه share در داخل پوشه usr  .

کد:
mkdir usr/share/themesایجاد پوشه themes در داخل پوشه share  .
یا گزینه راحت‌تر:
mkdir -p usr/share/themes
هرچند با توجه به راه بهتری که وجود داره، این دستور لازم نیست.

نقل‌قول
کد:
cp -r /usr/share/themes/$(abc)* usr/share/themesدر اینجا بایستی از خلاقیتمان استفاده کنیم. با اجرای دستور  install.sh/.  ، تعدادی پوشه در
مسیر   usr/share/themes/  ایجاد شده است. با استفاده از این دستور آن پوشه ها را با محتویاتشان به داخل  usr/share/themes  در داخل پوشه سورس مان کپی می کنیم. چون در ابتدای همگی پوشه های تازه ایجاد شده واژه Orchis  بکار رفته است و  در بالا این واژه را بعنوان متغییر تعریف کرده‌ایم از عبارت    *(abc)$ 
استفاده می نماییم.
...
چرا این قدر کار رو سخت می‌کنید؟ خود اسکریپت install.sh یه آپشن داره که مشخص کنید فایل‌های تم رو کجا قرار بده.
./install.sh -d usr/share/themes

اون فایل rules هم مشکلات متعددی داره.

نقل‌قول
چون من برنامه نویس نیستم ، یک سؤالی در ذهنم باقی‌مانده است و اینکه:
آیا کارهایی که کلاً من در اینجا برای ایجاد فایل deb انجام داده‌ام از دیدگاه برنامه نویسان یک کار کثیف است یا نه؟
بله. خیلی. نباید همینجوری هر برنامه‌ای رو که پیدا می‌کنید روی سیستم‌عامل اصلی نصب کنید. می‌تونه اون رو خراب کنه.
به غیر از این، خود اسکریپت install.sh قابلیت‌های مورد نیاز رو داشته و نیازی به راه حل‌های عجیب نبوده.
میدونید که زکات علم نشر آن است

آفلاین norouzi90

  • Hero Member
  • *
  • ارسال: 784
  • جنسیت : پسر
  • Debian + Mate
پاسخ : معرفی استایل و آیکن و فونت
« پاسخ #29 : 04 امرداد 1401، 09:43 ب‌ظ »

چرا این قدر کار رو سخت می‌کنید؟ خود اسکریپت install.sh یه آپشن داره که مشخص کنید فایل‌های تم رو کجا قرار بده.
./install.sh -d usr/share/themes

با روشی که فرمودید رفتم جلو ، ولی متأسفانه جواب نداد.

اگر بخواهیم این کدی را که فرمودید  در داخل فایل rules بکار ببریم ، تعدادی از کدهایی که من در ارسالی قبلی‌ام برای فایل rules نوشته‌ام را دیگر لازم نخواهیم داشت و بایستی حذف بشوند، آن‌هایی که بایستی حذف بشوند عبارتند از:

abc=Orchis./install.shcp -r /usr/share/themes/$(abc)* usr/share/themesrm -r /usr/share/themes/$(abc)*
و بعد بجای این‌ها کد شما را قرار می دهیم. در این حالت فایل rules می‌شود عکس 1  .
ولی با نصب فایل deb ایجاد شده، هیچ چیزی به لیست تم های سیستم اضافه نمی‌شود و فقط پوشه ای بنام orchis به  usr/share/themes/  اضافه می‌شود که فاقد کار آرایی می باشد.( عکس‌های  2 و 3 )

نمی‌دانم شاید مشکل از من است یا روشتان بایستی اصلاح شود.