Como remover a seção "Para compra" do Centro de software?

35

O Software Center possui uma seção dos programas Para compra - veja a captura de tela abaixo -,
que está me irritando toda vez que eu quero instalar algo.

Existe alguma maneira de remover ou ocultar esses programas do Software Center?

Links para respostas:

Para 13.10 e superior
Para 13.04
Para 12.10
Para 12.04
Para 11.10 e inferior
Deixe um comentário ou envie um email para [email protected]
se não estiver funcionando para você ou se estiver com problemas!

A seção 'Para compra' do Ubuntu Software Center.

Alba Mendez
fonte
o que é 13.10 e meios mais altos?
Avinash Raj
@AvinashRaj Essa é a versão mais recente do Ubuntu, como agora a 13.10, e em breve a 14.04 acredita que o alpha / beta da 14.04 também será lançado em breve.
Alvar 12/01

Respostas:

17

Para 12.04

Derivado da resposta de Pavlos G. e inspiração da resposta de Darmien .
Versão diferente? Vá para a lista .
Veja o final da postagem, se você estiver com problemas e quiser reverter as alterações.


1. Ignore os aplicativos compráveis

Abra um terminal ( Ctrl+ Alt+ T) e digite:

gksu gedit /usr/share/software-center/softwarecenter/db/update.py

E pressione Enter. Você será solicitado a fornecer sua senha.
Em seguida, um editor aparecerá. Localize as seguintes linhas (dica: Ctrl+ Fpode ajudar):

        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()

Imediatamente após essas linhas, cole o seguinte ( incluindo os espaços! ):

        if doc.get_value(XapianValues.PRICE) not in (""): return

Nota: se você deseja manter coisas que não custam dinheiro, mas precisam ser "compradas"
(como ensaios, revistas e outras coisas de propriedade), substitua ("")por ("0.00", "").

Salve o arquivo ( Ctrl+ S), abra o Software Center e… pronto!
Não há programas comerciais!
Você pode fechar o editor e o terminal agora.

2. Remova o canal "Para compra" (opcional)

Para remover também o item "Para compra" no menu, abra um terminal e digite:

gksu gedit /usr/share/software-center/softwarecenter/backend/channel_impl/aptchannels.py

Localize estas linhas:

        if get_distro().PURCHASE_APP_URL:
            channels.append(for_purchase_channel)

E desative-os colocando um #na frente de cada linha:

        #if get_distro().PURCHASE_APP_URL:
        #    channels.append(for_purchase_channel)

Salve e desfrute de um centro de software sem anúncios!

 


Notas laterais: The. arquivos. são. empacotado.

O que isso significa, você pergunta? Isso significa que,
sempre que você atualizar seu Software Center, as alterações
serão revertidas e você precisará executar essas etapas novamente.

Desfazer as modificações

Se você deseja restaurar o estado original dos arquivos,
abra um terminal e digite:

sudo apt-get install --reinstall software-center && exit

Novamente, você será solicitado a fornecer sua senha, desta vez no terminal.
Digite e pressione ENTER. Não se preocupe se nada aparecer ao digitar, é para ocultar sua senha.
O terminal fechará automaticamente quando terminar.

Alba Mendez
fonte
2
Como já disse a outras pessoas, é melhor fazer um backup antes de editar qualquer coisa crítica para um programa.
ζ--
1
@ObsessiveFOSS good point. Mas lembre-se de que: 1) As alterações são triviais e fáceis de desfazer. É improvável que as pessoas se percam. : D 2) Esses arquivos são empacotados; portanto, se você cometer um erro, poderá apenas reinstalar o pacote.
Alba Mendez
@ObsessiveFOSS Eu adicionei instruções para reverter, apenas no caso;)
Alba Mendez
12

Para 11.10 e versões anteriores

Você pode editar:

/usr/share/software-center/softwarecenter/backend/channel.py

e comente (ou exclua) as seguintes linhas:

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)

Claro, você deve ter em mente que as atualizações consequentes software-centerprovavelmente substituirão o script ...

Confira este link para mais detalhes ;-)

Nota: para 12.04 o nome do arquivo é /usr/share/software-center/softwarecenter/backend/channel_impl/aptchannels.py. Os mesmos passos se aplicam.

Pavlos G.
fonte
1
Gostaria de encontrar uma solução para 12.04? :)
Savvas Radevic
1
Se você substituir o software center por uma versão antiga askubuntu.com/questions/95497/… , poderá seguir estas etapas.
Mateo
Na 12.04, essas etapas ocultam o canal "Para compra", mas não todas as entradas comerciais. Para escondê-los também, seria necessário algo como a solução de Darmien. (Mas eu quero encontrar uma maneira de alterar a lógica, não a GUI ).
Alba Mendez
Eu encontrei! Ocultar TODAS as entradas comerciais de EM TODA PARTE!
Alba Mendez
@medigeek olha a minha resposta . Se não funcionar, me diga. Eu testei em três computadores diferentes.
Alba Mendez
6

Encontrei uma maneira de ocultar resultados comerciais para 12.04:

Em /usr/share/software-center/softwarecenter/ui/gtk3/models/appstore2.py:

Após as linhas:

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))

Adicione a seguinte linha:

    matches[:] = [m for m in matches if (m.document.get_value(XapianValues.PRICE) in _FREE_AS_IN_BEER)]

Ele deve mudar apenas o que é exibido, mas eu ainda não testei muito, então use por sua conta e risco. E aproveite um centro de software livre de anúncios.

Damien
fonte
Ótimo! Mal posso esperar para testá-lo. :)
Alba Mendez
Não testei, mas vou fazer. Obrigado por tentar!
Savvas Radevic
6

Para completar, eis a solução que funcionou para mim na 13.10:

sudo aptitude install gksu
gksu gedit /usr/share/software-center/softwarecenter/db/update.py

Encontre isto:

def make_doc(self, cache):
    """Build a Xapian document from the desktop info."""
    doc = xapian.Document()

E adicione isso (verifique se você tem o recuo correto do TABS (o python exige isso):

if self.has_option_desktop("X-AppInstall-Price"):
    if self.get_desktop("X-AppInstall-Price") > 0: return

BTW este foi o meu primeiro python evar :-)

Lennart Rolland
fonte
+1 Não é possível confirmar no momento, mas também foi adicionado ao sumário. Obrigado!
Alba Mendez
Funciona para 14.04, mas seria melhor se pudesse ser ativado / desativado na interface do usuário. Esta solução é bastante permanente. Nunca mais veja aplicativos para compra.
VlatkoB
3

Eu tentei isso, funcionou para mim: apenas itens GRATUITOS (preço não superior a 0) são exibidos.

gksu gedit /usr/share/software-center/softwarecenter/db/update.py

Encontre isto:

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

Em seguida, adicione o seguinte código:

if parser.has_option_desktop("X-AppInstall-Price"):
    if parser.get_desktop("X-AppInstall-Price") > 0: return
deputado
fonte
2

Para 12.10 e posterior

Derivado da resposta de jmendeth .
Versão diferente? Vá para a lista .
Veja o final da postagem, se você estiver com problemas e quiser reverter as alterações.

Feche o Centro de Software, se estiver aberto.
Agora abra um terminal ( Ctrl+ Alt+ T) e digite:

gksu gedit /usr/share/software-center/softwarecenter/db/update.py

E pressione Enter. Você será solicitado a fornecer sua senha.
Em seguida, um editor aparecerá. Localize as seguintes linhas (dica: Ctrl+ Fpode ajudar):

        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()

Imediatamente após essas linhas, cole o seguinte ( incluindo os espaços! ):

        if doc.get_value(XapianValues.PRICE) not in (""): return

Salve o arquivo ( Ctrl+ S) e feche o editor, mas não o terminal.
Agora digite o terminal:

gksu gedit /usr/share/software-center/softwarecenter/backend/channel_impl/aptchannels.py

Pressione Enter. Um editor aparecerá novamente. Localize estas linhas:

        if get_distro().PURCHASE_APP_URL:
            channels.append(for_purchase_channel)

E desative-os colocando um #na frente de cada linha:

        #if get_distro().PURCHASE_APP_URL:
        #    channels.append(for_purchase_channel)

Salve o arquivo, feche o editor, mas não o terminal.
No terminal, digite:

gksu echo; sudo update-software-center && exit

Espere um pouco, o terminal fechará automaticamente quando terminar ...
Em seguida, abra o Centro de Software e ... pronto!
Não há programas comerciais!

Notas laterais: The. arquivos. são. empacotado.

O que isso significa, você pergunta? Isso significa que,
sempre que você atualizar seu Software Center, as alterações
serão revertidas e você precisará executar essas etapas novamente.

Desfazer as modificações

Se você deseja restaurar o estado original dos arquivos,
abra um terminal e digite:

gksu echo; sudo apt-get install --reinstall software-center && exit

Novamente, você será solicitado a fornecer sua senha.
O terminal fechará automaticamente quando terminar.

blvdeer
fonte
+1 Obrigado por contribuir! Bem, isso está ficando bastante extenso, então acho que vou criar um script Python que faça a correção apropriada, dependendo da versão.
Alba Mendez
Vou testar no meu 12.10, se tudo estiver pronto, vincularemos sua resposta no topo e faremos qualquer outra modificação.
Alba Mendez
Acabei de fazer isso na minha nova instalação do Ubuntu 12.10
blvdeer
@jmendeth eu amarei para ajudá-lo escrever esse roteiro
blvdeer
Desculpe a demora. Infelizmente, ele não funciona no meu Ubuntu 12.10 de 64 bits. Vou ver se eu posso fazer alguma coisa ...
Alba Mendez
-2

Você pode fazer isso de maneira mais simples selecionando Exibir -> Software Mantido Canonical em vez de Todo o Software. Isso tem o benefício de não ser substituído por atualizações de software.

Isso pode ocultar alguns itens adicionais, mas pelo menos se livra das revistas irritantes e do software para venda na minha experiência.

user1691562
fonte
2
Então você está ocultando 90% de todo o software, mostrando apenas o software (comercial ou não) suportado pela Canonical. O que eu quero fazer é remover apenas o software proprietário .
Alba Mendez