#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.