Hva er AR-filformatet?
Arkivformatet .ar dateres tilbake til Unix Version 1 (1971), utviklet ved Bell Labs som den opprinnelige Unix-arkivereren. En .ar-fil slår sammen flere medlemsfiler, der hver fil har et fast 60-byte ASCII-hode som inneholder medlemmets navn, endringstidspunkt, tillatelser og størrelse i bytes. Hvert arkiv starter med den 8-byte lange «magic string» !<arch> etterfulgt av et linjeskift (0x0A).
Formatet lagrer medlemmer ukomprimert som standard. Det finnes to hovedvarianter:
- BSD-varianten (brukt på macOS) utvider lange filnavn direkte etter hvert medlemshode.
- System V/GNU-varianten (brukt på Linux) lagrer lange navn i et spesielt
//-medlem og legger til en/-symbolindeks for effektivt oppslag under lenking.
I dag påtreffes .ar oftest som statiske biblioteker med filendelsen .a på Linux og macOS, der verktøyet ar fra GNU binutils er standardimplementasjonen. Debian .deb-pakker er også ar-arkiver - hvis du endrer navn på en .deb og pakker den ut, vil du se de interne medlemmene control.tar og data.tar. Vanlige ar-kommandoer: ar rcs libfoo.a *.o oppretter et arkiv, ar t archive.ar viser innholdet, og ar x archive.ar pakker dem ut.
Sikkerhet og trygghet
RISIKO: LOWAR-arkiver i seg selv er beholdere uten kjørbar semantikk - de kan ikke kjøre kode automatisk. Medlemmene inni kan imidlertid være kompilerte objektfiler eller kjørbare filer som kan være skadelige. Når du pakker ut et ar-arkiv fra en upålitelig kilde, bør du inspisere de utpakkede filene før de kjøres. Statiske biblioteker som lenkes inn i dine binærfiler blir en del av disse; et manipulert statisk bibliotek er en angrepsvektor for forsyningskjeden (f.eks. kompromitterte arkiver i verktøykjeden). Bekreft alltid sjekksummer når du laster ned arkiver som inneholder .a/.ar-biblioteker.
Formatdetaljer
i et nøtteskall- Debian-pakke (.deb) - En .deb-fil er et ar-arkiv som inneholder medlemmene control.tar.* og data.tar.*; ar-beholderen er gjennomsiktig for sluttbrukere (dpkg håndterer den).
- .a statisk bibliotek (samme format, annen filendelse) - På Linux/macOS er .a den konvensjonelle filendelsen for statiske biblioteker i ar-format; .ar er mindre vanlig, men identisk.
Programmer som åpner AR-filer
Tekniske detaljer
dyp spesifikasjon| Magic bytes | 21 3C 61 72 63 68 3E 0A - ASCII-streng !<arch> pluss linjeskift (0x0A) ved posisjon 0 |
| MIME-type | application/x-archive |
| Hode-størrelse per medlem | 60 bytes (felt med fast bredde, ASCII-kodet) |
| Layout for hode-felt | Filnavn 16 B, endringstidspunkt 12 B, UID 6 B, GID 6 B, modus 8 B, størrelse 10 B, magic 2 B |
| Medlemsjustering | 2-byte grense; medlemmer med oddetallslengde fylles ut med et enkelt linjeskifttegn (0x0A) |
| Komprimering | Ingen som standard - medlemsfiler lagres ordrett og ukomprimert |
| Integritetskontroll | Ingen sjekksummer per medlem eller på arkivnivå i ar-formatet |
| Grense for filnavn | 16 tegn i fast hode; ubegrenset via BSD-utvidelse eller System V // medlemstabell |
| Formatvarianter | BSD (macOS): utvidede navn i hode; System V/GNU (Linux): // medlemstabell for lange navn |
| GNU symbolindeks | GNU ar legger til et / symboltabell-medlem i .a-arkiver for effektivt symboloppslag ved lenking |
| Støtte for tynne arkiv | GNU tynne arkiver bruker magic 21 3C 74 68 69 6E 3E 0A (!<thin>) og lagrer filstier, ikke data |
| Primærbruk | .a statiske biblioteker (Linux, macOS), .deb Debian-pakker, .ipk OpenWrt-pakker |
| Plattformer | Linux, macOS, FreeBSD, Solaris, AIX, Windows (MinGW/Cygwin/WSL) |
| Utgitt | 1971 (Unix v1, as the original Unix archiver) |
| Siste versjon | POSIX.1-2017 specifies the format; GNU ar (binutils) is current implementation |
| Åpen standard | Ja · royalty-fri |
| Spesifikasjon | pubs.opengroup.org |
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om AR-filer.