Получить список конфликтных файлов в пакете deb на python

#python #package #apt

#python #пакет #apt

Вопрос:

Я хочу получить список конфликтных файлов, связанных с пакетом deb, используя python. Я работаю над проектом, для которого мне нужно знать, изменен ли какой-либо файл confile, установленный пакетом, поэтому мне нужно иметь список файлов confile, установленных пакетом, чтобы я мог использовать его, чтобы увидеть, какой из файлов confile был изменен.

Я пытался использовать документацию библиотеки python-apt, но не смог найти какой-либо метод для этого, пожалуйста, предложите мне способ сделать это. Я знаю, что могу извлечь управляющую информацию и прочитать необработанный файл conffiles, но я думаю, что в самой библиотеке может быть метод.

Комментарии:

1. /var/lib/dpkg/info/<package>.conffilies, да, не так элегантно, но это работает

2. Да, это метод для получения списка файлов confile, но он не будет работать для пакета, который еще не установлен. Я подумал, что в библиотеке python-apt может быть гораздо более элегантный метод.

Ответ №1:

это протестировано на python-apt в squeeze: пакет, который я использовал, является:

http://ftp.debian.org/debian/pool/main/o/openssh/openssh-server_5.5p1-6 squeeze1_amd64.deb

 from apt.debfile import DebPackage
ssh = DebPackage('openssh-server_5.5p1-6 squeeze1_amd64.deb')
print ssh.control_content('conffiles').split('n')

[u'/etc/init.d/ssh', u'/etc/default/ssh', u'/etc/network/if-up.d/openssh-server', u'/etc/ufw/applications.d/openssh-server', u'/etc/pam.d/sshd', u'']
  

вам нужно удалить последний

 print ssh.data_content('etc/init.d/ssh')
u'#! /bin/shnn### BEGIN INIT INFOn#......'
  

вам нужно убрать первую косую черту

Комментарии:

1. Какова роль ‘u’/etc/init.d/sshn/etc/default/sshn/etc/network/if-up.d/openssh-servern/etc/ufw/applications.d/openssh-servern/etc/pam.d/sshdn ‘? Этот код не отображает список конфайлов

2. ssh.control_content(‘conffilies’).split(‘ n’), у вас будет список файлов conf, control_content извлекает файл ‘conffiles’, который является текстовым файлом со списком файлов conf по одному в строке

3. ОК. Я пометил ваш ответ как ответ, но у меня все еще не работает. Я пытаюсь распечатать вывод ssh, control_content (‘conffiles’), но он ничего не напечатал. не могли бы вы предложить, что мне для этого сделать?

4. вам также нужен контент?

5. Да, действительно, он работает с вашим данным файлом deb, но не с моими файлами deb, которые я нашел, потому что пакеты не содержат файла conffiles в control data. Я создал пакеты, используя dpkg-repack , я думал, что он также будет упаковывать файлы confile. не так ли?

Ответ №2:

Флаг состояния

 dpkg --status bash
  

Комментарии:

1. Спасибо, Эндрю, Но мне нужно было сделать это с помощью библиотеки python-apt.