পোস্ট-ইনস্ট্যান্ট নির্দেশাবলী এবং .ডেস্কটপ ফাইলগুলির সাথে অ্যাপট-গেটের বিশ্রী আচরণ


8

আমাদের কাছে স্থানীয় এপেট সংগ্রহস্থলটিতে (ডিপিপ্রো) বেশ কয়েকটি হ্যান্ড-বিল্ট (এফপিএম এবং জেনকিন সহ) deদেব ফাইল রয়েছে। এই .debs একটি .desktop ফাইল ধারণ করে যা এক্সডিজি-ডেস্কটপ দ্বারা পোস্ট-ইনস্টিটি স্ক্রিপ্টে নেওয়া হবে।

যদি আমরা একটি নতুন সিস্টেমে ডাব ফাইলটি হাত দ্বারা ইনস্টল করি তবে সবকিছু ঠিক আছে।

আমরা যদি অ্যাপটি-গেট ইনস্টল করে একটি নতুন সংস্করণ ইনস্টল করি তবে আমরা এই ত্রুটিটি পাই

xdg-desktop-menu: file '/usr/local/share/applications/customthingy.desktop' does not exist

যদি আমি ডেপ ফাইলটি অ্যাপটি-ইনস্টল-ডি কাস্টমথাই দিয়ে ডাউনলোড করি, এবং রান করুন

dpkg -i /var/cache/apt/archives/customthingy_2-r3_all.deb

আমি xdg-desktopআগের মতো ত্রুটি পেয়েছি । সুতরাং যে অ্যাপ্লিকেশন সঙ্গে একটি সমস্যা বাতিল।

যদি আমি ডাউনলোড করা দেবের বিষয়বস্তু তালিকাভুক্ত করি,

tom.oconnor@charcoal-black:~$ dpkg --contents /var/cache/apt/archives/customthingy_2-r3_all.deb |grep ".desktop"
-rw-r--r-- root/root       201 2011-07-28 20:02 ./usr/local/share/applications/customthingy.desktop

আপনি ফাইল বিদ্যমান দেখতে পারেন।

তবে .. আমরা যদি পুনরায় ইনস্টল করার আগে শুদ্ধি করি,

tom.oconnor@charcoal-black:~$ sudo apt-get purge customthingy
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED
  customthingy*
0 upgraded, 0 newly installed, 1 to remove and 84 not upgraded.
After this operation, 0B of additional disk space will be used.
Do you want to continue [Y/n]? y
(Reading database ... 219342 files and directories currently installed.)
Removing customthingy ...
Purging configuration files for customthingy ...

এবং তারপর

tom.oconnor@charcoal-black:~$ sudo apt-get install customthingy
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed
  customthingy
0 upgraded, 1 newly installed, 0 to remove and 84 not upgraded.
Need to get 0B/4,030B of archives.
After this operation, 0B of additional disk space will be used.
Selecting previously deselected package customthingy.
(Reading database ... 219319 files and directories currently installed.)
Unpacking customthingy (from .../customthingy_2-r3_all.deb) ...
Setting up customthingy (2-r3) ...

সম্পাদনা: পোস্টিনস্ট স্ক্রিপ্টের বিষয়বস্তু

#!/bin/sh

# Add an entry to the system menu

XDG_DESKTOP_MENU="`which xdg-desktop-menu 2> /dev/null`"

if [ ! -x "$XDG_DESKTOP_MENU" ]; then
  echo "WARNING: Could not find xdg-desktop-menu" >&2
else
  "$XDG_DESKTOP_MENU" install --mode system /usr/local/share/applications/customthingy.desktop
  "$XDG_DESKTOP_MENU" forceupdate --mode system
fi

কোনও ত্রুটি নেই। সুতরাং .. প্রশ্নগুলি হ'ল:

  1. এই প্রত্যাশিত আচরণ, বা apt / dpkg এ একটি বাগ?
  2. আমাদের কি কাস্টমথিং.ডিব সহ একটি ত্রুটিযুক্ত প্যাকেজ রয়েছে যা ভবিষ্যতে পুনরায় ইনস্টল করা কাজ করা থেকে আটকাচ্ছে?
  3. এটি অনুমান করা কি নিরাপদ যে পোস্ট-ইনস্টলটি সর্বদা ইনস্টলেশনের একেবারে শেষের দিকে ঘটবে, এবং আমরা নিরাপদে ধরে নিতে পারি যে সময়কালে এই ফাইলগুলির আগে সমস্ত ফাইল বের করা হবে?
  4. আমরা কি অদ্ভুত কিছু করছি?

1
সুতরাং গুরুত্বপূর্ণ পার্থক্যটি হল একটি নতুন অনুলিপি ইনস্টল করা এবং বিদ্যমান বিদ্যমানটিকে আপগ্রেড করার মধ্যে between না dpkg -D101 -i <package>(এমনকি dpkg -D1101) প্রতিটি দৃশ্যকল্প কোনো বিভিন্ন ফল? এটি মৃত্যুদন্ড কার্যকর করার একটি পৃথক আদেশ ফেলে দিতে পারে।
স্মলক্ল্যাঞ্জার

আপনি কি আপনার একটি অনুলিপি সরবরাহ করতে সক্ষম হবেন postinst?
jmtd

@jmtd সর্বশেষ সম্পাদনা দেখুন।
টম ও'কনর

উত্তর:


4

আমি অনুমান করছি যে আপনি ডেস্কটপ ফাইলটি সরিয়ে নিয়ে XDG ডেস্কটপ ডাটাবেস আপডেট করতে postinstডাকছেন । এটি উদাহরণস্বরূপ করা হয়েছে , তবে কেন আমি বুঝতে পারি না (পড়ুন)xdg-desktop-menu/usr/share/applicationsgoogle-chrome-stable

আপনি যদি ডেস্কটপ ফাইলটি সরাসরি /usr/share/applicationsপরিবর্তে ইনস্টল করেন (dpkg- এর মাধ্যমে - dh_installউদাহরণস্বরূপ ফাইলটি সেখানে রাখুন , উদাহরণস্বরূপ, যে পথটি .debকেবলমাত্র সরল /usr/share/applications) কিছু প্যাকেজ স্বয়ংক্রিয়ভাবে 'ট্রিগার' আপডেট করবে: উল্লেখযোগ্যভাবে gnome-menusএবং desktop-file-utilsতবে সম্ভবত অন্যগুলি (নির্দিষ্ট টার্গেটের ওএস সংস্করণ ইত্যাদির উপর নির্ভর করে)

কমপক্ষে আমার ক্ষেত্রে, xdg-desktop-menuহাত দ্বারা চালিত কাজগুলি অর্জন করার জন্য এগুলি যথেষ্ট (প্রোগ্রামটি আমার ব্যবহারকারী মেনুতে অবিলম্বে প্রদর্শিত হবে)

আমি কেন হিসেবে অন্ধকার এখনও আছি google-chrome-stableএবং অন্যান্য (প্রধানত 3 য় পক্ষ) .debকোথাও মধ্যে ডেস্কটপ ফাইল অর্ণবপোত গুলি অন্যান্য তুলনায় /usr/share/applications( /optChrome এর ক্ষেত্রে) এবং তারপর দ্বারা সরাসরি এটিকে সরান।


আমি এটি সর্বশেষ সম্পাদনার আগে লেখার সময় (লেখার সময়) যা সরবরাহ করেছিলাম postinst। এটি মনে করে আমি সঠিকভাবে অনুমান করেছি। এটি কেন postinstএমনভাবে হয় তার কোনও ধারণা নেই তবে দয়া করে চেষ্টা করুন এবং আমি যেমন বর্ণনা করেছি তেমন জিনিসগুলি পুনরায় সাজিয়ে তুলতে পারছি কিনা তা দেখুন, এটি আপনার সমস্যার সমাধান করে কিনা তা দেখুন।
jmtd

ডেস্কটপ-ফাইল-ইনস্টলটি ব্যবহার করতে আমি পোস্টস্টিস্ট স্ক্রিপ্টটি সংশোধন করেছি .. এবং এর পরিবর্তে এই ত্রুটিটি পেয়েছি Error on file "/usr/local/share/applications/silhouettefx-silhouette.desktop": No such file or directoryযা ইঙ্গিত দেয় যে এটি এখনও প্রিম সমস্যা হতে পারে
টম ও'কনর

1
আপনি যদি ডেস্কটপ ফাইলটি এতে প্রবেশ করেন তবে /usr/share/applicationsআপনার মোটেই প্রয়োজন হবে না postinst(বা সমমানের prermস্নিপেট) - দয়া করে এটি চেষ্টা করুন।
jmtd

ওহ ভাল, না কেন।
টম ও'কনর

1
আমি আনন্দিত যে আপনি বাছাই করেছেন, অনুগ্রহের জন্য চিয়ার্স :-)
jmtd

2

এটি "xdg-ডেস্কটপ-মেনু --uninstall 'কলকারী পোস্টআরএম / প্রির্ম স্ক্রিপ্টগুলি হ'ল অপরাধী, অর্থাৎ

"$XDG_DESKTOP_MENU" uninstall --mode system /usr/local/share/applications/customthingy.desktop

এটি এক্সডিজি-ডেস্কটপ-মেনুটি পোস্টিনস্ট অনুরোধের আগে ডেস্কটপ ফাইলটি মুছে ফেলবে it খুব সুন্দর.

গুগল-ক্রোম দেবগুলির কথা বলতে গিয়ে, তারা তাদের প্রাক প্রিম স্ক্রিপ্টের শীর্ষে এই স্তবকটিও অন্তর্ভুক্ত করে:

action="$1"
if [ "$2" = "in-favour" ]; then
  # Treat conflict remove as an upgrade.
  action="upgrade"
fi
# Don't clean-up just for an upgrade.`
if [ "$action" = "upgrade" ] ; then
  exit 0
fi

সমস্যাটি সমাধানের জন্য এটি একটি ভারী হাতের পদ্ধতির তবে মনে হয় এখানে কৌশলটি চালাচ্ছে (এবং শক্তিশালী গুগের জন্যও)।

পল


Urgh। আমি সত্যিই আশা করি এখন এটি করার পক্ষে যুক্তিসঙ্গত কারণ রয়েছে, ক্লাদগুলি আরও ভয়াবহ
আকার ধারণ করে

আপনি ঠিক বলেছেন - আমি উপরে বর্ণিত আপনার পদ্ধতিটি চেষ্টা করেছি এবং এটি আরও ভাল। কারো ক্রোমিয়াম
পীপগুলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.