Как я делаю/извлекаю/изменяю источник пакета и переупаковываю его?

У меня есть пакет, который имеет ошибку, и я должен изменить ее и переупаковать ее, Таким образом, это - то, как я делаю. Есть ли какие-либо другие быстрые методы?

  1. Перечислите/Просмотрите только (файлы драйверов или приложения)

    ar tv DesktopVideo-8.0.1-amd64.deb
    rw-r--r-- 0/0      4 Sep 25 07:35 2011 debian-binary
    rw-r--r-- 0/0 14942208 Sep 25 07:35 2011 control.tar.gz
    rw-r--r-- 0/0    102 Sep 25 07:35 2011 data.tar.gz
    
  2. Извлечение

    ar x DesktopVideo-8.0.1-amd64.deb
    control.tar.gz  data.tar.gz debian-binary
    
  3. Извлечение tar.gz

    tar xvfz control.tar.gz
    tar xvfz data.tar.gz
    ;; modify my codes and updates
    
  4. Переупакуйте/Восстановите эту спину

    mkdir -p debian/DEBIAN
    ; step 1
    cp -R ./debian-binary debina/DEBIAN
    cp -R ./control debian/DEBIAN
    cp -R ./control debian/DEBIAN
    cp -R ./control debian/DEBIAN
    ; step 2
    cp -R ./etc debian/DEBIAN
    cp -R ./usr debian/DEBIAN
    
  5. Сделайте.DEB теперь

    ; this is how the skeleton look like before applying --build
    root@desktop:~/Downloads/test# ls
    control.tar.gz  data.tar.gz  debian  debian-binary  etc  usr
    
    root@desktop:~/Downloads/test# dpkg-deb --build debian
    dpkg-deb: building package `desktopvideo' in `debian.deb'.
    

- Неудавшийся

# dpkg -i DesktopVideo-8.0.1-amd64.deb
dpkg: error processing DesktopVideo-8.0.1-amd64.deb (--install):
 unable to open file '/var/lib/dpkg/tmp.ci//etc': Is a directory
Errors were encountered while processing:
 DesktopVideo-8.0.1-amd64.deb
5
задан 25 September 2011 в 19:16

3 ответа

Если вы еще этого не сделали, установите инструменты сборки: sudo apt-get install build-essential

Вы можете использовать команду apt-get source DesktopVideo, чтобы загрузить исходные файлы, файлы diff и все другие файлы упаковки, связанные с этим deb, в Текущий каталог. Затем примените ваш патч, добавьте новую запись в файл журнала dch -i, затем используйте fakeroot и dpkg для создания пакета dpkg-buildpackage -rfakeroot -us -uc

0
ответ дан 25 September 2011 в 19:16

Вы должны быть в состоянии получить исходный код пакета (вы получили только двоичный файл) с помощью apt-get -d source packagename Затем вы можете возиться с ним и использовать debuild, чтобы построить его снова.

0
ответ дан 25 September 2011 в 19:16
1112 Технически возможно делать то, что вы пытаетесь сделать, но вам нужно быть намного осторожнее, чем кажется. Трудно понять, что ты сделал неправильно, потому что ты не копировал и не вставлял все, что набрал. Я замечаю опечатку (cp -R ./debian-binary debina/DEBIAN, вы явно не сообщаете, что именно), и ошибку (cp -R не сохраняет права собственности и права доступа, вам понадобится cp -Rp или cp -a от имени root).

Лучший способ изменить пакет - получить исходный код пакета (apt-get source DesktopVideo). Измените источник, затем добавьте запись в журнал изменений пакета, изменив номер версии так, чтобы ваша версия отличалась от официального номера версии. Вот пример необходимых шагов (Debian и Ubuntu работают одинаково в этом отношении).

Если у вас нет исходного кода или вы не хотите перекомпилировать, вы можете установить пакет, а затем использовать dpkg-divert , чтобы убрать файлы с ошибками и заменить это по вашей собственной версии. dpkg-divert говорит менеджеру пакета поместить файл из данного пакета в другое место. Вот пример его использования.

Если у вас нет источника пакета, и вам нужно развернуть исправление на нескольких машинах, вы можете установить пакет, затем изменить файл с ошибками и собрать новый пакет с помощью dpkg-repack [ 1111]. Это скорее акт отчаяния, чем надежный способ управления пакетами; Я рекомендую исправить исходный код и развернуть ваш скомпилированный пакет, если это возможно.

0
ответ дан 25 September 2011 в 19:16

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

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