Скрипт, чтобы получить (короткий) список установленных приложений, похожий на Ubuntu Software Center?

Как мне написать сценарий, чтобы получить тот же список установленного программного обеспечения, о котором сообщает Ubuntu Software Center?

Каждая ссылка, которую я могу найти, упоминает либо dpkg -l, либо rpm -qa (или некоторый вариант), но они обычно включают в себя каждый последний пакет и библиотеку, а что - нет, и вы получаете список из 1000 записей.

Приложение Ubuntu Software Center, однако, показывает очень краткий (и удобный для пользователя) список - в настоящее время 67 предметов в моем ящике Ubuntu. Это тот список, который мне интересен. Может ли кто-нибудь указать мне сценарий, который может получить что-то подобное?

Спасибо.

5
задан 7 April 2011 в 21:46

54 ответа

Может все еще не быть тем, что вы ищете ...

  dpkg --get-select  

Если нет (я не могу комментарий еще), запустите следующее и сообщите мне номер (просто подсчитывает количество строк.

  dpkg --get-selections | wc -l  
1
ответ дан 6 August 2018 в 03:50

В Python вы можете получить список установленных пакетов следующим образом:

  import apt packages = apt.Cache () packages.open () installed_packages = [i.name for i in  пакеты, если i.is_installed]  

Если вы хотите узнать дополнительную информацию о пакетах, этот процесс немного задействован. См. Документацию для apt-модуля Python для всей доступной информации. Кроме того, вы можете просмотреть источник Software Center, чтобы узнать, что они делают.

Вы не получите эту информацию, просто просмотрев какой-нибудь файл где-нибудь или выполнив простую команду. Вам нужно будет сделать некоторые сценарии.

EDIT: Я считаю, что Software Center получает список пакетов для отображения из тех пакетов, которые отправляют файлы .desktop. Это может быть сложнее, но вы можете легко отфильтровать список для тех пакетов, которые установлены, и иметь файл .desktop. Этот пример продолжает мой предыдущий код:

  import os desktop_files = ['.'. Join (i.split ('.') [: - 1]) для i в os.listdir ('  / usr / share / applications ')] installed_in_software_center = [i для i в установленных_пакетах, если я в desktop_files]  
4
ответ дан 6 August 2018 в 03:50

Какой программный центр, вероятно, показывается (и что вы подразумеваете под приложениями), это файлы .desktop . По сути, они служат ярлыками для фактических двоичных файлов (думаю, что касается ярлыков Windows и файлов .exe ).

Большинство (но не все!) Приложений, установленных через диспетчера программного обеспечения, имеют ярлык в / usr / share / applications . Структура этого файла выглядит примерно так:

  [Desktop Entry] Name = My App Name Exec = / full / path / to / binary Комментарий = это приложение что-то делает Icon = / full /  path / to / icon.png  

Область приложения Unity анализирует эти файлы, чтобы извлечь описание и имя приложения. Мы можем сделать что-то подобное с этой командой:

  find / usr / share / applications / -maxdepth 1 -type f -iname "* .desktop" |  xargs awk -F '=' '/ Desktop Entry / {seek = 1};  {if (seek == 1 & amp; $ 0 ~ / Name = /) {$ 1 = ""; print; seek = 0; next}} ' 

В основном мы генерируем список все эти файлы .desktop , проанализируйте их, чтобы извлечь строку с Name = , но отображать только часть строки после знака = .

Как я уже говорил, некоторые из приложений не имеют файла .desktop или могут быть сохранены в папке / opt , поэтому вы можете захотеть для выполнения той же команды (с удалением -maxdepth 1 ) в каталоге / opt .

0
ответ дан 6 August 2018 в 03:50

Возможно, APTonCD поможет?

Это инструмент, который сканирует ваши APT-установленные пакеты и строит список для вас. Затем вы можете вручную выбрать / отменить выбор тех, которые хотите, сохранить список и даже загрузить / использовать кеш для сохранения выбранных пакетов в папке с компакт-диском (для автономной автоматической установки установленных приложений)

Он также имеет некоторые фильтры, такие как включение зависимостей, включая старые версии и т. Д.

APTonCD поставляется по умолчанию в Mint 10, но поскольку они используют одни и те же репозитории Ubuntu, вы можете установить его через менеджера программ.

1
ответ дан 6 August 2018 в 03:50

Насколько я могу судить, программный центр фильтрует на основе раздела, в котором находится пакет. Хотя он не будет точно таким же, как фильтр, который использует Центр программного обеспечения, вы можете сделать что-то подобное, отфильтровывая библиотеку

grep - фильтр из вещей, которые либо не установлены, либо, как правило, скрыты программным центром. Вы можете добавить больше вещей для фильтрации по мере необходимости - строка «lib» является хорошим индикатором того, что это не приложение для конечного пользователя.

1
ответ дан 6 August 2018 в 03:50

Вы получаете данные из журналов в / var / log / apt . По мере поворота журналов большинство из них сжимаются. Сначала мы объединяем текущий журнал со сжатыми, прежде чем мы извлечем все пакеты, которые были установлены, но не автоматически. Это была просто пробная версия и ошибка с моей стороны, поэтому ее можно немного почистить.

  cd / var / log / apt sudo -s cat history.log & gt;  allhistory zcat history.log * gz & gt; & gt;  allhistory.log cat allhistory.log |  grep Установить |  sed s / Install: // g |  tr ')' '\n' |  grep -v автоматический |  sed s /, // g |  sed s /:.*$// g |  sort -u |  grep -v "^ $"  
1
ответ дан 6 August 2018 в 03:50

Какой программный центр, вероятно, показывается (и что вы подразумеваете под приложениями), это файлы .desktop . По сути, они служат ярлыками для фактических двоичных файлов (думаю, что касается ярлыков Windows и файлов .exe ).

Большинство (но не все!) Приложений, установленных через диспетчера программного обеспечения, имеют ярлык в / usr / share / applications . Структура этого файла выглядит примерно так:

  [Desktop Entry] Name = My App Name Exec = / full / path / to / binary Комментарий = это приложение что-то делает Icon = / full /  path / to / icon.png  

Область приложения Unity анализирует эти файлы, чтобы извлечь описание и имя приложения. Мы можем сделать что-то подобное с этой командой:

  find / usr / share / applications / -maxdepth 1 -type f -iname "* .desktop" |  xargs awk -F '=' '/ Desktop Entry / {seek = 1};  {if (seek == 1 & amp; $ 0 ~ / Name = /) {$ 1 = ""; print; seek = 0; next}} ' 

В основном мы генерируем список все эти файлы .desktop , проанализируйте их, чтобы извлечь строку с Name = , но отображать только часть строки после знака = .

Как я уже говорил, некоторые из приложений не имеют файла .desktop или могут быть сохранены в папке / opt , поэтому вы можете захотеть для выполнения той же команды (с удалением -maxdepth 1 ) в каталоге / opt .

0
ответ дан 7 August 2018 в 21:46

Может все еще не быть тем, что вы ищете ...

  dpkg --get-select  

Если нет (я не могу комментарий еще), запустите следующее и сообщите мне номер (просто подсчитывает количество строк.

  dpkg --get-selections | wc -l  
1
ответ дан 7 August 2018 в 21:46

Насколько я могу судить, программный центр фильтрует на основе раздела, в котором находится пакет. Хотя он не будет точно таким же, как фильтр, который использует Центр программного обеспечения, вы можете сделать что-то подобное, отфильтровывая библиотеку

grep - фильтр из вещей, которые либо не установлены, либо, как правило, скрыты программным центром. Вы можете добавить больше вещей для фильтрации по мере необходимости - строка «lib» является хорошим индикатором того, что это не приложение для конечного пользователя.

1
ответ дан 7 August 2018 в 21:46

Возможно, APTonCD поможет?

Это инструмент, который сканирует ваши APT-установленные пакеты и строит список для вас. Затем вы можете вручную выбрать / отменить выбор тех, которые хотите, сохранить список и даже загрузить / использовать кеш для сохранения выбранных пакетов в папке с компакт-диском (для автономной автоматической установки установленных приложений)

Он также имеет некоторые фильтры, такие как включение зависимостей, включая старые версии и т. Д.

APTonCD поставляется по умолчанию в Mint 10, но поскольку они используют одни и те же репозитории Ubuntu, вы можете установить его через менеджера программ.

1
ответ дан 7 August 2018 в 21:46

В Python вы можете получить список установленных пакетов следующим образом:

  import apt packages = apt.Cache () packages.open () installed_packages = [i.name for i in  пакеты, если i.is_installed]  

Если вы хотите узнать дополнительную информацию о пакетах, этот процесс немного задействован. См. Документацию для apt-модуля Python для всей доступной информации. Кроме того, вы можете просмотреть источник Software Center, чтобы узнать, что они делают.

Вы не получите эту информацию, просто просмотрев какой-нибудь файл где-нибудь или выполнив простую команду. Вам нужно будет сделать некоторые сценарии.

EDIT: Я считаю, что Software Center получает список пакетов для отображения из тех пакетов, которые отправляют файлы .desktop. Это может быть сложнее, но вы можете легко отфильтровать список для тех пакетов, которые установлены, и иметь файл .desktop. Этот пример продолжает мой предыдущий код:

  import os desktop_files = ['.'. Join (i.split ('.') [: - 1]) для i в os.listdir ('  / usr / share / applications ')] installed_in_software_center = [i для i в установленных_пакетах, если я в desktop_files]  
4
ответ дан 7 August 2018 в 21:46

Вы получаете данные из журналов в / var / log / apt . По мере поворота журналов большинство из них сжимаются. Сначала мы объединяем текущий журнал со сжатыми, прежде чем мы извлечем все пакеты, которые были установлены, но не автоматически. Это была просто пробная версия и ошибка с моей стороны, поэтому ее можно немного почистить.

  cd / var / log / apt sudo -s cat history.log & gt;  allhistory zcat history.log * gz & gt; & gt;  allhistory.log cat allhistory.log |  grep Установить |  sed s / Install: // g |  tr ')' '\n' |  grep -v автоматический |  sed s /, // g |  sed s /:.*$// g |  sort -u |  grep -v "^ $"  
1
ответ дан 7 August 2018 в 21:46

Вы получаете данные из журналов в / var / log / apt . По мере поворота журналов большинство из них сжимаются. Сначала мы объединяем текущий журнал со сжатыми, прежде чем мы извлечем все пакеты, которые были установлены, но не автоматически. Это была просто пробная версия и ошибка с моей стороны, поэтому ее можно немного почистить.

  cd / var / log / apt sudo -s cat history.log & gt;  allhistory zcat history.log * gz & gt; & gt;  allhistory.log cat allhistory.log |  grep Установить |  sed s / Install: // g |  tr ')' '\n' |  grep -v автоматический |  sed s /, // g |  sed s /:.*$// g |  sort -u |  grep -v "^ $"  
1
ответ дан 10 August 2018 в 10:00

Насколько я могу судить, программный центр фильтрует на основе раздела, в котором находится пакет. Хотя он не будет точно таким же, как фильтр, который использует Центр программного обеспечения, вы можете сделать что-то подобное, отфильтровывая библиотеку

grep - фильтр из вещей, которые либо не установлены, либо, как правило, скрыты программным центром. Вы можете добавить больше вещей для фильтрации по мере необходимости - строка «lib» является хорошим индикатором того, что это не приложение для конечного пользователя.

1
ответ дан 10 August 2018 в 10:00

Возможно, APTonCD поможет?

Это инструмент, который сканирует ваши APT-установленные пакеты и строит список для вас. Затем вы можете вручную выбрать / отменить выбор тех, которые хотите, сохранить список и даже загрузить / использовать кеш для сохранения выбранных пакетов в папке с компакт-диском (для автономной автоматической установки установленных приложений)

Он также имеет некоторые фильтры, такие как включение зависимостей, включая старые версии и т. Д.

APTonCD поставляется по умолчанию в Mint 10, но поскольку они используют одни и те же репозитории Ubuntu, вы можете установить его через менеджера программ.

1
ответ дан 10 August 2018 в 10:00

В Python вы можете получить список установленных пакетов следующим образом:

  import apt packages = apt.Cache () packages.open () installed_packages = [i.name for i in  пакеты, если i.is_installed]  

Если вы хотите узнать дополнительную информацию о пакетах, этот процесс немного задействован. См. Документацию для apt-модуля Python для всей доступной информации. Кроме того, вы можете просмотреть источник Software Center, чтобы узнать, что они делают.

Вы не получите эту информацию, просто просмотрев какой-нибудь файл где-нибудь или выполнив простую команду. Вам нужно будет сделать некоторые сценарии.

EDIT: Я считаю, что Software Center получает список пакетов для отображения из тех пакетов, которые отправляют файлы .desktop. Это может быть сложнее, но вы можете легко отфильтровать список для тех пакетов, которые установлены, и иметь файл .desktop. Этот пример продолжает мой предыдущий код:

  import os desktop_files = ['.'. Join (i.split ('.') [: - 1]) для i в os.listdir ('  / usr / share / applications ')] installed_in_software_center = [i для i в установленных_пакетах, если я в desktop_files]  
4
ответ дан 10 August 2018 в 10:00

Какой программный центр, вероятно, показывается (и что вы подразумеваете под приложениями), это файлы .desktop . По сути, они служат ярлыками для фактических двоичных файлов (думаю, что касается ярлыков Windows и файлов .exe ).

Большинство (но не все!) Приложений, установленных через диспетчера программного обеспечения, имеют ярлык в / usr / share / applications . Структура этого файла выглядит примерно так:

  [Desktop Entry] Name = My App Name Exec = / full / path / to / binary Комментарий = это приложение что-то делает Icon = / full /  path / to / icon.png  

Область приложения Unity анализирует эти файлы, чтобы извлечь описание и имя приложения. Мы можем сделать что-то подобное с этой командой:

  find / usr / share / applications / -maxdepth 1 -type f -iname "* .desktop" |  xargs awk -F '=' '/ Desktop Entry / {seek = 1};  {if (seek == 1 & amp; $ 0 ~ / Name = /) {$ 1 = ""; print; seek = 0; next}} ' 

В основном мы генерируем список все эти файлы .desktop , проанализируйте их, чтобы извлечь строку с Name = , но отображать только часть строки после знака = .

Как я уже говорил, некоторые из приложений не имеют файла .desktop или могут быть сохранены в папке / opt , поэтому вы можете захотеть для выполнения той же команды (с удалением -maxdepth 1 ) в каталоге / opt .

0
ответ дан 10 August 2018 в 10:00

Может все еще не быть тем, что вы ищете ...

  dpkg --get-select  

Если нет (я не могу комментарий еще), запустите следующее и сообщите мне номер (просто подсчитывает количество строк.

  dpkg --get-selections | wc -l  
1
ответ дан 10 August 2018 в 10:00

Может все еще не быть тем, что вы ищете ...

  dpkg --get-select  

Если нет (я не могу комментарий еще), запустите следующее и сообщите мне номер (просто подсчитывает количество строк.

  dpkg --get-selections | wc -l  
1
ответ дан 13 August 2018 в 16:20

Вы получаете данные из журналов в / var / log / apt . По мере поворота журналов большинство из них сжимаются. Сначала мы объединяем текущий журнал со сжатыми, прежде чем мы извлечем все пакеты, которые были установлены, но не автоматически. Это была просто пробная версия и ошибка с моей стороны, поэтому ее можно немного почистить.

  cd / var / log / apt sudo -s cat history.log & gt;  allhistory zcat history.log * gz & gt; & gt;  allhistory.log cat allhistory.log |  grep Установить |  sed s / Install: // g |  tr ')' '\n' |  grep -v автоматический |  sed s /, // g |  sed s /:.*$// g |  sort -u |  grep -v "^ $"  
1
ответ дан 13 August 2018 в 16:20
  • 1
    Тео. Я все еще получаю 1320 записей. Сценарий Egil возвращает 1180. – user13807 7 April 2011 в 22:57
  • 2
    Должен cat history.log & gt; allhistory be история cat.log & gt; allhistory.log ? – user 11 November 2013 в 13:05

Насколько я могу судить, программный центр фильтрует на основе раздела, в котором находится пакет. Хотя он не будет точно таким же, как фильтр, который использует Центр программного обеспечения, вы можете сделать что-то подобное, отфильтровывая библиотеку

grep - фильтр из вещей, которые либо не установлены, либо, как правило, скрыты программным центром. Вы можете добавить больше вещей для фильтрации по мере необходимости - строка «lib» является хорошим индикатором того, что это не приложение для конечного пользователя.

1
ответ дан 13 August 2018 в 16:20

Возможно, APTonCD поможет?

Это инструмент, который сканирует ваши APT-установленные пакеты и строит список для вас. Затем вы можете вручную выбрать / отменить выбор тех, которые хотите, сохранить список и даже загрузить / использовать кеш для сохранения выбранных пакетов в папке с компакт-диском (для автономной автоматической установки установленных приложений)

Он также имеет некоторые фильтры, такие как включение зависимостей, включая старые версии и т. Д.

APTonCD поставляется по умолчанию в Mint 10, но поскольку они используют одни и те же репозитории Ubuntu, вы можете установить его через менеджера программ.

1
ответ дан 13 August 2018 в 16:20

В Python вы можете получить список установленных пакетов следующим образом:

  import apt packages = apt.Cache () packages.open () installed_packages = [i.name for i in  пакеты, если i.is_installed]  

Если вы хотите узнать дополнительную информацию о пакетах, этот процесс немного задействован. См. Документацию для apt-модуля Python для всей доступной информации. Кроме того, вы можете просмотреть источник Software Center, чтобы узнать, что они делают.

Вы не получите эту информацию, просто просмотрев какой-нибудь файл где-нибудь или выполнив простую команду. Вам нужно будет сделать некоторые сценарии.

EDIT: Я считаю, что Software Center получает список пакетов для отображения из тех пакетов, которые отправляют файлы .desktop. Это может быть сложнее, но вы можете легко отфильтровать список для тех пакетов, которые установлены, и иметь файл .desktop. Этот пример продолжает мой предыдущий код:

  import os desktop_files = ['.'. Join (i.split ('.') [: - 1]) для i в os.listdir ('  / usr / share / applications ')] installed_in_software_center = [i для i в установленных_пакетах, если я в desktop_files]  
4
ответ дан 13 August 2018 в 16:20

Какой программный центр, вероятно, показывается (и что вы подразумеваете под приложениями), это файлы .desktop . По сути, они служат ярлыками для фактических двоичных файлов (думаю, что касается ярлыков Windows и файлов .exe ).

Большинство (но не все!) Приложений, установленных через диспетчера программного обеспечения, имеют ярлык в / usr / share / applications . Структура этого файла выглядит примерно так:

  [Desktop Entry] Name = My App Name Exec = / full / path / to / binary Комментарий = это приложение что-то делает Icon = / full /  path / to / icon.png  

Область приложения Unity анализирует эти файлы, чтобы извлечь описание и имя приложения. Мы можем сделать что-то подобное с этой командой:

  find / usr / share / applications / -maxdepth 1 -type f -iname "* .desktop" |  xargs awk -F '=' '/ Desktop Entry / {seek = 1};  {if (seek == 1 & amp; $ 0 ~ / Name = /) {$ 1 = ""; print; seek = 0; next}} ' 

В основном мы генерируем список все эти файлы .desktop , проанализируйте их, чтобы извлечь строку с Name = , но отображать только часть строки после знака = .

Как я уже говорил, некоторые из приложений не имеют файла .desktop или могут быть сохранены в папке / opt , поэтому вы можете захотеть для выполнения той же команды (с удалением -maxdepth 1 ) в каталоге / opt .

0
ответ дан 13 August 2018 в 16:20

Другие вопросы по тегам:

Похожие вопросы: