如何从软件中心删除“For Purchase”部分?
软件中心有一部分For Purchase程序 – 见下面的截图 –
每当我想要安装东西时,它就是在宣传我。
有没有办法从软件中心删除或隐藏这些程序?
答案链接:
对于13.10及更高版本 →
对于13.04 →
对于12.10 →
对于12.04 →
对于11.10和更低的 →
请发表评论或发送邮件至jmendeth@gmail.com
如果它不适合你或你遇到麻烦!
12.04
源自Pavlos G.来自Darmien的答案和灵感回答 。
不同的版本? 转到列表 。
如果您遇到麻烦并希望还原更改,请参阅post的结尾。
1.忽略可购买的应用程序
打开终端 ( 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 ),打开软件中心,然后……瞧!
没有商业节目!
您现在可以关闭编辑器和终端。
2.删除“购买”频道(可选)
要同时删除菜单中的“For purchase”项目,请打开终端并键入:
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键。 如果您在键入时没有显示任何内容,请不要担心,这是为了隐藏您的密码。
完成后终端将自动关闭。
对于11.10和更早
你可以编辑:
/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
BTW这是我的第一个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
对于12.10及更高版本
来自jmendeth 答案 。
不同的版本? 转到列表 。
如果您遇到麻烦并希望还原更改,请参阅post的结尾。
如果软件中心已打开,请将其关闭。
现在打开一个终端 ( 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
同样,系统将提示您输入密码。
完成后终端将自动关闭。
您可以通过选择View – > Canonical Maintained Software而不是All Software来更简单地完成此操作。 这样做的好处是不会被软件更新覆盖。
这可能隐藏了一些额外的项目,但至少它根据我的经验摆脱了烦人的杂志和销售软件。