Distinction between apt-cache and dpkg -l












9















I use apt-cache pkgname to retrieve the packages as



me@host:~$ apt-cache pkgnames | wc -l
62803


get 62803 results



but



me@host:~$ dpkg -l | wc -l
2336


What's the reasons which lead such a huge distinction. I presume that dpkg is super than apt.










share|improve this question




















  • 2





    Possible duplicate of dpkg-query vs apt-cache

    – Olorin
    Mar 12 at 6:46











  • @Olorin I voted to Leave this question Open. They're duplicates alright, but I want the direction of the duplication to be reversed and dpkg-query vs apt-cache to be closed as a duplicate of this question instead.

    – karel
    Mar 12 at 8:38


















9















I use apt-cache pkgname to retrieve the packages as



me@host:~$ apt-cache pkgnames | wc -l
62803


get 62803 results



but



me@host:~$ dpkg -l | wc -l
2336


What's the reasons which lead such a huge distinction. I presume that dpkg is super than apt.










share|improve this question




















  • 2





    Possible duplicate of dpkg-query vs apt-cache

    – Olorin
    Mar 12 at 6:46











  • @Olorin I voted to Leave this question Open. They're duplicates alright, but I want the direction of the duplication to be reversed and dpkg-query vs apt-cache to be closed as a duplicate of this question instead.

    – karel
    Mar 12 at 8:38
















9












9








9


1






I use apt-cache pkgname to retrieve the packages as



me@host:~$ apt-cache pkgnames | wc -l
62803


get 62803 results



but



me@host:~$ dpkg -l | wc -l
2336


What's the reasons which lead such a huge distinction. I presume that dpkg is super than apt.










share|improve this question
















I use apt-cache pkgname to retrieve the packages as



me@host:~$ apt-cache pkgnames | wc -l
62803


get 62803 results



but



me@host:~$ dpkg -l | wc -l
2336


What's the reasons which lead such a huge distinction. I presume that dpkg is super than apt.







apt package-management dpkg






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 12 at 5:16









Sergiy Kolodyazhnyy

74.3k9155325




74.3k9155325










asked Mar 12 at 2:27









AliceAlice

555111




555111








  • 2





    Possible duplicate of dpkg-query vs apt-cache

    – Olorin
    Mar 12 at 6:46











  • @Olorin I voted to Leave this question Open. They're duplicates alright, but I want the direction of the duplication to be reversed and dpkg-query vs apt-cache to be closed as a duplicate of this question instead.

    – karel
    Mar 12 at 8:38
















  • 2





    Possible duplicate of dpkg-query vs apt-cache

    – Olorin
    Mar 12 at 6:46











  • @Olorin I voted to Leave this question Open. They're duplicates alright, but I want the direction of the duplication to be reversed and dpkg-query vs apt-cache to be closed as a duplicate of this question instead.

    – karel
    Mar 12 at 8:38










2




2





Possible duplicate of dpkg-query vs apt-cache

– Olorin
Mar 12 at 6:46





Possible duplicate of dpkg-query vs apt-cache

– Olorin
Mar 12 at 6:46













@Olorin I voted to Leave this question Open. They're duplicates alright, but I want the direction of the duplication to be reversed and dpkg-query vs apt-cache to be closed as a duplicate of this question instead.

– karel
Mar 12 at 8:38







@Olorin I voted to Leave this question Open. They're duplicates alright, but I want the direction of the duplication to be reversed and dpkg-query vs apt-cache to be closed as a duplicate of this question instead.

– karel
Mar 12 at 8:38












2 Answers
2






active

oldest

votes


















15














apt is for managing remote repositories, dpkg - for locally installed packages. They're related. apt is front end to dpkg. When you run apt-get install package it gets .deb file, and installs it via dpkg. So numbers differ because there's a lot of packages available, but only fraction is installed locally on your system.



apt-cache can show both installed and non-installed packages, because it queries the apt cache - listing of what is available in remote repositories ( that cache is what you get when you do apt-get update). For instance,



$ apt-cache policy terminator
terminator:
Installed: (none)
Candidate: 1.91-1


$ dpkg -l terminator
dpkg-query: no packages found matching terminator




Note that there is another tool which can query list of installed/removed local packages, and that's dpkg-query. For instance,



$ dpkg-query -l 'libc6'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-====================-===============-===============-=============================================
ii libc6:amd64 2.27-3 amd64 GNU C Library: Shared libraries
ii libc6:i386 2.27-3 i386 GNU C Library: Shared libraries

$ dpkg -l libc6
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-====================-===============-===============-=============================================
ii libc6:amd64 2.27-3 amd64 GNU C Library: Shared libraries
ii libc6:i386 2.27-3 i386 GNU C Library: Shared libraries


As per dpkg manual




dpkg can also be used as a front-end to dpkg-deb(1) and dpkg-query(1). The list of supported actions can be found later on in the ACTIONS section. If any such action is encountered dpkg just runs dpkg-deb or dpkg-query with the parameters given to it, but no specific options are currently passed to them, to use any such option the back-ends need to be called directly.




As far as dpkg-query goes, it should be noted that this tool is focused on querying the database of installed packages, and can output information in particular format(-f option plus -W action). For instance,



$ dpkg-query -W -f='PACK:${Package}nARCH:${Architecture}nSTAT:${Status}n---n' libc6
PACK:libc6
ARCH:amd64
STAT:install ok installed
---
PACK:libc6
ARCH:i386
STAT:install ok installed
---


Interestingly enough, dpkg database maintains listing of packages that are selected for removal or were removed at some point. dpkg-query can also take glob pattern as an argument, and depending on presence of absence of it show only installed/configured packages or all packages.






share|improve this answer

































    2














    dpkg -l shows your installed package versions (starting with ii), removed ones (rc), and some others (e.g. installed but not configured, see the manpage).



    apt-cache pkgnames shows you all the available package names (but not versions of the same package) in the added repositories.






    share|improve this answer

























      Your Answer








      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "89"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1124914%2fdistinction-between-apt-cache-and-dpkg-l%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      15














      apt is for managing remote repositories, dpkg - for locally installed packages. They're related. apt is front end to dpkg. When you run apt-get install package it gets .deb file, and installs it via dpkg. So numbers differ because there's a lot of packages available, but only fraction is installed locally on your system.



      apt-cache can show both installed and non-installed packages, because it queries the apt cache - listing of what is available in remote repositories ( that cache is what you get when you do apt-get update). For instance,



      $ apt-cache policy terminator
      terminator:
      Installed: (none)
      Candidate: 1.91-1


      $ dpkg -l terminator
      dpkg-query: no packages found matching terminator




      Note that there is another tool which can query list of installed/removed local packages, and that's dpkg-query. For instance,



      $ dpkg-query -l 'libc6'
      Desired=Unknown/Install/Remove/Purge/Hold
      | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
      |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
      ||/ Name Version Architecture Description
      +++-====================-===============-===============-=============================================
      ii libc6:amd64 2.27-3 amd64 GNU C Library: Shared libraries
      ii libc6:i386 2.27-3 i386 GNU C Library: Shared libraries

      $ dpkg -l libc6
      Desired=Unknown/Install/Remove/Purge/Hold
      | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
      |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
      ||/ Name Version Architecture Description
      +++-====================-===============-===============-=============================================
      ii libc6:amd64 2.27-3 amd64 GNU C Library: Shared libraries
      ii libc6:i386 2.27-3 i386 GNU C Library: Shared libraries


      As per dpkg manual




      dpkg can also be used as a front-end to dpkg-deb(1) and dpkg-query(1). The list of supported actions can be found later on in the ACTIONS section. If any such action is encountered dpkg just runs dpkg-deb or dpkg-query with the parameters given to it, but no specific options are currently passed to them, to use any such option the back-ends need to be called directly.




      As far as dpkg-query goes, it should be noted that this tool is focused on querying the database of installed packages, and can output information in particular format(-f option plus -W action). For instance,



      $ dpkg-query -W -f='PACK:${Package}nARCH:${Architecture}nSTAT:${Status}n---n' libc6
      PACK:libc6
      ARCH:amd64
      STAT:install ok installed
      ---
      PACK:libc6
      ARCH:i386
      STAT:install ok installed
      ---


      Interestingly enough, dpkg database maintains listing of packages that are selected for removal or were removed at some point. dpkg-query can also take glob pattern as an argument, and depending on presence of absence of it show only installed/configured packages or all packages.






      share|improve this answer






























        15














        apt is for managing remote repositories, dpkg - for locally installed packages. They're related. apt is front end to dpkg. When you run apt-get install package it gets .deb file, and installs it via dpkg. So numbers differ because there's a lot of packages available, but only fraction is installed locally on your system.



        apt-cache can show both installed and non-installed packages, because it queries the apt cache - listing of what is available in remote repositories ( that cache is what you get when you do apt-get update). For instance,



        $ apt-cache policy terminator
        terminator:
        Installed: (none)
        Candidate: 1.91-1


        $ dpkg -l terminator
        dpkg-query: no packages found matching terminator




        Note that there is another tool which can query list of installed/removed local packages, and that's dpkg-query. For instance,



        $ dpkg-query -l 'libc6'
        Desired=Unknown/Install/Remove/Purge/Hold
        | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
        |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
        ||/ Name Version Architecture Description
        +++-====================-===============-===============-=============================================
        ii libc6:amd64 2.27-3 amd64 GNU C Library: Shared libraries
        ii libc6:i386 2.27-3 i386 GNU C Library: Shared libraries

        $ dpkg -l libc6
        Desired=Unknown/Install/Remove/Purge/Hold
        | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
        |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
        ||/ Name Version Architecture Description
        +++-====================-===============-===============-=============================================
        ii libc6:amd64 2.27-3 amd64 GNU C Library: Shared libraries
        ii libc6:i386 2.27-3 i386 GNU C Library: Shared libraries


        As per dpkg manual




        dpkg can also be used as a front-end to dpkg-deb(1) and dpkg-query(1). The list of supported actions can be found later on in the ACTIONS section. If any such action is encountered dpkg just runs dpkg-deb or dpkg-query with the parameters given to it, but no specific options are currently passed to them, to use any such option the back-ends need to be called directly.




        As far as dpkg-query goes, it should be noted that this tool is focused on querying the database of installed packages, and can output information in particular format(-f option plus -W action). For instance,



        $ dpkg-query -W -f='PACK:${Package}nARCH:${Architecture}nSTAT:${Status}n---n' libc6
        PACK:libc6
        ARCH:amd64
        STAT:install ok installed
        ---
        PACK:libc6
        ARCH:i386
        STAT:install ok installed
        ---


        Interestingly enough, dpkg database maintains listing of packages that are selected for removal or were removed at some point. dpkg-query can also take glob pattern as an argument, and depending on presence of absence of it show only installed/configured packages or all packages.






        share|improve this answer




























          15












          15








          15







          apt is for managing remote repositories, dpkg - for locally installed packages. They're related. apt is front end to dpkg. When you run apt-get install package it gets .deb file, and installs it via dpkg. So numbers differ because there's a lot of packages available, but only fraction is installed locally on your system.



          apt-cache can show both installed and non-installed packages, because it queries the apt cache - listing of what is available in remote repositories ( that cache is what you get when you do apt-get update). For instance,



          $ apt-cache policy terminator
          terminator:
          Installed: (none)
          Candidate: 1.91-1


          $ dpkg -l terminator
          dpkg-query: no packages found matching terminator




          Note that there is another tool which can query list of installed/removed local packages, and that's dpkg-query. For instance,



          $ dpkg-query -l 'libc6'
          Desired=Unknown/Install/Remove/Purge/Hold
          | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
          |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
          ||/ Name Version Architecture Description
          +++-====================-===============-===============-=============================================
          ii libc6:amd64 2.27-3 amd64 GNU C Library: Shared libraries
          ii libc6:i386 2.27-3 i386 GNU C Library: Shared libraries

          $ dpkg -l libc6
          Desired=Unknown/Install/Remove/Purge/Hold
          | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
          |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
          ||/ Name Version Architecture Description
          +++-====================-===============-===============-=============================================
          ii libc6:amd64 2.27-3 amd64 GNU C Library: Shared libraries
          ii libc6:i386 2.27-3 i386 GNU C Library: Shared libraries


          As per dpkg manual




          dpkg can also be used as a front-end to dpkg-deb(1) and dpkg-query(1). The list of supported actions can be found later on in the ACTIONS section. If any such action is encountered dpkg just runs dpkg-deb or dpkg-query with the parameters given to it, but no specific options are currently passed to them, to use any such option the back-ends need to be called directly.




          As far as dpkg-query goes, it should be noted that this tool is focused on querying the database of installed packages, and can output information in particular format(-f option plus -W action). For instance,



          $ dpkg-query -W -f='PACK:${Package}nARCH:${Architecture}nSTAT:${Status}n---n' libc6
          PACK:libc6
          ARCH:amd64
          STAT:install ok installed
          ---
          PACK:libc6
          ARCH:i386
          STAT:install ok installed
          ---


          Interestingly enough, dpkg database maintains listing of packages that are selected for removal or were removed at some point. dpkg-query can also take glob pattern as an argument, and depending on presence of absence of it show only installed/configured packages or all packages.






          share|improve this answer















          apt is for managing remote repositories, dpkg - for locally installed packages. They're related. apt is front end to dpkg. When you run apt-get install package it gets .deb file, and installs it via dpkg. So numbers differ because there's a lot of packages available, but only fraction is installed locally on your system.



          apt-cache can show both installed and non-installed packages, because it queries the apt cache - listing of what is available in remote repositories ( that cache is what you get when you do apt-get update). For instance,



          $ apt-cache policy terminator
          terminator:
          Installed: (none)
          Candidate: 1.91-1


          $ dpkg -l terminator
          dpkg-query: no packages found matching terminator




          Note that there is another tool which can query list of installed/removed local packages, and that's dpkg-query. For instance,



          $ dpkg-query -l 'libc6'
          Desired=Unknown/Install/Remove/Purge/Hold
          | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
          |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
          ||/ Name Version Architecture Description
          +++-====================-===============-===============-=============================================
          ii libc6:amd64 2.27-3 amd64 GNU C Library: Shared libraries
          ii libc6:i386 2.27-3 i386 GNU C Library: Shared libraries

          $ dpkg -l libc6
          Desired=Unknown/Install/Remove/Purge/Hold
          | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
          |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
          ||/ Name Version Architecture Description
          +++-====================-===============-===============-=============================================
          ii libc6:amd64 2.27-3 amd64 GNU C Library: Shared libraries
          ii libc6:i386 2.27-3 i386 GNU C Library: Shared libraries


          As per dpkg manual




          dpkg can also be used as a front-end to dpkg-deb(1) and dpkg-query(1). The list of supported actions can be found later on in the ACTIONS section. If any such action is encountered dpkg just runs dpkg-deb or dpkg-query with the parameters given to it, but no specific options are currently passed to them, to use any such option the back-ends need to be called directly.




          As far as dpkg-query goes, it should be noted that this tool is focused on querying the database of installed packages, and can output information in particular format(-f option plus -W action). For instance,



          $ dpkg-query -W -f='PACK:${Package}nARCH:${Architecture}nSTAT:${Status}n---n' libc6
          PACK:libc6
          ARCH:amd64
          STAT:install ok installed
          ---
          PACK:libc6
          ARCH:i386
          STAT:install ok installed
          ---


          Interestingly enough, dpkg database maintains listing of packages that are selected for removal or were removed at some point. dpkg-query can also take glob pattern as an argument, and depending on presence of absence of it show only installed/configured packages or all packages.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Mar 12 at 11:14

























          answered Mar 12 at 2:56









          Sergiy KolodyazhnyySergiy Kolodyazhnyy

          74.3k9155325




          74.3k9155325

























              2














              dpkg -l shows your installed package versions (starting with ii), removed ones (rc), and some others (e.g. installed but not configured, see the manpage).



              apt-cache pkgnames shows you all the available package names (but not versions of the same package) in the added repositories.






              share|improve this answer






























                2














                dpkg -l shows your installed package versions (starting with ii), removed ones (rc), and some others (e.g. installed but not configured, see the manpage).



                apt-cache pkgnames shows you all the available package names (but not versions of the same package) in the added repositories.






                share|improve this answer




























                  2












                  2








                  2







                  dpkg -l shows your installed package versions (starting with ii), removed ones (rc), and some others (e.g. installed but not configured, see the manpage).



                  apt-cache pkgnames shows you all the available package names (but not versions of the same package) in the added repositories.






                  share|improve this answer















                  dpkg -l shows your installed package versions (starting with ii), removed ones (rc), and some others (e.g. installed but not configured, see the manpage).



                  apt-cache pkgnames shows you all the available package names (but not versions of the same package) in the added repositories.







                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Mar 12 at 13:28









                  terdon

                  67.1k13139221




                  67.1k13139221










                  answered Mar 12 at 8:38









                  NyosNyos

                  1713




                  1713






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Ask Ubuntu!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1124914%2fdistinction-between-apt-cache-and-dpkg-l%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Biblatex bibliography style without URLs when DOI exists (in Overleaf with Zotero bibliography)

                      ComboBox Display Member on multiple fields

                      Is it possible to collect Nectar points via Trainline?