.\" dpkg manual page - dpkg-deb(1) .\" .\" Copyright © 1995-1996 Ian Jackson .\" Copyright © 2000 Wichert Akkerman .\" Copyright © 2006 Frank Lichtenheld .\" Copyright © 2007-2011 Raphaël Hertzog .\" Copyright © 2012-2013 Guillem Jover .\" .\" This is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by .\" the Free Software Foundation; either version 2 of the License, or .\" (at your option) any later version. .\" .\" This is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public License .\" along with this program. If not, see . . .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH dpkg\-shlibdeps 1 2013\-09\-06 Debianprojektet dpkg\-verktygen .SH NAMN dpkg\-shlibdeps \- skapar substvar\-beroenden för delade bibliotek . .SH SYNOPS \fBdpkg\-shlibdeps\fP [\fIflagga\fP...] [\fB\-e\fP]\fIprogramfil\fP [\fIflagga\fP...] . .SH BESKRIVNING \fBdpkg\-shlibdeps\fP beräknar beroenden mellan exekverbara filer som anges som argument och delade bibliotek. Beroendena läggs till i substitueringsvariabelfilen \fBdebian/substvars\fP som variabler med namnen \fBshlibs:\fP\fIberoendefält\fP där \fIberoendeefält\fP är ett beroendefältsnamn. Alla andra variabler som börjar på \fIshlibs:\fP tas bort ur filen. .P \fBdpkg\-shlibdeps\fP kan generera beroendeinformation från två informationskällor, antingen filen \fIsymbols\fP eller filen \fIshlibs\fP. För varje binärfil som analyseras av \fBdpkg\-shlibdeps\fP tas en lista fram över vilka bibliotek de är länkade mot. Programmet slår sedan upp varje bibliotek i filen \fIsymbols\fP, eller i filen \fIshlibs\fP (om den förstnämnda inte existerar eller om debian/shlibs.local innehåller ett relevant beroende). ). De båda filerna skall tillhandahållas av bibliotekspaketet och borde därför vara tillgängliga som /var/lib/dpkg/info/\fIpaket\fP.\fIsymbols\fP eller /var/lib/dpkg/info/\fIpaket\fP.\fIshlibs\fP. Paketnamnet identifieras i två steg: biblioteksfilen lokaliseras på systemet (genom att slå upp i de kataloger \fBld.so\fP skulle använt), och därefter används \fBdpkg \-S\fP \fIbiblioteksfil\fP för att slå upp vilket paket biblioteket kommer från. .SS Symbolfiler Symbolfiler innehåller mer finkornig beroendeinformation genom att ange det minsta beroendet för varje symbol som exporteras av biblioteket. Skriptet försöker hitta de symboler som är associerade med ett bibliotek på följande platser (den första träffen används): .IP debian/*/DEBIAN/symbols Information om delade bibliotek som skapats av den aktuella byggproceduren som också anropade \fBdpkg\-shlibdeps\fP. De genereras av \fBdpkg\-gensymbols\fP(1). De används endast om biblioteket finns i paketets byggräd. Filen symbols i det byggträdet går före symbols\-filer från andra binärpaket. .IP /etc/dpkg/symbols/\fIpackage\fP.symbols.\fIarkitektur\fP .IP /etc/dpkg/symbols/\fIpaket\fP.symbols Överstyrningsfil för beroendeinformation för delade bibliotek, per system. \fIarkitektur\fP är det aktuella systemets arkitektur (hämtas från \fBdpkg\-architecture \-qDEB_HOST_ARCH\fP). .IP "Utdata från \(rq\fBdpkg\-query \-\-control\-path\fP \fIpackage\fP symbols\(rq" Paketlokal överstyrande beroendeinformation för delade bibliotek. Filerna befinner sig i /var/lib/dpkg om inte överstyrt med \fB\-\-admindir\fP. .P \fBdpkg\-shlibs\fP kommer ihåg den (största) minimala version som behövs av varje bibliotek när den söker genom de symboler som används av alla binärfilerna. När proceduren är avslutad kan den visa det minsta beroende som behövs av alla bibliotek som används (så tillvida informationen i \fIsymbols\fP\-filerna är korrekt). .P Som en säkerhetsåtgärd kan en symbols\-fil innehålla metainformationsfältet \fIBuild\-Depends\-Package\fP, varpå \fBdpkg\-shlibdeps\fP hämtar vilken minsta version som behövs för paketet ur \fBBuild\-Depends\fP\-fältet och använder denna version om den är högre än den minsta version som beräknats genom att söka genom symbolerna. .SS Shlibs\-filer Shlibs\-filer associerar ett bibliotek direkt till ett beroende (utan att se på symbolerna). Det är därför oftare starkare än vad som egentligen behövs, men mycket säkert och enkelt att hantera. .P Beroenden för ett bibliotek slås upp på flera platser. Den första filen som innehåller information om det intressanta biblioteket används: .IP debian/shlibs.local Paketlokal överstyrande beroendeinformation för delade bibliotek. .IP /etc/dpkg/shlibs.override Systemspecifik överstyrande beroendeinformation för delade bibliotek. .IP debian/*/DEBIAN/shlibs Information om delade bibliotek som skapats av den aktuella byggproceduren som också anropade \fBdpkg\-shlibdeps\fP. De genereras av \fBdpkg\-gensymbols\fP(1). De används bara om biblioteket finns i paketets byggträd. Filen shlibs i byggträdet går före shlibs\-filer från andra paket. .IP "Utdata från \(rq\fBdpkg\-query \-\-control\-path\fP \fIpackage\fP shlibs\(rq" Paketlokal överstyrande beroendeinformation för delade bibliotek. Filerna befinner sig i /var/lib/dpkg om inte överstyrt med \fB\-\-admindir\fP. .IP /etc/dpkg/shlibs.default Systemspecifik standardberoendeinformation för delade bibliotek. .P De utökade beroendena används sedan direkt (förutom om de filtrerats bort för att de identifierats som dubbletter, eller svagare än ett annat beroende). .SH FLAGGOR \fBdpkg\-shlibdeps\fP tolkar argument som inte är flaggor som namn på körbara filer, precis som om de angivits som \fB\-e\fP\fIprogramfil\fP. .TP \fB\-e\fP\fIprogramfil\fP Ta med beroenden som är passar för delade bibliotek som krävs för \fIprogramfil\fP. Flaggan kan användas flera gånger. .TP \fB\-l\fP\fIkatalog\fP Lägg till \fIkatalog\fP till listan över kataloger som skall eftersökas efter privata delade bibliotek (sedan dpkg 1.17.0). Flaggan kan användas flera gånger. Observera: Använd den här flaggan istället för att sätta \fBLD_LIBRARY_PATH\fP, eftersom miljövariabeln används för att styra körtidslänkaren, och genom att utnyttja det för att ange sökvägen till delade bibliotek vid kompilering kan det uppstå problem, till exempel vid korskompilering. .TP \fB\-d\fP\fIberoendefält\fP Lägg till beroenden som skall läggas till till control\-filens beroendefält \fIberoendefält\fP. (Beroenden för detta fält läggs in i variabeln \fBshlibs:\fP\fIberoendefält\fP.) Flaggan \fB\-d\fP\fIberoendefält\fP gäller för samtliga binärer efter flaggan, fram till nästa \fB\-d\fP\fIberoendefält\fP. Standardvärdet för \fIberoendefält\fP är \fBDepends\fP. Om samma katalogpost (eller en uppsättning alternativ) förekommer i mer än ett av de kända beroendefältnamnen \fBPre\-Depends\fP, \fBDepends\fP, \fBRecommends\fP, \fBEnhances\fP eller \fBSuggests\fP så kommer \fBdpkg\-shlibdeps\fP att automatiskt ta bort beroendet från samtliga fält förutom det som anger de viktigaste beroendena. .TP \fB\-p\fP\fIvariabelnamnsprefix\fP Inled substitueringsvariabler med \fIvariabelnamnsprefix\fP\fB:\fP i stället för \fBshlibs:\fP. På samma sätt kommer befintliga substitueringsvariabler som inleds med \fIvariabelnamnsprefix\fP\fB:\fP (i stället för \fBshlibs:\fP) att tas bort från substitueringsvariabelfilen. .TP \fB\-O\fP[\fIfilnamn\fP] Skriv substitueringsvariabelinställningar på standard ut (eller \fIfilnamn\fP om angivet), i stället för att försöka lägga till dem i substitueringsvariabelfilen (som standard \fBdebian/substvars\fP). .TP \fB\-t\fP\fItyp\fP Föredra information om delade bibliotek som märkts för den givna pakettypen. Om det inte finns någon märkt information används omärkt. Standardpakettypen är "deb". Beroendeinformation för delade bibliotek märks för en given typ genom att inleda det med namnet på typen, ett kolon, samt blanktecken. .TP \fB\-L\fP\fIlokal\-shlibs\-fil\fP Läs överstyrande beroendeinformation om delade bibliotek från \fIlokal\-shlibs\-fil\fP i stället för \fBdebian/shlibs.local\fP. .TP \fB\-T\fP\fIsubstvars\-fil\fP Skriv substitueringsvariabler i \fIsubstvars\-fil\fP; standard är \fBdebian/substvars\fP. .TP \fB\-V\fP Aktiverar pratsamt läge. Flera meddelanden visas för att förklara vad \fBdpkg\-shlibs\fP håller på med. .TP \fB\-x\fP\fIpaket\fP Uteslut paketet från de genererade beroendena. Flaggan är användbar för att undvika självberoenden för paket som innehåller ELF\-binärer (exekverbara eller biblioteksinsticksprogram) som använder ett bibliotek som ligger i samma paket. Flaggan kan användas flera gånger för att utesluta flera paket. .TP \fB\-S\fP\fIpaketbyggkatalog\fP Se först i \fIpaketbyggkatalog\fP vid försök att hitta ett bibliotek. Användbart när källkodspaketet bygger flera varianter av samma bibliotek och du vill se till att du får beroendet från ett givet binärpaket. Flaggan kan inte användas flera gånger: kataloger söks efter i samma ordning före kataloger från andra binärpaket. .TP \fB\-\-ignore\-missing\-info\fP Misslyckas inte om det inte upptäcks någon beroendeinformation för ett delat bibliotek. Alla bibliotek bör tillhandahålla beroendeinformation (antingen med shlibs\-filer eller med symbols\-filer), även om de ännu inte används av andra paket. .TP \fB\-\-warnings=\fP\fIvärde\fP \fIVärde\fP är ett bitfält som anger de varningar som kan ges av \fBdpkg\-shlibdeps\fP. Bit 0 (värde=1) aktiverar varningen "symbolen \fIsym\fP, som används av \fIbinär\fP, hittades inte i något av biblioteken", bit 1 (värde=2) aktiverar varningen "paketet kunde undvika ett onödigt beroende" och bit 2 (värde=4) aktiverar varningen "\fIbinär\fP borde inte vara länkat mot \fIbibliotek\fP". Standard för \fIvärde\fP är 3: de första två varningarna är aktiva som standard, men inte den sista. Sätt \fIvärde\fP till 7 om du vill att alla varningar skall vara aktiva. .TP \fB\-\-admindir=\fP\fIkat\fP Ändra platsen för \fBdpkg\fP\-databasen. Förval är \fI/var/lib/dpkg\fP. .TP \fB\-?\fP, \fB\-\-help\fP Visar hjälpskärm och avslutar. .TP \fB\-\-version\fP Visar version och avslutar. . .SH DIAGNOSTIK .SS Varningar Eftersom \fBdpkg\-shlibdeps\fP analyserar mängden symboler som används av varje binärfil i det genererade paketet, kan det i flera fall skriva ut varningsmeddelanden. De visar på saker som kan förbättras i paketet. I de flesta fall gäller förbättringarna direkt uppströmskällkoden. Här är de varningar du kan stöta på, i fallande allvarlighetsgrad: .TP \fBsymbolen\fP \fIsym\fP\fB, som används av\fP \fIbinär\fP\fB, hittades inte i något av biblioteken.\fP Den omnämnda symbolen hittades inte i biblioteken som länkas mot binären. \fIBinär\fP är antagligen ett bibliotek och måste länkas mot ett annat bibliotek under byggproceduren (länkarflaggan \fB\-l\fP\fIbibliotek\fP). .TP \fIbinär\fP \fBinnehåller en referens till symbolen\fP \fIsym\fP \fBsom inte kan kopplas; det är troligen ett insticksprogram\fP Den angivna symbolen hittades inte i biblioteken som länkats mot binären. \fIBinär\fP är antagligen ett insticksprogram och symbolen tillhandahålls av programmet som läser in det. I teorin har inte insticksprogram något SONAMN, men den här binären har ett och därmed kunde det inte tydligt identifieras som insticksprogram. Det faktum att binären befinner sig i en icke\-offentlig katalog är dock en stark indikation på att det inte är ett vanligt delat bibliotek. Om binären faktiskt är ett insticksprogram kan du ignorera varningen. Det är dock alltid möjligt att det är ett riktigt bibliotek och att program som länker det använder en RPATH så att den dynamiska länkaren hittar det. Om så är fallet är biblioteket trasigt och behöver fixas. .TP \fBpaketet kan undvika ett onödigt beroende om\fP \fIbinär\fP \fBinte länkades mot\fP \fIbibliotek\fP \fB(det använder inget av bibliotekets symboler)\fP Ingen av \fIbinärer\fPna som länkas mot \fIbibliotek\fP använder någon av symbolerna som tillhandahålls av biblioteket. Genom att rätta alla binärer kan du undvika beroendet som gäller detta bibliotek (såvida inte samma beroende även genereras av ett annat bibliotek som faktiskt används). .TP \fBpaketet kunde undvika ett onödigt beroende om\fP \fIbinärer\fP \fBinte länkades mot\fP \fIbibliotek\fP \fB(de använder inga av bibliotekets symboler)\fP Exakt samma varning som ovan, men för flera binärer .TP \fIbinär\fP \fBborde inte vara länkat mot\fP \fIbibliotek\fP \fB(det använder inget av bibliotekets symboler)\fP \fIBinär\fP länkar mot ett bibliotek den inte behöver. Det är inte ett problem, Men genom att inte länka biblioteket mot binären kan man uppnå en mindre prestandaförbättring. Varningen kontrollerar samma information som den föregående, men gör det för varje binär istället för att utföra kontrollen globalt på alla analyserade binärer. .SS Fel \fBdpkg\-shlibdeps\fP kommer att misslyckas om det inte hittar ett öppet bibliotek som en av binärerna använder, eller om biblioteket saknar associerad beroendeinformation (antingen en shlibs\-fil eller en symbols\-fil). Ett öppet bibliotek har ett SONAMN och är versionshanterad (libvadsomhelst.so.\fIX\fP). Ett privat bibliotek (till exempel ett insticksprogram) bör inte ha något SONAMN och behöver inte vara versionshanterat. .TP \fBhittade inte biblioteket\fP \fIbibliotek\-sonamn\fP \fBsom behövs för\fP \fIbinär\fP \fB(dess RPATH är "\fP\fIrpath\fP\fB")\fP \fIBinär\fP använder ett bibliotek som heter \fIbibliotek\-sonamn\fP, men \fBdpkg\-shlibdeps\fP kunde inte hitta biblioteket. \fBdpkg\-shlibdeps\fP skapar en lista över kataloger det ser i på följande sätt: katalogerna som beskrivs i RPATH i binären, kataloger som beskrivs i /etc/ld.so.conf, kataloger i miljövariabeln \fBLD_LIBRARY_PATH\fP, och vanliga öppna kataloger (/lib, /usr/lib, /lib32, /usr/lib32, /lib64, /usr/lib64). Därefter ser det i motsvarande kataloger i byggträdet för paketet som innehåller binären som analyseras, i paketbyggträdet som anges med kommandoradsflaggan \fB\-S\fP, i andra pakets byggträd som innehåller en DEBIAN/shlibs\-fil och slutligen i rotkatalogen. Om biblioteket inte hittas i någon av dessa kataloger får du det här felmeddelandet. Om biblioteket som inte hittades ligger i en privat katalog i samma paket bör du lägga till katalogen med \fB\-l\fP. Om det finns i ett annat binärpaket som byggs bör du se till att shlibs\- eller symbols\-filen för paketet redan har skapats och att \fB\-l\fP innehåller korrekt katalog som det också ligger i en privat katalog. .TP \fBhittade ingen beroendeinformation för\fP \fIbiblioteksfil\fP \fB(använd av\fP \fIbinär\fP\fB).\fP Biblioteket som behövs av \fIbinär\fP hittades i \fIbiblioteksfil\fP av \fBdpkg\-shlibdeps\fP, men \fBdpkg\-shlibdeps\fP kunde inte hitta någon beroendeinformation för biblioteket. För att hitta beroendet har det försökt koppla biblioteket mot ett Debianpaket med hjälp av \fBdpkg \-S\fP \fIbiblioteksfil\fP. Därefter såg det i motsvarande shlibs\- och symbols\-filer i /var/lib/dpkg/info/, samt i de olika paketens byggträd (debian/*/DEBIAN/). Det här felet kan orsakas av felaktiga eller saknade shlibs\- eller symbols\-filer i bibliotekets paket. Det kan även inträffa om biblioteket byggts i samma källkodspaket och om shlibs\-filen ännu inte har skapats (då måste du fixa debian/rules så att det skapar shlibs\-filen innan det anropar \fBdpkg\-shlibdeps\fP). Felaktig RPATH kan också leda till att biblioteket hittas under ett icke\-kanoniskt namn (till exempel: /usr/lib/openoffice.org/../lib/libssl.so.9.8 istället för /usr/lib/libssl.so.0.9.8) som inte associeras till något paket, \fBdpkg\-shlibdeps\fP försöker gå runt detta genom att falla tillbaka på ett kanoniskt namn (med \fBrealpath\fP(3)), men det fungerar kanske inte alltid. Det är alltid bäst att städa upp RPATH i binären för att undvika problem. Om du anropar \fBdpkg\-shlibdeps\fP i pratsamt läge (\fB\-v\fP) kommer det ge mycket mer information om var det försökte hitta beroendeinformationen. Det kan vara användbart om du inte förstår varför du får felmeddelandet. .SH "SE ÄVEN" \fBdeb\-shlibs\fP(5), \fBdeb\-symbols\fP(5), \fBdpkg\-gensymbols\fP(1). .SH ÖVERSÄTTNING Peter Krefting och Daniel Nylander.