Frage

Ich bin mit Perl Archive :: Tar Modul. Es bewahrt die Berechtigungen Datei aber nicht die Sticky-Bit bewahren. Am anderen Ende, wo ich das Archiv entpacken, alle Haftbits sind verschwunden. Ich denke, UNIX / LINUX-Betriebssystem diese Haftbits woanders gespeichert werden. Wie kann ich mein Archiv auch Haftbits bewahren?

Mit der Option -p auf Teer erhält es aber wie mache ich es mit Archiv :: tar ? Ich bin mit dem Perl-Modul auf beiden Seiten.

War es hilfreich?

Lösung

Nach der Fein Quelle, Archive :: Tar :: File Streifen aus den hohen Bits aus dem Modus. Sie können zu Beginn des Skripts den folgenden Zauberspruch versuchen (vor irgendetwas könnte Archive :: Tar verwiesen) und sehen, ob es untergräbt:

use Archive::Tar::Constant ();
BEGIN {
    local $SIG{__WARN__} = sub{};
    *Archive::Tar::Constant::STRIP_MODE = sub(){ sub {shift} };
}
...
use Archive::Tar;
...

Kurze Erläuterung: STRIP_MODE ist eine Konstante, die ein Unterprogramm enthält, die den RAW-Modus und gibt den Modus übergeben werden können, die gespeichert werden sollen. Es wird in der Regel auf

sub { shift() & 0777 }

Da es sich um eine Konstante, die aus Archiv :: Tar :: Konstante in Archive :: Tar :: Datei und dort verwendet, was auch immer es eingestellt ist, wird inlined in Archive :: Tar :: Datei werden, wie es kompiliert wird . So ist es zu ändern, muss die Konstante geändert werden, bevor es inlined wird, das heißt, vor dem Archiv :: Tar :: Datei jemals geladen wird.

N. B. Da ein inlinable konstanten Wechsel zu fehleranfällig (sie ändert es, nachdem es zu spät ist, um eine Wirkung zu haben), erzeugt sie normalerweise eine ernste Warnung, die nicht von üblichen Mitteln deaktiviert werden kann.

Andere Tipps

Nicht sicher, aber auf dem offiziellen Befehl tar, müssen Sie passieren -p , damit dies geschieht

Sie können einen Blick auf die Archive :: Tar Dokumentation nehmen wollen für die Details. Von einem kurzen Blick scheint es, dass

$Archive::Tar::CHMOD = 1;

sollte das tun, was Sie wollen, obwohl die Dokumentation behauptet, dass die oben genannte Einstellung ist die Standardeinstellung. Es kann sein, dass Archive :: Tar die Mode höherer Ordnung Bits wie das Sticky-Bit abstreift.

Ist das Archiv beide erstellt und mit Archiv :: Tar extrahiert, oder verwenden Sie das Standard-Programm tar an einem Ende oder das andere?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top