软件中心有一个用于购买程序的部分(请参见下面的屏幕截图),
每次我要安装某些东西时,这都会使我烦恼。
有什么方法可以从软件中心删除或隐藏这些程序?
答案链接:
对于13.10及更高版本 →
对于13.04 →
对于12.10 →
对于12.04 →
对于11.10及更低版本 → 如果对您不起作用或遇到问题,
请发表评论或发送邮件给jmendeth@gmail.com
!
软件中心有一个用于购买程序的部分(请参见下面的屏幕截图),
每次我要安装某些东西时,这都会使我烦恼。
有什么方法可以从软件中心删除或隐藏这些程序?
答案链接:
对于13.10及更高版本 →
对于13.04 →
对于12.10 →
对于12.04 →
对于11.10及更低版本 → 如果对您不起作用或遇到问题,
请发表评论或发送邮件给jmendeth@gmail.com
!
Answers:
源自 Pavlos G.答案和Darmien答案的启示。
不同的版本?转到列表。
如果您遇到麻烦并想还原更改,请参阅文章末尾。
打开一个终端(Ctrl+ Alt+ T)并输入:
gksu gedit /usr/share/software-center/softwarecenter/db/update.py
然后按Enter。系统将提示您输入密码。
然后将出现一个编辑器。找到以下几行(提示:Ctrl+ F可能有帮助):
doc = make_doc_from_parser(parser, cache)
if not doc:
LOG.debug("make_doc_from_parser() returned '%s', ignoring" % doc)
return
term_generator.set_document(doc)
name = doc.get_data()
在这些行之后,立即粘贴以下内容(包括空格!):
if doc.get_value(XapianValues.PRICE) not in (""): return
注意:如果您想保留不花钱但必须“购买”的东西
(例如试用版,杂志和其他专有东西),请替换("")
为("0.00", "")
。
保存文件(Ctrl+ S),打开软件中心,然后…瞧!
没有商业程序!
您现在可以关闭编辑器和终端。
要同时删除菜单中的“购买”项,请打开终端并输入:
gksu gedit /usr/share/software-center/softwarecenter/backend/channel_impl/aptchannels.py
找到这些行:
if get_distro().PURCHASE_APP_URL:
channels.append(for_purchase_channel)
并通过#
在每行前面放置一个来禁用它们:
#if get_distro().PURCHASE_APP_URL:
# channels.append(for_purchase_channel)
保存并享受没有广告的软件中心!
您问这是什么意思?这意味着,
每当您升级软件中心时,
所做的更改都将被还原,您将不得不再次执行此步骤。
如果要恢复文件的原始状态,请
打开终端并输入:
sudo apt-get install --reinstall software-center && exit
同样,这次将在终端上提示您输入密码。
键入它,然后按Enter。不用担心,当您键入任何内容时,它会隐藏您的密码。
终端将在完成后自动关闭。
您可以编辑:
/usr/share/software-center/softwarecenter/backend/channel.py
并注释掉(或删除)以下几行:
for_purchase_channel = None
#create a "magic" channel to display items available for purchase `
for_purchase_query = xapian.Query("AH" + AVAILABLE_FOR_PURCHASE_MAGIC_CHANNEL_NAME)
for_purchase_channel = SoftwareChannel(self.icons,
"For Purchase", None, None,
channel_icon=None, # FIXME: need an icon
channel_query=for_purchase_query,
installed_only=installed_only)
if partner_channel is not None:
# channels.append(partner_channel)
#channels.append(for_purchase_channel)
当然,您应该记住,随后的更新software-center
可能会覆盖脚本...
查看此链接以获取更多详细信息;-)
注意:对于12.04,文件名是/usr/share/software-center/softwarecenter/backend/channel_impl/aptchannels.py
。相同的步骤适用。
我找到了一种隐藏12.04商业结果的方法:
在/usr/share/software-center/softwarecenter/ui/gtk3/models/appstore2.py中:
行后:
def set_from_matches(self, matches):
""" set the content of the liststore based on a list of
xapian.MSetItems
"""
LOG.debug("set_from_matches len(matches)='%s'" % len(matches))
添加以下行:
matches[:] = [m for m in matches if (m.document.get_value(XapianValues.PRICE) in _FREE_AS_IN_BEER)]
它只应更改显示的内容,但我还没有对其进行太多测试,因此使用时后果自负。并享受无广告的软件中心。
为了完整起见,以下是在13.10中为我工作的解决方案:
sudo aptitude install gksu
gksu gedit /usr/share/software-center/softwarecenter/db/update.py
找到这个:
def make_doc(self, cache):
"""Build a Xapian document from the desktop info."""
doc = xapian.Document()
并添加以下内容(确保您具有正确的TABS缩进(python要求这样做):
if self.has_option_desktop("X-AppInstall-Price"):
if self.get_desktop("X-AppInstall-Price") > 0: return
顺便说一句,这是我的第一个python evar :-)
我试了一下,它对我有用:仅显示免费(价格不超过0)项目。
gksu gedit /usr/share/software-center/softwarecenter/db/update.py
找到这个:
def make_doc_from_parser(parser, cache):
# XXX 2012-01-19 michaeln I'm just pulling this code out from
# index_app_info_from_parser, but it'd be great to further
# refactor it - it looks quite scary :-)
doc = xapian.Document()
# app name is the data
然后添加以下代码:
if parser.has_option_desktop("X-AppInstall-Price"):
if parser.get_desktop("X-AppInstall-Price") > 0: return
源自jmendeth的 答案。
不同的版本?转到列表。
如果您遇到麻烦并想还原更改,请参阅文章末尾。
关闭软件中心(如果已打开)。
现在打开一个终端(Ctrl+ Alt+ T)并输入:
gksu gedit /usr/share/software-center/softwarecenter/db/update.py
然后按Enter。系统将提示您输入密码。
然后将出现一个编辑器。找到以下几行(提示:Ctrl+ F可能有帮助):
doc = self.make_doc(cache)
if not doc:
LOG.debug("%r.index_app_info: returned invalid doc %r, ignoring.",
self.__class__.__name__, doc)
return
name = doc.get_data()
在这些行之后,立即粘贴以下内容(包括空格!):
if doc.get_value(XapianValues.PRICE) not in (""): return
保存文件(Ctrl+ S),然后关闭编辑器,但不要关闭终端。
现在输入终端:
gksu gedit /usr/share/software-center/softwarecenter/backend/channel_impl/aptchannels.py
按ENTER。编辑器将再次出现。找到这些行:
if get_distro().PURCHASE_APP_URL:
channels.append(for_purchase_channel)
并通过#
在每行前面放置一个来禁用它们:
#if get_distro().PURCHASE_APP_URL:
# channels.append(for_purchase_channel)
保存文件,关闭编辑器,但不关闭终端。
在终端中,键入:
gksu echo; sudo update-software-center && exit
稍等片刻,终端将在完成后自动关闭...
然后打开软件中心,然后…瞧!
没有商业程序!
您问这是什么意思?这意味着,
每当您升级软件中心时,
所做的更改都将被还原,您将不得不再次执行此步骤。
如果要恢复文件的原始状态,请
打开终端并输入:
gksu echo; sudo apt-get install --reinstall software-center && exit
同样,系统将提示您输入密码。
终端将在完成后自动关闭。