ソフトウェアセンターから「購入」セクションを削除する方法


35

Software Centerには、For Purchaseプログラムのセクションが
あります(下のスクリーンショットを参照)。これは、何かをインストールするたびに悩まされます。

これらのプログラムをソフトウェアセンターから削除または非表示する方法はありますか?

回答へのリンク:

以下のための13.10と高い
のための13.04
のための12.10
のための12.04
のための11.10と下げる
コメントを残すか、にメールを送ってくださいjmendeth@gmail.com
、それはあなたのために働いていないか、問題が発生した場合!

Ubuntu Software Centerの「For Purchase」セクション。


13.10以降とはどういう意味ですか?
アビナッシュラジ14年

@AvinashRajこれは、現在の13.10のように、Ubuntuの最新バージョンのものです。14.04のすぐ後に、14.04のアルファ/ベータも間もなくリリースされると考えています。
アルヴァ14年

回答:


17

12.04の場合

Pavlos G.の回答Darmienの回答からのインスピレーションから派生 。
異なるバージョン?リストに移動します
問題が発生して変更を元に戻したい場合は、投稿の最後をご覧ください。


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

注:あなたはお金がかかるしないものを維持したいのですが、「購入」しなければならない場合
(治験、雑誌や他のpropietaryのものと同様に)、交換してください("")("0.00", "")

ファイル(Ctrl+ S)を保存し、ソフトウェアセンターを開いて…出来上がり!
商用プログラムはありません!
これで、エディターとターミナルを閉じることができます。

2.「購入用」チャネルを削除します(オプション)

メニューの「購入用」アイテムも削除するには、ターミナルを開いて次のように入力します。

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)

広告なしでソフトウェアセンターを保存してお楽しみください!

 


サイドノート:ファイル。あります。パッケージ化。

これはどういう意味ですか?つまり、
Software Centerをアップグレードするたびに、変更
が元に戻され、この手順を再度実行する必要があります。

変更を元に戻す

ファイルの元の状態を復元する場合は
、ターミナルを開いて次のように入力します。

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

繰り返しますが、今回は端末でパスワードの入力を求められます。
入力してEnterキーを押します。入力時に何も表示されなくても心配する必要はありません。パスワードを非表示にするためです。
終了すると、ターミナルは自動的に閉じます。


2
他の人に言ったように、プログラムにとって重要なものを編集する前にバックアップを作成するのが最善です。
–ζ

1
@ObsessiveFOSSの良い点。ただし、次のことに注意してください。1)変更は簡単で、元に戻すのは簡単です。人々が迷子になることはまずありません。:D 2)このファイルはパッケージ化されているため、間違えた場合はパッケージを再インストールするだけで済みます。
アルバメンデス

@ObsessiveFOSS念のため元に戻す指示を追加しました;)
アルバメンデス

12

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です。同じ手順が適用されます。


1
12.04のソリューションをお探しですか?:)
Savvas Radevic

1
ソフトウェアセンターを古いバージョンのaskubuntu.com/questions/95497/…に置き換える場合、次の手順を実行できます。
マテオ

12.04では、これらの手順により「購入用」チャネルが非表示になりますが、すべての商用エントリは非表示になります。それらを隠すには、ダーミエンのソリューションのようなものが必要になるでしょう。(しかし、GUIではなくロジックを変更する方法を見つけたいです)。
アルバメンデス

見つけた!どこからでもすべてのコマーシャルエントリを非表示にします!
アルバメンデス

@medigeek 私の答えを見てください。うまくいかない場合は教えてください。3台の異なるコンピューターでテストしました。
アルバメンデス

6

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

表示される内容を変更するだけですが、まだあまりテストしていませんので、ご自身の責任で使用してください。広告なしのソフトウェアセンターをお楽しみください。


すばらしいです!それをテストするのを待つことができません。:)
アルバメンデス

テストはしていませんが、行います。お試しいただきありがとうございます!
サヴァスラデビッチ

6

完全を期すために、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でした:-)


+1現在は確認できませんが、目次にも追加されています。ありがとう!
アルバメンデス14年

14.04で動作しますが、UIからオン/オフを切り替えることができればより良いでしょう。このソリューションはかなり永続的です。購入用のアプリが再び表示されることはありません。
VlatkoB 14

3

私はこれを試してみました、それは私のために働いた:無料(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

2

12.10以降の場合

jmendeth 回答から派生。
異なるバージョン?リストに移動します
問題が発生して変更を元に戻したい場合は、投稿の最後をご覧ください。

Software Centerが開いている場合は閉じます。ターミナル(+ + )を
開いて、次を入力します。CtrlAltT

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

少し待ってください。終了すると、ターミナルは自動的に閉じます。
その後、ソフトウェアセンターを開いて…出来上がり!
商用プログラムはありません!

サイドノート:ファイル。あります。パッケージ化。

これはどういう意味ですか?つまり、
Software Centerをアップグレードするたびに、変更
が元に戻され、この手順を再度実行する必要があります。

変更を元に戻す

ファイルの元の状態を復元する場合は
、ターミナルを開いて次のように入力します。

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

繰り返しますが、パスワードの入力を求められます。
終了すると、ターミナルは自動的に閉じます。


+1 貢献してくれてありがとう!さて、これはかなりの手間がかかっているので、バージョンに応じて適切な修正を行うPythonスクリプトを作成するつもりです。
アルバメンデス

12.10でテストします。すべての準備ができたら、答えを上部にリンクし、他の変更を加えます。
アルバメンデス

Ubuntu 12.10の新規インストールでそれをやった
blvdeer

@jmendeth私はあなたがそのスクリプトを書くのを手伝いたいです
-blvdeer

遅れてしまい申し訳ありません。残念ながら、私の64ビットUbuntu 12.10では動作しません。私は何かを作ることができるかどうかを確認します...
アルバメンデス

-2

これを行うには、[すべてのソフトウェア]ではなく[表示]-> [Canonical Maintained Software]を選択します。これには、ソフトウェアの更新によって上書きされないという利点があります。

これはいくつかの追加アイテムを隠すかもしれませんが、少なくとも私の経験では、迷惑な雑誌や販売用ソフトウェアを取り除きます。


2
次に、すべてのソフトウェアの90%を非表示にして、Canonicalがサポートするソフトウェア(商用または非商用)のみを表示します。私がしたいことは、所有しているソフトウェアのみを削除することです。
アルバメンデス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.