আমি কীভাবে অ্যাপটি-গেটের মাধ্যমে ইনস্টল হওয়া প্যাকেজগুলির উত্স কোডটি পেতে পারি এবং সংশোধন করব?


162

আমি ধরে নিচ্ছি যে এর মাধ্যমে ইনস্টল করা সমস্ত অ্যাপ্লিকেশন হ'ল apt-getওপেন সোর্স; তবে যারা সেই পদ্ধতিতে উপলভ্য তাদের জন্য, আমি এই অ্যাপ্লিকেশনগুলির উত্স কোডটি পাশাপাশি আপডেট করতে পারব?

আমার নিয়মিত ব্যবহার করা একটি দম্পতি অ্যাপ্লিকেশন রয়েছে যা সক্রিয়ভাবে আর বিকশিত হচ্ছে না এবং আমি বৈশিষ্ট্যগুলি যুক্ত করতে চাই। এই অ্যাপ্লিকেশনগুলি আপডেট করার অধিকার পেতে আমি কোথায় যাব?

এই ক্ষেত্রে বিশেষভাবে, আমি হেলানজব প্যাকেজটি উল্লেখ করছি


7
apt-getবদ্ধ উত্স প্রোগ্রামগুলিও সমর্থন করে, তাই আপনার প্রাথমিক অনুমানটি ভুল।
ফ্লিমে

উত্তর:


182

apt-get source <package>প্যাকেজের উত্স ডাউনলোড করতে কমান্ডটি (এর সাথে সুডো ব্যবহার করবেন না) ব্যবহার করুন।

থেকে man apt-get:

   source
       source causes apt-get to fetch source packages. APT will examine the
       available packages to decide which source package to fetch. It will then
       find and download into the current directory the newest available version of
       that source package while respect the default release, set with the option
       APT::Default-Release, the -t option or per package with the pkg/release
       syntax, if possible.

       Source packages are tracked separately from binary packages via deb-src type
       lines in the sources.list(5) file. This means that you will need to add such
       a line for each repository you want to get sources from. If you don't do
       this you will properly get another (newer, older or none) source version
       than the one you have installed or could install.

       If the --compile option is specified then the package will be compiled to a
       binary .deb using dpkg-buildpackage, if --download-only is specified then
       the source package will not be unpacked.

       A specific source version can be retrieved by postfixing the source name
       with an equals and then the version to fetch, similar to the mechanism used
       for the package files. This enables exact matching of the source package
       name and version, implicitly enabling the APT::Get::Only-Source option.

       Note that source packages are not tracked like binary packages, they exist
       only in the current directory and are similar to downloading source tar
       balls.

উত্স থেকে প্যাকেজ তৈরি করতে প্রথমে বিল্ড নির্ভরতা ইনস্টল করুন:

sudo apt-get build-dep <package>  

তারপরে dpkg-buildpackageএকটি .debফাইল তৈরি করতে ব্যবহার করুন। থেকে এপিটি এবং dpkg দ্রুত রেফারেন্স পত্রক :

dpkg-buildpackage একটি ডেবিয়ান উত্স ট্রি থেকে একটি ডেবিয়ান প্যাকেজ তৈরি করে। এটি কাজ করার জন্য আপনার অবশ্যই উত্স গাছের মূল ডিরেক্টরিতে থাকতে হবে। নমুনা ব্যবহার:

 dpkg-buildpackage -rfakeroot -uc -b

যেখানে -rfakerootএটি ফেকরুট প্রোগ্রামটি মূল অধিকারগুলির (মালিকানার উদ্দেশ্যে) অনুকরণ করার জন্য ব্যবহার করার নির্দেশ দেয় সেখানে -uc"ক্রিপ্টোগ্রাফিকভাবে চেঞ্জলোগে স্বাক্ষর করবেন না" এবং -b"কেবলমাত্র বাইনারি প্যাকেজ তৈরি করুন" এর জন্য দাঁড়িয়েছে

একটি টার্মিনালে, cdপ্যাকেজ উত্স (যেমন ~/code/hellanzb-0.13) ধারণকারী ডিরেক্টরিতে এবং নিম্নলিখিত কমান্ডটি চালান:

dpkg-buildpackage -rfakeroot -uc -b

যদি বিল্ডটি সফল .debহয় তবে মূল ফাইল
ডিরেক্টরিতে (যেমন ~/code/hellanzb_0.13-6.1_all.deb) একটি ফাইল উপস্থিত থাকবে ।


পরিবর্তিত উত্স থেকে আমি কীভাবে ইনস্টল করতে পারি। পাশাপাশি অন্যান্য ব্যবহারকারীদের ব্যবহার করার জন্য এটি পুনরায় প্রতিশ্রুতিবদ্ধ করুন। ধন্যবাদ!
myusuf3

1
@ ডাস্টিপ্রোগ্রামার .debউত্স কোড থেকে একটি প্যাকেজ তৈরির নির্দেশাবলী সহ আমার উত্তর আপডেট করেছে । সংগ্রহস্থলগুলিতে আপনার পরিবর্তিত প্যাকেজটি পাওয়ার বিষয়ে আপনার কোনও MOTU এর সাথে কথা বলা উচিত ।
যিশাইয়

@ ডিওআর একটি কাস্টম ডিরেক্টরিতে ডিফল্টরূপে ইনস্টল করা একটি দেব তৈরির উপায় আছে? কনফিগার প্রক্রিয়া চলাকালীন একই উপায়ে আমরা কী - ইনস্টল করতে পারি? আসলে আমি লাইব্রেরির উত্সের জন্য টার্বলগুলি খুঁজে পাচ্ছি না, কেন আমি প্রিফিক্সটি কনফিগার করতে পারি না এবং এটি ইনস্টল করতে পারি না .. তবে সেই প্যাকেজগুলি উত্সটি অ্যাপের মাধ্যমে উপলব্ধ, তাই আমি পছন্দসই উপসর্গটিতে উত্স প্যাকেজটি ইনস্টল করার চিন্তা করছিলাম ।
অ্যাশিশনি

2
আপনি যদি অ্যাপটি-গেট উত্সটি ব্যবহার করতে না চান (উদাহরণস্বরূপ অন্যান্য ডিস্ট্রো থেকে নেওয়া প্যাকেজ তৈরি করার সময়) 3 উত্স ফাইলটি ডাউনলোড করুন এবং ফাইলগুলি বের করার জন্য 'dpkg-উত্স -x [সূক্ষ্ম] .dsc' ব্যবহার করুন dpkg-buildpackage এর আগে আলাদা হয়। ( ftp.debian.org/debian/doc/source-unpack.txt )
শ্লোমি লুবাটন

না sudo apt-get build-dep <package>বাইনেরিতে যেমন নির্ভরতা ইনস্টল করবেন? যদি তা হয় তবে এটি উত্স থেকে সম্পূর্ণ বিল্ড নয়। উত্স থেকে কোনও কীভাবে বিল্ড-ডিপ ইনস্টল নির্ভরতা তৈরি করে?
হ্যালো ওয়ার্ল্ড

21

সাধারণভাবে, আপনি এই পদ্ধতি অনুসরণ করে ইনস্টল করা প্যাকেজটির উত্স পেতে পারেন:

  1. উত্স সংগ্রহস্থলগুলি সক্ষম করুন। ড্যাশবোর্ড (উপরে বাম বোতাম) খুলুন এবং অনুসন্ধান করুন sources। এটি Software & Updatesপ্রোগ্রামটি সামনে আনবে , এটি চালাবে এবং আপনার "উত্স কোড" বিকল্পটি নির্বাচিত হয়েছে তা নিশ্চিত করা উচিত :

    এখানে চিত্র বর্ণনা লিখুন

  2. একটি টার্মিনাল খুলুন এবং এই আদেশটি চালান:

    apt-get source vlc
    

এটি আপনার বর্তমান ডিরেক্টরিতে ভিএলসি'র উত্স ডাউনলোড করবে এবং আপনি আপনার অবসর সময়ে এগুলি দেখতে পারবেন।

অবশ্যই, এর ক্ষেত্রে vlc, আপনি এগুলি সরাসরি videolan.org ওয়েবসাইট থেকে ডাউনলোড করতে পারেন: https://www.videolan.org/vlc/download-sources.html



@ মিঃবোনস আরগ! না, অবশ্যই আপনি না, অভ্যাস জোর। এটা ইশারা জন্য ধন্যবাদ।
টেরডন

টার্মিনালে: সফ্টওয়্যার-প্রোপার্টি-gtk <--- যা "সফ্টওয়্যার এবং আপডেটগুলি" জিইউআই প্যানেলটি চালু করবে। (যে কোনও কারণেই এটি আমার জন্য ড্যাশবোর্ড অনুসন্ধানে প্রদর্শিত হয়নি))
পেস্টোফাগাস

17

আপনি apt-get source --compileসরাসরি ব্যবহার করতে পারেন :

sudo apt-get build-dep <package>
sudo apt-get source --compile <package>

আমার জন্য কাজ করেছেন। আপনি যে কমান্ডটি চালিয়েছেন সেটিতে .deb সমাপ্ত হয়।


9
আমার জন্যও কাজ করেছেন, ধন্যবাদ। শুধু এক অতিরিক্ত বিবরণ সহ: আপনার সাথে .deb ইনস্টল করতে পারেনsudo dpkg -i <package>.deb
waldyrious

এপটি ব্যতীত সেরা সমাধান পুনরায় সংগ্রহস্থল সংস্করণে ফিরে আসবে কারণ আপনি "dch -i" দিয়ে চেঞ্জলগটি নথিভুক্ত করতে ভুলে গেছেন।
ফুটবল

3

মূল প্রজেক্টের URL এবং প্রকল্পের / প্রোগ্রাম পরিচিতিগুলি আপনাকে আপনার কটাক্ষপাত থাকতে পারে সহ একটি প্যাকেজ সম্পর্কে আরও তথ্য পেতে কপিরাইট ফাইল (থেকে উল্লেখিত packages.debian.org )।

যখন প্যাকেজটি আপনার সিস্টেমে অন্তর্ভুক্ত থাকে এবং ইনস্টল করা হয়, আপনি সরাসরি কপিরাইট ফাইলটি পড়তে পারেন /usr/share/doc/$package_or_program_name/copyright

দেখুন কিভাবে ডেবিয়ান প্যাকেজ এর সোর্স কোড ডাউনলোড কিভাবে?


2

helloপ্যাকেজ সহ ন্যূনতম উদাহরণ

এগুলি এবং আরও অনেক কিছু এখানে বর্ণিত হয়েছে: https://www.debian.org/doc/manouts/maint-guide/build.en.html

প্রথমে এর উত্সটি সংশোধন করার জন্য একটি নমুনা প্যাকেজ পাই:

sudo apt-get install hello
hello

আউটপুট:

Hello, world!

এখন এটি হ্যাক করা যাক। উত্স পান:

apt-get source hello
cd hello-*

এবং খুলুন:

vim src/hello.c

এবং বার্তাটি এতে পরিবর্তন করুন:

Hello, world hacked!

তারপরে পরীক্ষায় একই করুন অন্যথায় বিরক্তিকর পরীক্ষা ব্যর্থ হওয়া শুরু করবে:

vim tests/greeting-1

তারপরে পুনর্নির্মাণ:

sudo apt-get install devscripts
sudo apt-get build-dep hello
debuild -b -uc -us

আউটপুট শেষে, এটি বলে:

dpkg-deb: building package 'hello' in '../hello_2.10-1build1_amd64.deb'.

সুতরাং এটি পিতামাতার ডিরেক্টরিতে .deb তৈরি করেছে, এটি কীভাবে সাহস করে। সুতরাং পরিশেষে আমরা সংশোধিত প্যাকেজটি ইনস্টল এবং পরীক্ষা করি:

sudo dpkg -i ../hello_2.10-1build1_amd64.deb
hello

এবং আপনি সেখানে যান, এটি নতুন বার্তা দেয়:

Hello, world hacked!

উবুন্টু 18.04 এ পরীক্ষিত।

পুরানো bzrউত্তর

করণীয়: এই উবুন্টু 16,04 Xenial কাজ, সঙ্গে ব্যর্থ বন্ধ করে দিয়েছিঃ bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/hello/".bzr branch lp:ubuntu/wily/helloকাজ করে bzr branch lp:ubuntu/xenial/helloআবার ব্যর্থ হয়। কোনও কারণে https://code.launchpad.net/ubuntu/+source/hello Xenial দেখায় না: https://web.archive.org/save/https://code.launchpad.net/ubuntu/+source /হ্যালো

Https://askubuntu.com/a/81889/52975 তে উল্লিখিত হিসাবে এখানে একটি উবুন্টু-নির্দিষ্ট পদ্ধতিরও রয়েছে bzr

সর্বশেষতম সংস্করণ পান:

bzr branch lp:ubuntu/hello

নির্দিষ্ট সংস্করণ:

bzr branch lp:ubuntu/trusty/hello

আপনি এটি ব্যবহার করতে পারেন pull-lp-source:

sudo apt-get install ubuntu-dev-tools
pull-lp-source hello

তারপরে আপনি এটি সম্পাদনা করতে সক্ষম হবেন:

cd hello
vim some_file

এটি পুনর্নির্মাণ:

dch -i 
debcommit
bzr bd -- -b -us -uc

এবং এটি ইনস্টল করুন:

sudo dpkg -i ../hello.deb

উবুন্টু প্যাকেজিং নির্দেশিকা তথ্য একটি ভাল উৎস।


bzr branch lp:ubuntu/hello bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/hello/". bzr branch lp:ubuntu/xenial/lightdm bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/xenial/lightdm/". উবুন্টু প্যাকেজিং গাইড , বিশেষত ৪.২। উত্স পেয়েছে: bzr branch ubuntu:lightdm lightdm.quickswitch bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/lightdm/". কি গোলমাল। :-(
স্টাফেন গ্যারিচন

pull-lp-sourceপরিবর্তে ব্যবহৃত হয়, কিন্তু তারপরে আমরা একটি bzr সংগ্রহস্থল পাই না। bzr bd -- -b -us -ucবলেছেন bzr: ERROR: Not a branch: "/org/gourichon/localdata/SG/projects/sysadmin/sysadmin_ergozel/2016/2016-08-15/blouarp/lightdm-1.18.3/".: - / কোনও ইঙ্গিতের জন্য ধন্যবাদ।
স্টাফেন গ্যারিচন

@ স্টাফেনগরিঞ্চ হুম, আমি আপনাকে উবুন্টু ১.0.০৪ জেনিয়ালে পুনরুত্পাদন করছি। নির্দিষ্ট সংস্করণ যুক্ত করা কাজ করে: bzr lp:ubuntu/wily/helloতবে কোনও কারণে কোনও xenialসংস্করণ নেই? এবং কিছুই দেখায় না: code.launchpad.net/ubuntu/+source/hello Go চিত্রটি।
সিরো সান্তিলি 新疆 改造 中心 法轮功 六四 事件

1
পুনরুত্পাদন যত্ন নেওয়ার জন্য ধন্যবাদ। তবে ভুল কার্ডটি বেছে নেওয়া হয়েছে। এই পৃষ্ঠাটি উল্লেখ করে খোলা হয়েছে বাগ.লাঞ্চপ্যাড.এন.বুন্টু/+ উত্স / বিজেআর /+বাগ / 1614053
স্টাফেন গরিখন

1
অন্যান্য কয়েকটি পদ্ধতির চেয়ে বেশি সুবিধাজনক। এবং অন্যান্য অন্তর্নিহিত টিপসের জন্য ধন্যবাদ :)
nealmcb
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.