# Wie kommt Software ins Portage

## ixo

Hallo,

ich wollte schon immer 'mal fragen, über welchen Weg eigentlich entschieden wird, welche Software ins Portage kommen. Gibt es da einen (zentralen) Ansprechpartner oder so etwas ähnliches?

Ich frage, weil ich ein Backup Tool ("Backup-to-Disk") gebastelt habe (über das letzte Dutzend Jahre), welches seit langem in Fedora, OpenSuse und Debian (Ubuntu) verfügbar ist. Da ich selbst Gentoo auf meinem Server verwende, könnte ich es so einfacher installieren.    :Laughing:  .

Es bietet momentan Folgendes:

Verwendung von Hard Links

Grundsätzlich kommt man an alle Daten ohne das Tool wieder ran

Deduplikation für ganze Dateien (d.h. Doubletten, verschobenen Dateien o.ä. werden per Hard Link verbunden)

Blockweise Deduplikation für z.B. Image Dateien (VMs) o.ä. oder auch ganzer Devices (auch dateiübergreifend)

partielle Kompression der Daten (nach einfachen oder komplexen Auswahlmöglichkeiten)

Vernünftige Log Files

einfach oder komplexe include / exclude Optionen (über selbsterstellte Regeln)

Verlinken mehrerer Backups-Reihen

Ausgefeilte Möglichkeiten zu Löschen alter Backups

Ist recht flott

alle Backups sind immer volle Backups. Es ist jedoch auch der Weg (zu vollen Backups) über inkrementelle Backup möglich, um die Backupzeit zu reduzieren.

Kann Hard Links, Rechte, User, Gruppen korrekt zurücksichern.

Demnächst geht noch (bei mir geht's schon):

White-List und Black-List über die Dateitypen (Endungen) die komprimiert (oder nicht) werden sollen. Für die restlichen Dateien schätzt ein internes Modul, ob sich die Kompression lohnen würde.

"Isolierter" Modus, d.h. man kann unterwegs inkrementelle Backups (z.B. auf einen Memorystick) machen und das Ergebnis dann später in das "große" Backup integrieren, wo sie wieder volle Backups werden (als wäre man nicht weg gewesen)

Replikation (ähnlich wie Datenbank-Replikation) von Backup-Reihen auf unbegrenzt viele andere Platten (Direktories), um Backups von Backup zu haben. (Das ganze natürlich asynchron.)

Grüße, ixo

----------

## franzf

Auf bugs.gentoo.org einen report aufmachen, samt Beschreibung + ebuild. Evtl. kommts dann in ein Overlay oder es findet sich ein interessierter Entwickler, der es gleich in den Tree packt.

----------

## ixo

Tja, da ist schon ein Problem. Ich habe keine Ahnung, wie man ein ebuild erstellt. Da das Projekt inzwischen recht umfangreich ist (liegt auch daran, dass fleißig parallelisiert wird) und ich das in meiner Freizeit pflege und weiterentwickle, ist meine Zeit eher knapp. Wie aufwendig ist denn so ein ebuild? Gibt's da eine Anleitung für Idioten?   :Cool: 

Momentan sähe die Installation auf irgendeinem Unix / Linux z.B. so aus:

```
# cd /opt

# tar jxf <paket>

```

Wenn's einem Spaß macht, kann man noch einen Pfad setzen (PATH, MANPATH).

Die bestehende Abhängigkeit heißt perl.

Grüße, ixo

----------

## mv

 *ixo wrote:*   

> Wie aufwendig ist denn so ein ebuild?

 

Kommt auf das Projekt und dessen Buildsystem an.

 *Quote:*   

> Gibt's da eine Anleitung

 

"man 5 ebuild" oder hier.

 *Quote:*   

> 
> 
> ```
> # cd /opt
> ```
> ...

 

Ganz schlecht. Normalerweise sollten die Programme nach /usr/bin gehen, die manpages in das passende manpage-Verzeichnis usw.

 *Quote:*   

> # tar jxf <paket>

 

Auspacken erledigt Portage automatisch anhand der Fileendung. Die Schwierigkeit ist, die Files an den angemessenen Ort zu bekommen (und ggf. sie erst zu kompilieren oder - in Deinem Fall u.U. - sie Perl bekannt zu machen).

Wenn Dein Paket kein Buildsystem hat, könnte ein Ebuild für Dein Projekt im einfachsten Fall etwa so aussehen:

```
# Copyright 1999-2012 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header $

EAPI=4

DESCRIPTION="[max. 80 Zeichen]"

HOMEPAGE="http://..."

SRC_URI="http://.../${P}.tar.bz2" # oder ftp:// o.ae.

LICENSE="GPL-2" # oder was auch immer aus /usr/portage/licenses

SLOT="0"

KEYWORDS="~amd64 ~x86"

DEPEND=""

RDEPEND="dev-lang/perl"

src_install() {

   dobin ... (Pfade zu den zu installierenden Executables)

   doman ... (Pfade zu den zu installierenden man-pages)

   dodoc ... (Pfade zu anderen Hilfstexten)

   insinto /irgendwelche/Pfade

   doins Dateien, die nach /irgendwelche/Pfade gehen sollen

}
```

Evtl. Perl-Bibliotheken müssten natürlich ebenfalls in die Abhängigkeiten...

Wenn Du selbst perl-Bibliotheken installieren willst, ist es komplizierter: Da bräuchtest Du vermutlich ein "inherit" von einer geeigneten Perl-Klasse, und DEPEND wäre vermutlich auch nicht leer (weil Du schon beim "Bauen" Perl brauchst). Da wäre es am besten, sich zunächst ebuilds für andere Perl-Programme/Bibliotheken anzuschauen, dafür schreibe ich jetzt nicht blind ein Template.

----------

## ixo

Also, es handelt sich um das hier.

 *mv wrote:*   

>  *ixo wrote:*   Gibt's da eine Anleitung 
> 
> "man 5 ebuild" oder hier.
> 
> 

 

Bin leider noch nicht dazu gekommen, mir das anzusehen.   :Embarassed:   (Muss leider auch arbeiten   :Cool:  )

Werd' ich nachholen.

 *mv wrote:*   

>  *ixo wrote:*   
> 
> ```
> # cd /opt
> ```
> ...

 

Das tar-File ist dazu gedacht, es unabhängig von einer Distribution an irgendeiner Stelle auspacken zu können, ohne an allen möglichen Stellen etwas herumfliegen zu haben. Es entpackt in einen Ordner und dann sieht es so aus:

```
$ ls -l storeBackup/

insgesamt 12

-rw-r--r-- 1 hjc hjc 1468 Mai 20 09:12 _ATTENTION_

drwxrwxr-x 2 hjc hjc  340 Mai 20 09:12 bin

-rwxr-xr-x 1 hjc hjc   99 Mai 20 09:12 correct.sh

-rwxr-xr-x 1 hjc hjc  743 Mai 20 09:12 cron-storebackup

drwxrwxr-x 2 hjc hjc  220 Mai 20 09:12 doc

drwxrwxr-x 2 hjc hjc  320 Mai 20 09:12 lib

drwxrwxr-x 3 hjc hjc   60 Mai 20 09:12 man

```

Das Zusammenpacken des tar-Files macht bei mir ein kleines Shell Skript - es wäre kein großes Kunstwerk, ein zweites etwas anders zu gestalten.   :Smile: 

Im doc-Verzeichnis ist noch eine pdf-Anleitung, momentan nur in Englisch, bei der nächsten Version auch in Deutsch. (Die deutsche muss man momentan noch gesondert herunterladen, da sie bei 3.2.1 noch nicht fertig war.) Das README war früher mal die Anleitung, das fliegt beim nächsten Mal raus, da nicht mehr pflegbar. Die pdf-Datei bzw. die Online Version müssen's dann tun.

Das bin-Verzeichnis kann man nach /usr/bin packen solange das lib-Verzeichnis "parallel", also in /usr/lib liegt. Übrigens machen das die anderen Distributionen auch so. (Das cron-Dingsbums hat übrigens der damalige Debian Maintainer geschrieben, passt also (wahrscheinlich) nicht für Gentoo bzw. sollte hier nicht nötig sein.)

Die Abhängigkeit zu perl ist natürlich perl selbst (einfach die jeweils aktuelle Version, schließlich entwickle ich zum Teil auf Gentoo, andererseits nutze ich keine "tollen neuen Features").

Perl-Zusatzpakte werden sehr spärlich genutzt, ich glaube, die sind alle beim perl Basispaket dabei. Da mein System aber ca. 5 Jahre alt ist, bin ich da jetzt nicht 100% sicher.

Grüße und Danke, ixo

----------

## ixo

Hallo,

ich bin jetzt mal dazu gekommen, dass ein bisschen querzulesen:

 *mv wrote:*   

> 
> 
> "man 5 ebuild" oder hier.
> 
> 

 

So ohne weiteres erschließt sich mir das nicht. Da ist einerseits das Problem, das überhaupt erst mal auf das Tool zu adaptieren und dann noch das weitere, dass ich bei Erscheinen eines neuen Releases (so alle halbe Jahr oder weniger) sowieso wieder vergessen habe, wie's geht.   :Laughing: 

Ist also für mich eher unrealistisch, das zu machen (käme eben obendrauf).

Falls natürlich ein (ebuild) "Profi" Lust hat, würde mich das freuen.

Viele Grüße und danke an mv,

ixo

----------

## Christian99

also, falls sich daran wie das programm installiert wird nicht großartig was ändert geht das update des ebuilds relativ einfach. man muss eigentlich nur das ebuild kopieren und den namen des ebuilds mit der aktuellen version versehen.

----------

## 3PO

Blödsinn geschriebnen, sorry   :Embarassed: 

----------

## ixo

Hallo,

ich Depp wollte mich gerade darüber beklagen, dass ich bei Änderungen von Threads, in denen ich gepostet habe, nicht per Mail benachrichtigt werde und habe dann festgestellt, dass das an den noch vorhandenen Default-Einstellungen liegt.   :Embarassed:  Wenn ich allerdings eingeloggt auf "Profil" klicke, wird diese Seite https://forums.gentoo.org/index.php aufgerufen!? Nicht-eingeloggt wird erst das Login-Abgefragt und dann lande ich auf der richtigen. Bug oder Feature?

 *Christian99 wrote:*   

> also, falls sich daran wie das programm installiert wird nicht großartig was ändert geht das update des ebuilds relativ einfach. man muss eigentlich nur das ebuild kopieren und den namen des ebuilds mit der aktuellen version versehen.

 

Was sich ändert, ist, dass alle Jubeljahre mal eine neue Datei dazukommt. (Wie z.B. die dt. Dokumentation demnächst (ist jetzt noch gesondert zu laden).) Das ich mir meine eigenen Notizen und Skripte machen muss, ist klar; das ist für Updates auf die Homepage (html) auch nicht anders (u.a. wg. des ganzen Verschlüsselungs-Krams). Übrigens war der Grund, warum ich von freshmeat auf savannah gewechselt bin, dass freshmeat ständig etwas geändert hat (tolle neue Features, die für 1000 Mann Projekte sicherlich unverzichtbar waren) und mir die Komplexität einfach zu groß (Zeitaufwand für nix) geworden ist.

Da die Generierung eines Ebuilds wohl eher zu meinem Privatvergnügen dient (und mir selbst natürlich nichts bringt) und ich keine Ahnung habe, ob der Kram überhaupt ins Portage kommt, stecke ich den Aufwand (ist ja alles meine Freizeit) lieber in die Softwareentwicklung bzw. (jetzt aktuell) Dokumentation des neuen Krams (siehe oben). Insbesondere an dem (zeitversetzten) kontinuierlichen Replizieren von Backups ("Backup vom Backup") sind einige recht interessiert. Da es bei mir seit etwa 3 Wochen läuft, verstehe ich auch warum.   :Razz: 

 *3PO wrote:*   

> Blödsinn geschriebnen, sorry  

 

Das zählt nicht als Ausrede - das kann jeder.   :Very Happy: 

Viele Grüße, ixo

----------

## schmidicom

 *franzf wrote:*   

> Auf bugs.gentoo.org einen report aufmachen, samt Beschreibung + ebuild. Evtl. kommts dann in ein Overlay oder es findet sich ein interessierter Entwickler, der es gleich in den Tree packt.

 

Das soll jetzt keine Reklamation sein aber warum ist genau das dann Beispielsweise hiermit noch nicht passiert?

https://bugs.gentoo.org/show_bug.cgi?id=353180

Da gibt es ein fertiges ebuild das offenbar laufend von jemanden aktualisiert wird und doch findet es sich in keinem overlay und schon gar nicht im offiziellen Portage.

Erst kürzlich brauchte ich das Programm und habe letzten Endes, weil es schnell gehen musste, einfach das tar mit der binary im rootverzeichnis entpackt.

----------

## bell

Naja, lt. http://gpo.zugaina.org/app-mobilephone/heimdall ist das Ebuild bereits in 4 Overlays drin.

Dass Live-Ebuils in den offiziellen Portage kommen ist eher die Ausnahme als die Regel. 

Da jedoch Releases existieren, stimmt da noch was nicht. Oder warum haben die Ebuilds die Version 9999?

Ich denke es hat einen Grund warum es so ist wie es ist und das Paket nicht im Portage.

----------

## Josef.95

 *schmidicom wrote:*   

> ... und doch findet es sich in keinem overlay ...

  Doch gibt es, siehe zb im http://gpo.zugaina.org/app-mobilephone/heimdall

 *Quote:*   

> Erst kürzlich brauchte ich das Programm und habe letzten Endes, weil es schnell gehen musste, einfach das tar mit der binary im rootverzeichnis entpackt.

  Urgs, wer sein Gentoo lieb hat macht sowas nicht  :Wink: 

/edit: Da war bell ein wenig flotter..

----------

## AmonAmarth

 *schmidicom wrote:*   

>  *franzf wrote:*   Auf bugs.gentoo.org einen report aufmachen, samt Beschreibung + ebuild. Evtl. kommts dann in ein Overlay oder es findet sich ein interessierter Entwickler, der es gleich in den Tree packt. 
> 
> Das soll jetzt keine Reklamation sein aber warum ist genau das dann Beispielsweise hiermit noch nicht passiert?
> 
> https://bugs.gentoo.org/show_bug.cgi?id=353180
> ...

 

und wo wär das problem gewesen das ebuild in dein local overlay zu kopieren als so ein hack? zeitaufwand von max. 30 sek. wenn man in der shell einigermaßen fit ist...

----------

## schmidicom

So viel zum Thema Zugaina:

```
slap ~ # cat /etc/make.conf | grep source

source /var/lib/layman/make.conf

slap ~ # layman -a zugaina

slap ~ # emerge --search heimdall

Searching...    

[ Results for search key : heimdall ]

[ Applications found : 0 ]
```

Und ich weiss das die Sache mit dem tar nicht gerade die feine Englische war aber wie gesagt es eilte sehr.

@AmonAmarth

30s?

Für jemanden der die Mangaes auswendig gelernt hat könnte das vielleicht reichen aber da ich das nicht gemacht habe und vermutlich die meisten anderen auch nicht dürfte das wohl kaum ausreichen Konsolenkenntnisse hin oder her.

----------

## bell

Die GPO-Seite liegt bei zugaina. Damit ist aber nicht gemeint dass Du deren Overlay installieren sollst. Dies würde ich eh nicht empfehlen.

Schaue auf die genannte GPO-Seite. Dort sind die Overlays genannt (gerade irgend wie nicht verfügbar, also etwas abwarten)

----------

## Schorchgrinder

 *Quote:*   

> gentoo64 boot # eix -s heimdall
> 
> * app-mobilephone/heimdall [1]
> 
>      Available versions:  (~)9999 {{qt4}}
> ...

 

ist es bei mir im System zu finden

----------

## schmidicom

Wenn ich die zugaina Webseite nun richtig verstanden habe gibt es dieses ebuild in 4 Overlays, also nehme ich meine Behauptung es würde in keinem Overlay liegen gerne zurück.

Doch welches ebuild aus welchem Overlay man nun am besten verwenden sollte lässt sich aus deren Webseite auch nicht wirklich ablesen. Aber mal so nach gut dünken geraten würde ich persönlich auf floppym tippen.

----------

## Josef.95

Naja, das beste ist du schaust dir die Ebuilds kurz an, und wählst dann das für dich am besten geeignete.

Eine Empfehlung welches inoffizielle Repository man wählen sollte kann man schlecht geben ;)

/edit:

Oder nutze das im Bug 353180 erwähnte Ebuild, packe es in dein lokales Overlay, und pflege es selbst - so machen die anderen der vier genanten Overlays es doch auch.

----------

