Как исправить ошибку lintian “copyright-file-contains-full-apache-2-license”?

Вопрос или проблема

При упаковке двоичного файла из апстрима для Debian я получаю следующую ошибку lintian:

E: redwax-tool: copyright-file-contains-full-apache-2-license

Это действительно так, пакет из апстрима содержит полный текст лицензии Apache, как и должно быть.

Согласно https://lintian.debian.org/tags/copyright-file-contains-full-apache-2-license.html, мы получаем следующее краткое объяснение:

Файл copyright /usr/share/doc/pkg/copyright содержит полный текст лицензии Apache 2.0. Он должен ссылаться на файл /usr/share/common-licenses/Apache-2.0 вместо этого.

Не хватает инструкций, как это сделать в каталоге debian.

Дальнейшие инструкции на https://www.debian.org/doc/debian-policy/ch-docs.html#s-copyrightfile гласят: “Этот файл не должен быть сжатым или символической ссылкой”.

Файл debian/copyright, сгенерированный инструментом debmake, заканчивается следующим понятным текстом:

#----------------------------------------------------------------------------
# Файлы, отмеченные как NO_LICENSE_TEXT_FOUND, могут быть покрыты следующими
# лицензиями/файлами авторских прав.

#----------------------------------------------------------------------------
# Файл лицензии: COPYING
                                  Apache License
                            Version 2.0, January 2004
                         http://www.apache.org/licenses/
 .
    УСЛОВИЯ ИСПОЛЬЗОВАНИЯ, ВОСПРОИЗВЕДЕНИЯ И РАСПРОСТРАНЕНИЯ
 .
[snip]

Может ли кто-нибудь предоставить пример или руководство по конкретным шагам упаковки, чтобы устранить эту ошибку.

debian/copyright должен включать лицензионное разрешение (текст из исходного кода, который указывает применимую лицензию) и, если необходимо, сам текст лицензии. Для лицензий, полный текст которых включен в /usr/share/common-licenses, последний должен быть заменен указателем на соответствующий файл. Это указано в разделе Политики о файлах copyright:

Пакеты, распространяемые по лицензии Apache (версия 2.0), Artistic license, лицензии Creative Commons CC0-1.0, GNU GPL (версии 1, 2 или 3), GNU LGPL (версии 2, 2.1 или 3), GNU FDL (версии 1.2 или 1.3) и Mozilla Public License (версии 1.1 или 2.0) должны ссылаться на соответствующие файлы в /usr/share/common-licenses, вместо того чтобы цитировать их в файле авторских прав.

Для лицензии Apache это выглядит следующим образом в разделе License:

License: Apache-2.0
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 .
    http://www.apache.org/licenses/LICENSE-2.0
 .
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 .
 On Debian systems, the complete text of the Apache License version 2
 can be found in /usr/share/common-licenses/Apache-2.0

Отрывок, сгенерированный debmake, начиная с

#----------------------------------------------------------------------------
# Файлы, отмеченные как NO_LICENSE_TEXT_FOUND, могут быть покрыты следующими
# лицензиями/файлами авторских прав.

не предназначен в качестве окончательного содержания для debian/copyright; он добавлен, чтобы у вас была вся необходимая информация для написания правильного debian/copyright. В данном случае вам нужно его удалить.

Ответ или решение

Для решения проблемы с ошибкой lintian "copyright-file-contains-full-apache-2-license", необходимо учесть рекомендации, предложенные в документации Debian. Прежде всего, давайте рассмотрим, почему возникает данная ошибка.

Теория

Ошибка "copyright-file-contains-full-apache-2-license" сигнализирует о том, что в debian/copyright вашего пакета включён полный текст лицензии Apache 2.0. Это противоречит правилам Debian, которые гласят, что файлы лицензий, доступные в директории /usr/share/common-licenses, не должны дублироваться в конкретных пакетах, а должны ссылаться на них. Это политика направлена на экономию места и унификацию способов представления информации о лицензиях в пакете.

Пример

Опираясь на ваш примечание, давайте рассмотрим шаги, которые необходимо предпринять для исправления этой ошибки. Если ваш дебан/popyright содержит что-то подобное:

#----------------------------------------------------------------------------
# License file: COPYING
                                  Apache License
                            Version 2.0, January 2004
                         http://www.apache.org/licenses/
 .
    TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
 .
[snip]

Этот фрагмент необходимо заменить ссылкой на файл лицензии в usr/share/common-licenses. Полный текст лицензии не должен быть включен в файл, а вместо этого должно быть указано следующее:

License: Apache-2.0
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 .
    http://www.apache.org/licenses/LICENSE-2.0
 .
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 .
 On Debian systems, the complete text of the Apache License version 2
 can be found in /usr/share/common-licenses/Apache-2.0

Применение

Теперь, когда мы разобрались с теоретической основой и рассмотрели пример, давайте применим это знание на практике:

  1. Редактирование debian/copyright: Откройте файл debian/copyright в текстовом редакторе. Удалите текст лицензии Apache 2.0, скопированный из файла COPYING, за исключением информации о лицензии, которая требуется в соответствии с лицензией (например, указать ссылку на полный текст и условия использования).

  2. Добавление ссылки на общую лицензию: Включите ссылку на файл лицензии, как показано в примере выше. Это позволит пользователям Debian находить текст лицензии в стандартизированном месте, назначенном для этой цели.

  3. Проверка изменений: После внесения изменений, сохраните файл debian/copyright и запустите lintian снова для проверки вашего пакета. Ошибка должна исчезнуть, если все сделано правильно.

  4. Дополнительные проверки: Убедитесь, что никаких других ошибок или предупреждений lintian не появились после редактирования файла. Это гарантия того, что изменения не повлияли негативно на другие части пакета.

Следуя таким шагам, вы приведете вашу сборку пакета в соответствие с политиками Debian и избавитесь от ошибки lintian "copyright-file-contains-full-apache-2-license". Это не только улучшит качество вашей упаковки, но и поможет другим пользователям, с легкостью находить и просматривать лицензионные условия вашего ПО, что особенно важно для обеспечения соответствия юридическим и стандартным требованиям.

Оцените материал
Добавить комментарий

Капча загружается...