Lector de Feeds
Vendored dependencies
See Also: Add Trivy
← Older revision Revision as of 14:41, 1 February 2025 (2 intermediate revisions by the same user not shown)Line 45: Line 45: # Ruby* # Ruby* # OCaml # OCaml −# Nodejs (Javascript)*+# Javascript* (nodejs) # PHP* # PHP* # Erlang* # Erlang* +# other compiled languages like C# (mono), BASIC (FreeBASIC), FORTRAN (gfortran), Pascal (lazarus) <nowiki>*</nowiki> Interpreted languages that don't statically link dependencies into applications or modules <nowiki>*</nowiki> Interpreted languages that don't statically link dependencies into applications or modules Line 105: Line 106: * [https://guac.sh/ GUAC] SBOM management tool * [https://guac.sh/ GUAC] SBOM management tool * [https://github.com/anchore/grype grype], tool that can look up security issues from a SPDX SBOM * [https://github.com/anchore/grype grype], tool that can look up security issues from a SPDX SBOM +* [https://trivy.dev/ Trivy], tool that can look up security issues from a SPDX SBOM [[Category:Packaging]] [[Category:Packaging]] Danf
Categorías: Wiki de Mageia
Vendored dependencies
See Also: Add Trivy
← Older revision Revision as of 14:41, 1 February 2025 (7 intermediate revisions by the same user not shown)Line 45: Line 45: # Ruby* # Ruby* # OCaml # OCaml −# Nodejs (Javascript)*+# Javascript* (nodejs) # PHP* # PHP* # Erlang* # Erlang* +# other compiled languages like C# (mono), BASIC (FreeBASIC), FORTRAN (gfortran), Pascal (lazarus) <nowiki>*</nowiki> Interpreted languages that don't statically link dependencies into applications or modules <nowiki>*</nowiki> Interpreted languages that don't statically link dependencies into applications or modules Line 57: Line 58: === Erlang, Nodejs, Perl, PHP, Python, Ruby === === Erlang, Nodejs, Perl, PHP, Python, Ruby === −These are all interpreted languages that either have no concept of bundling dependencies somehow into submodules (a static linking equivalent) or developers don't generally use them. They generally do, however, have means to automatically obtain dependent modules at build time (e.g. ''pip'', ''cpan'', ''npm'') that Mageia's current policies forbid. Generally, interpreted languages rely on modules being installed in the system when they are executed and do not compile/bind/link them into an independent blob like compiled languages are forced to do.+These are all interpreted languages that either have no concept of bundling dependencies somehow into submodules (a static linking equivalent) or developers don't generally use them. They generally do, however, have means to automatically obtain dependent modules at build time (e.g. ''pip'', ''cpan'', ''npm'') that Mageia's current policies forbid. Generally, interpreted languages rely on modules being installed in the system when they are executed and do not compile/bind/link them into an independent blob like compiled languages are forced to do. Vendoring can still be useful to greatly reduce the number of packages necessary to create for a new application. === Go, Java, OCaml, Rust === === Go, Java, OCaml, Rust === Line 69: Line 70: Overview: Overview: −# Developer builds a package SRPM containing all application source code as well as any unpackaged dependency source code for an application (i.e. vendoring it), including a software attestation+# Developer builds a package SRPM containing all application source code as well as any unpackaged dependency source code for an application (i.e. vendoring it), including a SBOM −# The build system adds packaged dependencies to the software attestation+# The build system adds packaged dependencies to the SBOM # For interpreted languages, the build system puts any vendored code into a filesystem location specific to the application # For interpreted languages, the build system puts any vendored code into a filesystem location specific to the application −# The build system stores the software attestation at the end of the build into a central repository+# The build system stores the SBOM at the end of the build into a central repository −# A security scanner periodically scans all software attestations to look for dependencies that have reported security vulnerabilities+# A security scanner periodically scans all SBOMs to look for dependencies that have reported security vulnerabilities # If a security vulnerability is found, it outputs a list of packages that need to be updated and rebuilt and opens one or more bugs # If a security vulnerability is found, it outputs a list of packages that need to be updated and rebuilt and opens one or more bugs −# Each package needing a rebuild goes back to step 1 (if a local patch to fix a vulnerability has been added, it is noted in the software attestation)+# Each package needing a rebuild goes back to step 1 (if a local patch to fix a vulnerability has been added, it is noted in the SBOM) −Software attestations will be stored in the [https://spdx.dev/ SPDX] format.+SBOMs will be stored in the [https://spdx.dev/ SPDX] format. + +Security updates are assumed to consist of upgrading to a new upstream release. Those that require patching a dependency complicates this flow, since the same patch must then be applied to each vendored instance of that dependency. + +A script will be created to take care of the bulk of step 1 for the developer. It would scan the application source code to find out what dependencies are needed, then exclude any dependencies already supplied by packages in ''BuildRequires:'' leaving a list of outstanding ones. These would be downloaded using the language's normal package download mechanism and installed into a private temporary location. All these would then be archived into a compressed tarball along with an SBOM containing all the packaged dependency names and versions and stored in the ''SOURCES/'' directory under a standard name (maybe ''dependencies.tar.xz''). This file would then be added to ''sha1.lst'' and uploaded to ''binrepo''. This could all be integrated into a ''mgarepo'' subcommand. ''TODO: who is responsible for ensuring that the licenses of all the dependencies are allowed, compatible and that the License: line in the .spec file matches?'' + +The various RPM build macros would be updated to handle any dependencies stored in ''dependencies.tar.xz''. They would be extracted into a temporary location in ''BUILDROOT/'' and the compile command extended to look for missing dependencies in this location. For interpreted languages, the dependencies would instead by installed ''in the RPM'' in an appropriate location in ''/usr/share/'' (that doesn't conflict with other dependencies), and the application's launch command extended to find these dependencies (since they are private to that one application). ''TODO: how to handle locally patching these dependencies? patching before or after storing in dependencies.tar.xz'' === Go === === Go === The specifics listed in this section are for handling Go applications, but it can be generalized for other languages in the future. These should be able to be generalized to work for applications in other compiled languages as well. It is possible to develop infrastructure to support interpreted languages as well, but the benefits may not be as clear; any such applications that ship vendored modules ''would'' benefit, but it's unclear how many of those (if any) actually exist. The specifics listed in this section are for handling Go applications, but it can be generalized for other languages in the future. These should be able to be generalized to work for applications in other compiled languages as well. It is possible to develop infrastructure to support interpreted languages as well, but the benefits may not be as clear; any such applications that ship vendored modules ''would'' benefit, but it's unclear how many of those (if any) actually exist. + +The ''go list -json'' command can be used to generate the list of dependencies needed by an application (step 1). + +The [https://vuln.go.dev/ Go Vulnerability Database] can be used on an ongoing basis to find security issues in Go packages from the SBOMs of those packages. ''details TBD'' ''details TBD'' Line 90: Line 101: * [[Security Updates]] * [[Security Updates]] * [https://lwn.net/Articles/1005655/ Fedora proposing allowing vendored Go packages] * [https://lwn.net/Articles/1005655/ Fedora proposing allowing vendored Go packages] +* [https://fosdem.org/2025/schedule/event/fosdem-2025-5570-rust-rpms-and-the-fine-art-of-dependency-bundling/ Rust, RPMs, and the Fine Art of Dependency Bundling] +* [https://ml.mageia.org/l/arc/dev/2023-04/msg00579.html Thread on packages with many components/modules/subpackages] +* [https://vuln.go.dev/ Go Vulnerability Database] +* [https://guac.sh/ GUAC] SBOM management tool +* [https://github.com/anchore/grype grype], tool that can look up security issues from a SPDX SBOM +* [https://trivy.dev/ Trivy], tool that can look up security issues from a SPDX SBOM [[Category:Packaging]] [[Category:Packaging]] Danf
Categorías: Wiki de Mageia
mesa-24.2.3-1.mga9.tainted.src.rpm
In Mageia/9/x86_64:
Mesa is an OpenGL 4.6 compatible 3D graphics library.
Categorías: RPMs
mesa-24.2.3-1.mga9.tainted.src.rpm
In Mageia/9/aarch64:
Mesa is an OpenGL 4.6 compatible 3D graphics library.
Categorías: RPMs
mesa-24.2.3-1.mga9.tainted.src.rpm
In Mageia/9/armv7hl:
Mesa is an OpenGL 4.6 compatible 3D graphics library.
Categorías: RPMs
mesa-24.2.3-1.mga9.tainted.src.rpm
In Mageia/9/i586:
Mesa is an OpenGL 4.6 compatible 3D graphics library.
Categorías: RPMs
rachota-2.4-0.602hg.1.mga10.src.rpm
In Mageia/cauldron/x86_64:
Rachota is a portable application for timetracking different projects. It runs
everywhere. It displays time data in diagram form, creates customized reports
and invoices or analyses measured data and suggests hints to improve user's
time usage. The totally portable yet personal timetracker.
Categorías: RPMs
rachota-2.4-0.602hg.1.mga10.src.rpm
In Mageia/cauldron/i586:
Rachota is a portable application for timetracking different projects. It runs
everywhere. It displays time data in diagram form, creates customized reports
and invoices or analyses measured data and suggests hints to improve user's
time usage. The totally portable yet personal timetracker.
Categorías: RPMs
ppmtomd-1.6-9.mga10.src.rpm
In Mageia/cauldron/i586:
A program to convert images from PPM format into the control language for the
Alps Micro-Dry printers, at various times sold by Citizen, Alps and Okidata.
This program drives the Alps Micro-Dry series of printers, including the
Citizen Printiva series, Alps MD series, and Oki DP series (but not yet the
DP-7000).
In the current release, the program drives the standard mode fairly well; the
dye sublimation mode very well; and the VPhoto mode reasonably well.
It supports all the colours available up to the DP-5000, including the foil
colours.
Categorías: RPMs
ppmtomd-1.6-9.mga10.src.rpm
In Mageia/cauldron/x86_64:
A program to convert images from PPM format into the control language for the
Alps Micro-Dry printers, at various times sold by Citizen, Alps and Okidata.
This program drives the Alps Micro-Dry series of printers, including the
Citizen Printiva series, Alps MD series, and Oki DP series (but not yet the
DP-7000).
In the current release, the program drives the standard mode fairly well; the
dye sublimation mode very well; and the VPhoto mode reasonably well.
It supports all the colours available up to the DP-5000, including the foil
colours.
Categorías: RPMs
recoverjpeg-2.6.3-4.mga10.src.rpm
In Mageia/cauldron/x86_64:
This tool tries to recover JFIF (JPEG) pictures and MOV movies (using
recovermov) from a peripheral. This may be useful if you mistakenly overwrite
a partition or if a device such as a digital camera memory card is bogus.
Categorías: RPMs
recoverjpeg-2.6.3-4.mga10.src.rpm
In Mageia/cauldron/i586:
This tool tries to recover JFIF (JPEG) pictures and MOV movies (using
recovermov) from a peripheral. This may be useful if you mistakenly overwrite
a partition or if a device such as a digital camera memory card is bogus.
Categorías: RPMs
rdfind-1.6.0-1.mga10.src.rpm
In Mageia/cauldron/x86_64:
Rdfind is a program that finds duplicate files. It is useful for compressing
backup directories or just finding duplicate files. It compares files based on
their content, NOT on their file names.
Categorías: RPMs
rdfind-1.6.0-1.mga10.src.rpm
In Mageia/cauldron/i586:
Rdfind is a program that finds duplicate files. It is useful for compressing
backup directories or just finding duplicate files. It compares files based on
their content, NOT on their file names.
Categorías: RPMs
unifont-16.0.01-1.mga10.src.rpm
In Mageia/cauldron/x86_64:
Unifont is a Unicode font with a glyph for every visible Unicode Basic
Multilingual Plane code point and more, with supporting utilities to
modify the font. This package contains tools and glyph descriptions.
Categorías: RPMs
unifont-16.0.01-1.mga10.src.rpm
In Mageia/cauldron/i586:
Unifont is a Unicode font with a glyph for every visible Unicode Basic
Multilingual Plane code point and more, with supporting utilities to
modify the font. This package contains tools and glyph descriptions.
Categorías: RPMs
rancid-3.13-2.mga10.src.rpm
In Mageia/cauldron/i586:
RANCID monitors a router's (or more generally a device's) configuration,
including software and hardware (cards, serial numbers, etc) and uses CVS
(Concurrent Version System) or Subversion to maintain history of changes.
RANCID does this by the very simple process summarized here:
* login to each device in the router table (router.db),
* run various commands to get the information that will be saved,
* cook the output; re-format, remove oscillating or incrementing data,
* email any differences (sample) from the previous collection to a mail
list,
* and finally commit those changes to the revision control system
RANCID also includes looking glass software. It is based on Ed Kern's looking
glass which was once used for http://nitrous.digex.net/, for the old-school
folks who remember it. Our version has added functions, supports Cisco,
Juniper, and Foundry and uses the login scripts that come with rancid; so it
can use telnet or ssh to connect to your devices(s).
Rancid currently supports Cisco routers, Juniper routers, Catalyst switches,
Foundry switches, Redback NASs, ADC EZT3 muxes, MRTd (and thus likely IRRd),
Alteon switches, and HP Procurve switches and a host of others.
Rancid is known to be used at: AOL, Global Crossing, MFN, NTT America,
Certainty Solutions Inc.
Categorías: RPMs
rancid-3.13-2.mga10.src.rpm
In Mageia/cauldron/x86_64:
RANCID monitors a router's (or more generally a device's) configuration,
including software and hardware (cards, serial numbers, etc) and uses CVS
(Concurrent Version System) or Subversion to maintain history of changes.
RANCID does this by the very simple process summarized here:
* login to each device in the router table (router.db),
* run various commands to get the information that will be saved,
* cook the output; re-format, remove oscillating or incrementing data,
* email any differences (sample) from the previous collection to a mail
list,
* and finally commit those changes to the revision control system
RANCID also includes looking glass software. It is based on Ed Kern's looking
glass which was once used for http://nitrous.digex.net/, for the old-school
folks who remember it. Our version has added functions, supports Cisco,
Juniper, and Foundry and uses the login scripts that come with rancid; so it
can use telnet or ssh to connect to your devices(s).
Rancid currently supports Cisco routers, Juniper routers, Catalyst switches,
Foundry switches, Redback NASs, ADC EZT3 muxes, MRTd (and thus likely IRRd),
Alteon switches, and HP Procurve switches and a host of others.
Rancid is known to be used at: AOL, Global Crossing, MFN, NTT America,
Certainty Solutions Inc.
Categorías: RPMs
