Coherent sheaf cohomology on projective space over a ring

In 2015 I was thinking on the problem of explicitly computing the cohomology groups $H^i(X,\mathcal{F})$ where $X = \mathbb{P}^n_A$ is a projective space over a noetherian computable ring $A$, that is not necessary a field and $\mathcal{F}$ is a coherent sheaf on $X$.

I found a solution that used only the known values of $H^i(\mathbb{P}^n_A, \mathcal{O}_{\mathbb{P}^n}(d))$ to justify the calculation.

The sheaf $\mathcal{F}$ is given as $\tilde{M}$ for a finitely presented module $M$ over the graded coordinate ring $S=A[x_0,\ldots,x_n]$ of $X$.

I used a very simple approach using the fact, that $\mathcal{F} = \tilde{M_{\geqslant d}}$ and $M_{\geqslant d} = M_d \oplus M_{d+1} \oplus \cdots$ can be resolved by a resolution

$$
(*) \cdots \to F_i \to F_{i-1} \to \cdots \to F_0 \to M \to 0
$$

where $F_i = \bigoplus_j S(-d_{ij})$ with $d_{ij} > 0$. This resolution is constructed inductively: Let

$$
0 \to Z_i \to F_i \to F_{i-1} \to \cdots \to F_0 \to M \to 0
$$

with $F_i = \bigoplus_j S(-d_{ij})$ and $d_{ij} > 0$ be already constructed. Then a short exact sequence
$$
0 \to Z_{i+1} \to F_{i+1} \to Z_i \to 0
$$
with $F_{i+1} = \bigoplus_j S(-d_{i+1,j})$ can be effectively computed. As we have a map $F_{i+1} \to Z_i \to F_i$ of degree $0$ and $\mathrm{Hom}_S(S(-e), S(-d))_0 = 0$ for $e < d$ we can conclude that automatically $d_{i+1,j} > 0$.

Now I read the long exact sequence of cohomology of coherent sheafs over $\mathbb{P}^n_A$ backwards to conclude that

$$
\mathcal{F} \mapsto H^n(X,\mathcal{F})
$$

is a right exact covariant functor with $H^{n-i}(X,\mathcal{F})$ ($i > 0$) as $i$-th satellite functor, all together forming an exact and effaceable $\delta$-functor.

Effaceable it is by starting with $\mathcal{F} = \tilde{M}$ and choosing a surjection of $S$-modules
$N = \bigoplus_j S(-d_j) \to M \to 0$ and considering $\tilde{N} \to \tilde{M} \to 0$ as the effacement.

So I can compute $H^{n-i}(X,\mathcal{F})$ by applying $H^n(X,-)$ on the (for $H^{n-i}(X,-)$) acyclic resolution (*) and taking cohomology.

I get

$$
H^{n-p}(X,\tilde{M}) = h_p(H^n(X,\tilde{F_i}))
$$

But $H^n(X,\tilde{F_i})$ is, by simple duality for projective space equal to $\mathrm{Hom}_A(\mathrm{Hom}_S(F_i,S(-n-1))_0,A)$, so I take with Macaulay 2 simply

transpose basis(0, Hom(F_.,S(-n-1)))

(the actual command is a bit more complicated) and get a complex of free $A$-modules whose homology computes the $H^{n-i}(X,\tilde{M})$.

I had to overcome some technical obstacles in implementing this in Macaulay 2, but can now for two running examples compute correct values for the cohomology nearly automatically (I just need to enter the initial d in truncate(d, M) by hand).

The code for the full procedure is:

--
-- compute the H^i(proj S, moM~) for S=A[x_1,...,x_n]
--

compCohX = (moM, d) ->
(
S := ring moM;
A := coefficientRing S;
n := numgens S;
moMt := truncate(d, moM);
-- the number 10 must be chosen accordingly with n
C := presX (moMt, 10);
C1 := Hom(C, S^{-n});
Dlis := {};
for i from min(C1) to max (C1) do
(
Dlis = prepend( transpose lift(matrix basis(0, C1.dd_(i)), A), Dlis);
);
D:= chainComplex(Dlis);
D, C, prune HH(D)
);

--
-- compute a free resolution of moM with S(-d_{i,1}) + .. + S(-d_{i,j_i}) terms
--

presX = (moM, k) ->
(
moN := moM;
philis := {};
moN = prune moN;
i := 0;
phi := presentation moN;
degs := degrees target phi;
print degs;
philis = append(philis, phi);
moN = ker phi;
while (((prune moN) != 0) and (i <= k)) do
(
phi = presentation moN;
psi := gens moN;
philis = append(philis, psi);
philis = append(philis, phi);
moN = ker phi;
i = i + 1;
);
D := chainComplex(philis);
return D;
);

Algebraische de Rham Kohomologie berechnen

$\require{AMScd}$

 

Es sei $X/k$ eine algebraische Varietät über $k = \CC$. Betrachte die Sequenz $(\Omega^\bullet_{X|k})$

\[
\Ohol_X = \Omega^0_{X|k} \xrightarrow{d^0} \Omega^1_{X|k} \xrightarrow{d^1} \Omega^2_{X|k}
\xrightarrow{d^2} \cdots
\]

wobei $\Omega^p_{X|k} = \bigwedge^p \Omega_{X|k}$ und $d^p:\Omega^p_{X|k} \to \Omega^{p+1}_{X|k}$ die äußere Ableitung ist. Diese ist $k$–linear aber nicht $\Ohol_X$–linear.

Man definiert die $i$–te de Rham Kohomologie von $X$ als

\[
\Hdr^i(X) = \HH^i(\Omega^\bullet_{X|k})
\]

wobei $\HH^i(L^\bullet)$ für die $i$–te Hyperkohomologie des Komplexes $L^\bullet$ steht.

Ist $X$ eine affine Varietät, so ist

\[
\HH^i(\Omega^\bullet_{X|k}) = h^i(\Omega^\bullet_{X|k}(X))
\]

wobei $h^i(L^\bullet)$ für die gewöhnliche $i$–te Kohomologie von $L^\bullet$ steht. Dies gilt, weil $H^j(X, \Omega^p_{X|k}) = 0$ für $j > 0$, denn $\Omega^p_{X|k}$ ist eine quasikohärente Garbe auf einem affinen Schema.

Theorem
Es sei $U = X – Y$ mit $X = \AFF^n_k$ und $Y = V(f_1,\ldots,f_r)$ einem abgeschlossenen Unterschema von $X$. Es ist dann konstruktiv möglich $\Hdr^i(U)$ zu berechnen.$\square$

Dies geschieht mittels $D$–Moduln und ist beschrieben in

Algorithmic Computation of de Rham Cohomology of Complements of Complex Affine Varieties,
U. Walther, J. Symb. Comput. 29, No. 4–5, 795–839

Aus

On the De Rham cohomology of algebraic varieties,
R. Hartshorne, Publ. Math., Inst. Hautes \’Etud. Sci. 45, 5–99

entnehmen wir in der Situation des Theorems und mit der Zusatzannahme, daß $Y$ glatt ist, die Sequenz (Theorem 3.3):

\[
\cdots H_q(Y) \to H_q(X) \to H_q(X – Y) \to H_{q-1}(Y) \to H_{q-1}(X) \to \cdots
\]

wo $H_q(W)$ für die dort definierte de Rham Homologie steht, und die Beziehungen (Proposition 3.4)

\begin{align*}
H_q(X) & = \Hdr^{2n – q}(X) \\
H_q(Y) & = \Hdr^{2r – q}(Y)
\end{align*}

mit $\dim X = n$ und $\dim Y = r$ gelten.

Zusammen ergibt dies

\[
\cdots \to \Hdr^{2 r – q}(Y) \to \Hdr^{2 n – q}(X) \to \Hdr^{2 n – q}(U) \to
\Hdr^{2r – q + 1}(Y) \to \Hdr^{2 n – q + 1}(X) \to \cdots
\]

oder auch mit $s = \codim(Y, X) = n-r$:

\[
\cdots \to \Hdr^{q – 2 s}(Y) \to \Hdr^q(X) \to \Hdr^q(U) \to \Hdr^{q + 1 – 2 s}(Y) \to
\Hdr^{q+1}(X) \to \cdots
\]

Nun ist aber $\Hdr^q(X) = \Hdr^q(\AFF^n_k) = 0$ für $q > 0$, also

\[
\Hdr^i(Y) = \Hdr^{i + 2 s – 1}(U)
\]

Da $\Hdr^q(U)$ nach obigem Theorem für alle $q$ berechnet werden kann, gilt dies auch für
$\Hdr^i(Y)$.

Es ist nun der Fall eines allgemeinen quasiprojektiven $X \subseteq \PSP^n_k$ zu diskutieren. Wir nehmen zunächst an, daß $X$ glatt ist.

Es sei

\[
X = \bar{X} \cap (\PSP^n_k – Z) = \bar{X} \cap U
\]

mit abgeschlossenen Schemata $\bar{X}, Z \subseteq \PSP^n_k$ und $Z = V(g_1,\ldots,g_s)$ wo $g_i$ homogene Polynome im Koordinatenring von $\PSP^n_k$ sind.

Nimmt man die offenen Mengen

\[
U_i = D_+(g_i) \subseteq \PSP^n_k
\]

so ist $V_i = U_i \cap X$ eine offene Überdeckung von $X$ mit affinen, in $X$ offenen, Mengen.

Es ist sogar $V_{i_0 \cdots i_q} = U_{i_0 \cdots i_q} \cap X \subseteq U_{i_0 \cdots i_q}$ ein abgeschlossenes glattes, affines Unterschema des affinen Schemas

\[
U_{i_0 \cdots i_q} = U_{i_0} \cap \cdots \cap U_{i_q} = D_+(g_{i_0} \cdot \cdots \cdot g_{i_q}).
\]

Mit einer Veronese–Einbettung $v_d: \PSP^n_k \to \PSP^N_k$ wobei $d = \prod_{\nu = 0}^q \deg g_{i_\nu}$ ist, ist

\[
v_d:v_d^{-1}(D_+(w)) = U_{i_0 \cdots i_q} \to D_+(w) = \AFF^N_k
\]

eine abgeschlossene Immersion. Dabei ist $w$ eine aus $\prod_{\nu=1}^q g_{i_\nu}$ abgeleitete Linearform im Koordinatenring von $\PSP^N_k$.

Da $i: V_{i_0 \cdots i_q} \to U_{i_0 \cdots i_q}$ eine abgeschlossene Immersion ist, ist auch

\[
v’_d = v_d \circ i:V_{i_0 \cdots i_q} \to U_{i_0 \cdots i_q} \xrightarrow{v_d} D_+(w) = \AFF^N_k
\]

eine abgeschlossene Immersion.

Es ist also $V_{i_0 \cdots i_q} \cong v’_d(V_{i_0 \cdots i_q})$ sogar ein glattes abgeschlossenes Unterschema von $\AFF^N_k$.

Nach obigem ist damit $\Hdr^p(V_{i_0\cdots i_q})$ explizit berechenbar.

 

Betrachte nun die Cech-de Rham Spektralsequenz für die Überdeckung $\cover{V} = (V_i)_{i\in I}$ von $X$:

\[
E^{pq}_0 = \Cc^q(\cover{V},\Omega_{X|k}^p) =
\prod_{i_0 < \cdots < i_q} \Gamma(V_{i_0,\ldots,i_q}, \Omega_{X|k}^p)
\]

Nach allgemeinen Sätzen konvergiert $E^{pq}_r$ gegen die $\Hdr^\bullet(X)$:

\[
E^{pq}_r \Rightarrow \Hdr^\bullet(X)
\]

Siehe dafür

 

On the de Rham cohomology of algebraic varieties, M. Stevenson,

http://www-personal.umich.edu/~stevmatt/algebraic_de_rham.pdf

Abschnitt 4.1, p. 7.

 

Bildet man $E^{pq}_1$ mit Bildung der Kohomologie entlang der $p$–Achse, so ergibt sich

\[
E^{pq}_1 = \prod_{i_0 < \cdots < i_q} \Hdr^p(V_{i_0, \ldots, i_q})
\]

Man beachte dafür, daß, weil $V_{i_0,\ldots,i_q}$ affin, die Gleichheit

\[
\Hdr^p(V_{i_0,\ldots,i_q}) = \HH^p(\Omega^\bullet_{V_{i_0,\ldots,i_q}|k}) =
h^p(\Gamma(V_{i_0,\ldots,i_q}, \Omega^\bullet_{V_{i_0,\ldots,i_q}|k}))
\]

gilt.

Wie oben bemerkt ist $\Hdr^p(V_{i_0,\ldots,i_q})$ explizit berechenbar und zumindest theoretisch ist damit auch der Grenzwert $\Hdr^\bullet(X)$ der Spektralsequenz einer expliziten Berechnung zugänglich.

Bemerkung
Der Vorteil mit den $E^{pq}_1 = \prod_{i_0 < \cdots < i_q} \Hdr^p(V_{i_0,\ldots,i_q})$ zu rechnen, anstelle mit der Seite $E^{pq}_0$ direkt anzufangen, liegt darin, daß die Elemente $E^{pq}_0$ unendliche, aber die $E^{pq}_1$ endliche $k$–Moduln sind.

Das folgende Theorem ist aus obiger Arbeit von Hartshorne (Theorem 4.4):

Theorem
Es sei $f:X‘ \to X$ eine eigentliche Abbildung von Schemata und $Y \subseteq X$ ein Unterschema von $X$, sowie $Y‘ = f^{-1}(Y)$ das Urbildschema von $Y$.

Es gelte

  1. Die Abbildung $f$ bilde $X‘ – Y’$ isomorph auf $X – Y$ ab.
  2. Weiter gebe es abgeschlossene Immersionen $X‘ \to Z’$ und $X \to Z$ in glatte Schemata
    $Z’$, $Z$, sowie einen eigentlichen Morphismus $g:Z‘ \to Z$ mit
    \[
    \begin{CD}
    X‘ @>>> Z‘ \\
    @VfVV @VgVV \\
    X @>>> Z
    \end{CD}
    \]
    der $Z‘ – g^{-1}(Y)$ isomorph auf $Z – Y$ abbildet.

Dann gibt es eine lange exakte Sequenz in der de Rham–Kohomologie

\begin{equation}
\cdots \to \Hdr^q(X) \to \Hdr^q(X‘) \oplus \Hdr^q(Y) \to \Hdr^q(Y‘) \to
\Hdr^{q+1}(X) \to \cdots
\end{equation}
$\square$

 

Wir können es verwenden, um für ein beliebiges quasiprojektives Schema $X \subseteq \PSP^n_k = Z$ die Kohomologien $\Hdr^q(X)$ zu berechnen.

Wir schreiben $X = X_0 \cap U$ mit einem abgeschlossenen $X_0 \subseteq \PSP^n_k$ und einem offenen $U \subseteq \PSP^n_k$.

Wir können für $X_0$ eine Desingularisierung $f:X_0′ \to X_0$ finden, sowie einen eigentlichen Morphismus $g:Z‘ \to Z$ mit

\[
\begin{CD}
X_0′ @>>> Z‘ \\
@VfVV @VgVV \\
X_0 @>>> Z
\end{CD}
\]

wo die waagrechten Abbildungen abgeschlossene Immersionen und $X_0’$ und $Z’$ glatte Schemata sind. (Vergleiche die Bemerkung nach dem obigen Theorem in dem Artikel von Hartshorne). Die Abbildung $g$ ist die wiederholte Aufblasung an regulären Unterschemata.

Der Morphismus $f:X_0′ \to X_0$ erfüllt nun die Bedingungen des vorigen Theorems mit $X = X_0$, $X‘ = X_0’$ sowie $Y = Y_0 \subseteq X_0$, geeignetes echtes Unterschema mit $\dim Y_0 < \dim X_0$, und $Y‘ = Y_0′ = f^{-1}(Y_0)$. Man kann $Y_0$ als das Unterschema der singulären Punkte von $X_0$ wählen, (\glqq strong desingularization\grqq).

Bildet man die Basiserweiterung von $g$ mit $U \to Z$ und die von $f$ mit $U \cap X_0 \to X_0$, so ergibt sich ein kompatibles System

\begin{equation*}
\begin{CD}
X‘ = f^{-1}(U \cap X_0) @>>> g^{-1}(U) \\
@Vf’VV @VgVV \\
X @>>> U
\end{CD}
\end{equation*}

so daß der Morphismus $f‘:f^{-1}(U \cap X_0) \to X$ die Bedingungen des vorigen Theorems mit $X = X$, $X‘ = f^{-1}(U \cap X_0)$, $Y = Y_0 \cap U$, $Y‘ = f’^{-1}(Y_0 \cap U)$ erfüllt.

Es ist aber $X’$ als offener Teil von $X_0’$ ein glattes, quasiprojektives Schema, so daß $\Hdr^q(X‘)$ berechenbar ist. Ebenso sind $\Hdr^q(Y)$ und $\Hdr^q(Y‘)$ kraft Induktion über die Dimension der Varietät, deren Kohomologie gesucht wird, berechenbar.

Die lange exakte Sequenz aus dem vorigen Theorem ergibt deshalb Bedingungen, aus denen sich auch $\Hdr^q(X)$ berechnen läßt:

\begin{multline}
\Hdr^{q}(X‘) \oplus \Hdr^q(Y) \to \Hdr^q(Y‘) \to \Hdr^{q+1}(X) \to \\
\to \Hdr^{q+1}(X‘) \oplus \Hdr^{q+1}(Y) \to \Hdr^{q+1}(Y‘)
\end{multline}

Damit können nun $\Hdr^q(X)$ für alle quasiprojektiven $X \subseteq \PSP^n_k$ berechnet werden.

Magenta-Cloud unter Linux

Warum eine Cloud?

Warum eine Cloud nutzen? Ich habe einen Dual-Boot Rechner mit Windows 7 und Ubuntu 14.04 LTS. Windows benutze ich zum Beispiel zum Scannen von Dokumenten, da es einfach keine passende Software für meinen EpsonPerfect 3490 Photo unter Ubuntu gibt (was geht, ist sehr rudimentär und kann nicht einmal mit der simplen Epson Standard Software für Windows mithalten). Und in Zukunft will ich eventuell sogar unter Windows Abby Fine Reader nutzen, um meinen Schriftverkehr ganz elektronisch zu machen und zu archivieren. Unter Linux gibt es da wohl auch nichts vergleichbares.

Da ich die gescannten Dokumente natürlich auf allen meinen Rechnern und auch auf mobilen Rechnern auf Reisen nutzen können will, bietet sich eine Cloud als ideale Lösung an. (Bisher habe ich mir die Dokumente immer in ein eigenes Imap Postfach zugemailt und sie dann bei Bedarf dort an meinen anderen Rechnern abgeholt. Umständlich, aber für ein  paar Dokumente ok. Bei der Digitalisierung meines ganzen Archivs natürlich nicht mehr sinnvoll – also Cloud).

Backup in der Cloud

Ein anderer Punkt, der letztlich der eigentliche Anlaß war, ist das Thema Backups. Ich habe vor ein paar Tagen angefangen, mit Gnuradio zu experimentieren und schon bald nicht ganz unkomplizierte Module im Gnuradio Companion konstruiert. Da ich es gewohnt bin, von aktuellen Sachen, an denen ich gerade arbeite, alle 30 Minuten ein Backup zu machen, hieß dies ständiges Hantieren mit dem USB-Stick, den ich diesmal nicht eingesteckt lassen konnte, weil er die Wärmeabfuhr aus meinem RTLSDR-USB-Stick behinderte. Also warum nicht einfach in der Cloud sichern?

Welche Cloud?

Nach einigem Recherchieren (siehe auch die Liste https://wiki.ubuntuusers.de/Cloud-Dienste/ ) blieben noch der Cloud-Dienst von Yandex Yandex Disk und die Telekom Magenta-Cloud in der engeren Auswahl. Letztlich fand ich es dann vorteilhaft, einen deutschen Anbieter zu nutzen, denn der Support läuft auf Deutsch, die Fragen der User sind auf deutsch oder englisch, und es ist vielleicht von Deutschland aus die Anbindung an das zugehörige Server-Rechenzentrum besser. Außerdem sind 10GB kostenlos, ohne jede Vertragsbindung, in meinen Augen kein schlechtes Angebot, Dropbox bietet nur 2GB, Google unterstützt Linux nicht so gut usw. Außerdem nutzt man die Magenta-Cloud gewissermaßen anonym, man muß nicht mal seine Wohnadresse in das Anmeldeformular eintragen.

Magenta-Cloud einrichten

Erster Schritt: Registrieren

Die Einrichtungsprozedur für die Magenta-Cloud ist einfach, man braucht zum Registrieren eine Mail-Adresse <my_email>. Diese wird beim Anmelden angegeben, man wählt dann frei ein Password <my_magenta_cloud_password>. Anschließend kann man sich an der Weboberfläche der Cloud mit username = <my_email> und password = <my_magenta_cloud_password> anmelden. Wenn man Lust hat, kann man gleich im Browser einzelne Dateien hochladen oder zurückkopieren.

Linux/Ubuntu – erste Schritte

Auch unter Linux/Ubuntu/Gnome kann man schon an dieser Stelle über die üblichen Mechanismen des Dateibrowsers und dem WebDav(s) Protokoll mit der Magenta-Cloud Kontakt aufnehmen und Dateien und Verzeichnisse mit Drag and Drop oder Copy/Paste hin und her kopieren. (Siehe auch den entsprechenden Eintrag zur Magenta-Cloud in https://wiki.ubuntuusers.de/Cloud-Dienste/ ) Caveat: Dies ging in Ubuntu 14.04, aber in meinem Scientific Linux (=CentOS = RHEL) 6.5 war es nicht möglich, Verzeichnisse zu bewegen, nur Dateien gingen.

Letztlich ist dies aber ein sehr unbefriedigender Weg, denn Datei Timestamps gehen dabei verloren, man kann nicht im Archivmodus kopieren usw. und natürlich auch nicht rsync nutzen usw.

Linux/Ubuntu – Die Lösung: davfs

Die Lösung wird ausführlich präsentiert in

(1) https://wiki.ubuntuusers.de/WebDAV/

und in etwas rudimentärer Form (nur Root kann mounten) und unklarer Darstellung in

(2) https://telekomhilft.telekom.de/t5/MagentaCLOUD/MagentaCloud-als-Speichererweiterung-in-Linux-einbinden/td-p/2799038

Die Lösung heißt davfs, ein Linux-Filesystem, das seine Operationen über WebDav abwickelt (und damit letztlich zu verschiedensten Cloud-Anbietern, die WebDav nutzen, kompatibel sein dürfte). Ich wußte zuerst nicht, ob das davfs das Problem mit den modifizierten Timestamps lösen würde, und zögerte etwas, die Anleitung abzuarbeiten, habe es dann aber doch getan und wurde mit dem Erfolg belohnt, daß alles wirklich wie gewünscht funktioniert – vor allem kann ich wirklich mit „cp -dpR“ und „rsync -avz“ meine Dateien und Verzeichnisse im Archivmodus sichern und zurückspielen.

(Leider nur ein Wunschtraum: In Wirklichkeit sind diese beiden wichtigen Funktionalitäten leider nicht möglich 🙁 )

 

Davfs einrichten – wie?

Was ist dazu nötig? Es steht zwar alles im Prinzip schon in (1), aber ich habe unten „to serve the public“ noch mal die Schritte im einzelnen in eigenen Worten dargestellt:

Ins Heimatverzeichnis wechseln und einen Ordner ~/magenta anlegen

cd ~
mkdir magenta

Dann das unbedingt nötige Paket davfs2 installieren

sudo apt-get install davfs2

In der Konfigurationsdatei /etc/davfs2/secrets die folgende Zeile am Ende eintragen (drei Elemente getrennt durch Spaces):

https://webdav.magentacloud.de <my_magenta_email> <my_webdav_password>

Man beachte, daß hier das „Webdav“-Passwort genommen werden muß, also nicht das globale obengenannte „Magenta Cloud“-Passwort, mit dem man sich zum Beispiel im Browser in die Cloud überhaupt einloggt. Dieses „Webdav“-Passwort kann man sich erst erstellen, wenn man im Browser den Zugriff auf die Cloud-Funktionen hat (siehe https://cloud.telekom-dienste.de/hilfe#einrichten ).

Warum zwei Passwörter: Technisch verbindet man sich mit dem „Magenta Cloud“-Passwort mit der allgemeinen „Kontrollschicht“ der Magenta-Cloud, zum Beispiel, wenn man die Oberfläche und die Kontrollumgebung im Browser startet. Für die Abwicklung der einzelnen Dateitransfers zwischen dem eigenen Computer und dem Rechner(verbund) auf dem die Magenta-Cloud läuft, ist aber ein Server zuständig, der nach dem (auch in anderen Clouddiensten verwendeten und in seinen Funktionen standardisierten) WebDav-Protokoll arbeitet. Die Magenta-Cloud ist nun so eingerichtet, daß der Kontakt zu diesem Server über ein eigenes Password gesichert ist, das man sich erst nach „Betreten“ der Magenta-Cloud Weboberfläche mit den dann zugänglichen Verwaltungsmöglichkeiten einrichten kann und soll. Warum dies so gelöst ist, weiß ich nicht, vielleicht, damit man das äußere Passwort behalten kann, wenn das innere einmal kompromittiert werden sollte.

Das Editieren eines Owner-Root-Files kann man mit sudo nano machen. (Wer es lieber mit gedit machen möchte, sollte sich https://wiki.ubuntuusers.de/sudo/ durchlesen):

sudo nano /etc/davfs2/secrets

Dann die Kontrolle

sudo cat /etc/davfs2/secrets

Jetzt die nötige Änderung in der fstab

sudo nano /etc/fstab

Die folgenden zwei Zeilen anhängen (Leerzeichen zum Trennen der sechs einzelnen Einträge in der zweiten Zeile können Spaces oder Tabs sein):

#
https://webdav.magentacloud.de /home/juergen/magenta davfs noauto,user,rw 0 0

Die Optionen sind alle wichtig: „noauto“ verhindert, daß beim System-Bootup gleich gemountet wird, denn dann ist ja das Netzwerk noch nicht vorhanden und schlimmstenfalls würde sich bei Fehlen dieser Option das System im Boot aufhängen.  „user“ sagt, daß auch der User mounten können muß. Fehlte diese Option wären unsere im Folgenden erklärten weiteren Aktionen sinnlos. Und „rw“ natürlich, da wir lesen und schreiben wollen.

Wieder die Kontrolle

cat /etc/fstab

Jetzt können wir schon mal probeweise als Root mit sudo mounten

sudo mount /home/juergen/magenta
df
ls -la magenta
sudo umount /home/juergen/magenta
ls magenta

Wir wollen aber auch als normaler User mounten können:

sudo dpkg-reconfigure davfs2
sudo usermod -aG davfs2 juergen

Mit dem oberen Kommando startet man ein Terminalprogramm mit pseudografischer Ausgabe, in dem man die entsprechende Auswahl („Yes“) auf die für solche Programme übliche Weise trifft. Der untere Befehl nimmt den User (bei mir „juergen“) in die Gruppe „davfs2“ auf. Das ist ein üblicher Mechanismus für Programme, die vom Benutzer gestartet, dann mit höheren Rechten/Root-Rechten laufen sollen (suid bit setzen https://de.wikipedia.org/wiki/Setuid ).

Die folgende Kleinigkeit war bei mir noch nötig für ein fehlerfreies Funktionieren:

Mit

gedit ./davfs2/secrets

wieder die folgende, oben schon genante, Zeile am Ende der globalen /etc/davfs2/secrets in die lokalen ~/.davfs2/secrets eintragen:

https://webdav.magentacloud.de <my_magenta_email> <my_webdav_password>

Und dann noch die Rechte passend setzen

chmod 600 ./davfs2/secrets

Jetzt können wir als normaler Benutzer mounten und unmounten:

mount magenta
df
ls -la magenta
umount magenta
df

Als letztes: Ein Backup-Skript

Das folgende kleine Skript in ~/bin sichert mir nun meine Gnuradio-Arbeiten (und anderes):

magsave <savedir>

aufgerufen im Heimatverzeichnis sichert das Directory ~/<savedir> in ~/magenta/archiv-antares/<savedir> als gesplittetes File <savedir_basename>.tgz

(Achtung: <savedir> darf nicht mit einem / enden)

#!/bin/bash

MYHOME=/home/juergen

ARCHIV=archiv-antares

SAVEDIR=$1

FINALSAVEDIR=${SAVEDIR##*/}

SAVEDIRTGZ=$FINALSAVEDIR.tgz

cd $MYHOME

SAVEPATHLOCAL=$MYHOME/temp/$SAVEDIR

SAVEPATHTGZ=$SAVEPATHLOCAL/$SAVEDIRTGZ

mkdir -p $SAVEPATHLOCAL

rm $SAVEPATHTGZ

tar -cvzf $SAVEPATHTGZ ./$SAVEDIR

cd $SAVEPATHLOCAL

rm $SAVEDIRTGZ.*

split -b 1M $SAVEDIRTGZ $SAVEDIRTGZ.

rm -r $MYHOME/magenta/$ARCHIV/$SAVEDIR

mkdir -p $MYHOME/magenta/$ARCHIV/$SAVEDIR

cp $SAVEDIRTGZ.* $MYHOME/magenta/$ARCHIV/$SAVEDIR

diff -r $SAVEPATHLOCAL $MYHOME/magenta/$ARCHIV/$SAVEDIR

Mit dem folgenden

magload <savedir>

werden die einzelnen Split-Blöcke aus ~/magenta/archiv-antares/<savedir> wieder zu <savedir_basename>.tgz zusammengesetzt und ein Vergleich mit dem derzeitigen ~/<savedir> gemacht.

#!/bin/bash

MYHOME=/home/juergen

ARCHIV=archiv-antares

SAVEDIR=$1

FINALSAVEDIR=${SAVEDIR##*/}

SAVEDIRTGZ=$FINALSAVEDIR.tgz

cd $MYHOME


SAVEPATHLOCAL=$MYHOME/temp/$SAVEDIR

rm -rf $SAVEPATHLOCAL

mkdir -p $SAVEPATHLOCAL


SAVEPATHTGZ=$SAVEPATHLOCAL/$SAVEDIRTGZ

cd $SAVEPATHLOCAL

cp $MYHOME/magenta/$ARCHIV/$SAVEDIR/*.tgz.* ./

cat *.tgz.* > $SAVEDIRTGZ

cd $MYHOME

tar -dzf $SAVEPATHLOCAL/$SAVEDIRTGZ ./

 

 

Ubuntu – Programme mit Skript starten

 

Leider vergisst Ubuntu/Gnome in den neueren Versionen, z.B. in meiner 14.04 LTS mit Gnome Flashback, nach Beenden alle geöffneten Fenster.

Daher der Wunsch nach einem Skript, das folgendes tut: Gegeben ein Workspace wn (bei mir eine Zahl 0 <= wn <= 9) soll ein Terminal in wn geöffnet werden, dort ein gegebener Pfad mit ‚cd‘ angesteuert werden und dann in diesem Directory ein Programm (bei mir ‚evince‘) mit bestimmtem Argument gestartet werden.

Meine Lösung: domyinit:

#!/bin/sh
startterm.sh 9 wisstexte/notizen/notes notes.pdf &
sleep 3
startterm.sh 8 wisstexte/alggeo/latexfiles book.pdf &
sleep 3
startterm.sh 7 wisstexte/intersectheo/latexfiles book.pdf &
sleep 3

und dann startterm.sh

 

#!/bin/sh

wmctrl -s $1

argbash="evince $3 & exec bash"

echo $argbash

gnome-terminal --geometry=90x25+1000+800 --working-directory="$HOME/$2" -x bash -c "$argbash" &

Acer Aspire V5 121

Seit 2013 besitze ich ein Netbook, Acer Aspire V5 121. Die Ausstattung: AMD C 70 1GHz DualCore, 2 GB RAM, 320 GB Festplatte, 11,6″ Bildschirm (1366 x 768). Ausgeliefert mit Windows 8 als Betriebssystem. Der Rechner war mit Windows nie der schnellste und im Lauf der Zeit wurde er eher gefühlt noch langsamer, bis er völlig unbenutzbar war. Habe daher jetzt Ubuntu 14.04LTS installiert (via USB Boot, Legacy Boot mode, und anschließender Installation auf Platte aus dem Netz). Den USB-Stick habe ich noch unter Windows mit dem Windows-Tool Pendrivelinux präpariert. Alles lief (überraschenderweise) bestens, WLAN, Trackpad, Webcam, schlichtweg alles wurde von Ubuntu 14.04LTS (Trusty Tahr) perfekt unterstützt. Die Response-Time des Systems beim Starten von Programmen ist jetzt wieder gut bis erträglich und das System macht wirklich das beste aus der nicht so starken Hardwarebasis. Außerdem ist es eben ein echtes Linux, hat also bei mir schon deswegen Pluspunkte.

Links:

Pendrivelinux

 

 

Scientific Linux 6.5

Letzte Woche mit dem Umstieg auf Scientific Linux 6.5 auf meinem Lenovo T500 Laptop begonnen.

War früher Ubuntu 10.04 Benutzer und mit Ubuntu 10.04 auch außerordentlich zufrieden. Gnome 2 ist eine sehr gut benutzbare, übersichtliche und mit zahlreichen nützlichen Features ausgestattete Desktopumgebung.

Meinen Desktop zuhause hatte ich vor einiger Zeit auf 12.04LTS upgedated. War sehr enttäuscht und verärgert über Unity und die dadurch verringerte Usability. Kurzfristig dort auf Kubuntu, dann auch auf Xubuntu gewechselt. Auch Xubuntu war nicht überzeugend: Das System war träge, Öffnen eines Terminalfensters dauerte ewig und es gab nicht mal die Möglichkeit im Dateiexplorer einen remote-Server per ssh oder sftp anzusprechen und grafisch Dateien zu kopieren oder zu löschen. (Da ich so meine Webseiten verwalte, ein extremer Minuspunkt).

Mittlerweile bin ich auf diesem Desktop wieder zu Ubuntu pur, aber mit Gnome-Fallback gewechselt. Es läuft so einigermaßen, aber es stellen sich auch Dinge ein, die man eigentlich nur von Windows kennt: Fenster öffnen sich, berichten über Versagen einer Systemkomponente und bitten einen Bericht an Canonical schicken zu dürfen. Nicht nur im Desktop ist man also Microsoft und Apple auf den Fersen…

Doch nun zu einer besseren Welt:

Nach langem Zögern habe ich mich entschieden, meinen Laptop doch auf Scientific Linux umstellen. Im Laufe der Zeit gewöhnt man sich ja (leider) an die Bequemlichkeit von Ubuntu überall in gut gepflegten Wikis und Foren schnell brauchbare Antworten und Hilfen für Alltagsaufgaben der Systemadministration zu finden. Bei SL findet man zwar auch das ein oder andere, außerdem kann man ja die Handbücher zu RHEL auf deren Website lesen, aber man landet eben immer öfter bei RTFM. Außerdem befürchtete ich schon größere Komplikationen beim reinen Installationsprozeß, und war allgemein von einer großen Unsicherheit über das System geplagt. Doch das legte sich, als ich auf der Wikipedia-Seite die vertraute Gnome-Oberfläche sah und auf verschiedenen Youtube-Videos sowohl die Installation, als auch gewisse elementare Operationen auf der Oberfläche sehen konnte.

Also beschloß ich Nägel mit Köpfen zu machen:

1) Neue Festplatte (1TB) für den Laptop bestellt.

2) Alle Daten in /home/juergen des Laptops auf meinem WD-MyBook gesichert. Außerdem /opt gesichert und zum schnellen Zugriff noch die wichtigsten Daten aus /home/juergen auf einen TOSHIBA USB Stick (16GB).

3) SL 6.5 (neueste zur Zeit verfügbare Version) als LiveDVD ISO-Image heruntergeladen, verifiziert und gebrannt.

4) Ein erster Live-DVD-Test: Das System überzeugte gleich von der Optik her, einer Installation stand nur noch der Einbau der neuen Festplatte im Wege

5) Videos über Festplattentausch bei Lenovo T500 bei Youtube gefunden und angesehen.

6) Festplatten getauscht

7) Partitionsschema überlegt

8) SL6.5 LiveDVD im Modus ‚Install‘ gebootet. Partitionsschema ließ sich unkompliziert festlegen, Netzwerk automatisch richtig erkannt, auch sonst bei den üblichen Kandidaten alles bestens: Grafikkarte, (Funk-)Maus, alles ok.

9) Einen User ‚juergen‘ angelegt und eingeloggt.

Nun kam die Detailarbeit

0) Den Nautilus so umgestellt, wie er auf Ubuntu war: Kein neues Fenster für neue Dateiumgebung, Orte-Leiste am linken Rand.

1) Mit dem Backup der Bookmarks den neuen Firefox gefüttert. Lief von Anfang an perfekt, auch mit Youtube-Zugriff und dynamischem HTML z.B. auf der Shredderchess-Seite.

2) Thunderbird ebenfalls mit seinem Backup-Profil gefüttert: Alle Daten korrekt übernommen.

3) Mit yum vertraut gemacht. Mit visudo mich als sudoer eingetragen (eigentlich nicht „the RHEL way“, aber ich wollte nicht darauf verzichten)

4) Den für mich unverzichtbaren Editor ’nedit‘ mit dem ich meine TeX-Sourcen für meine mathematischen Texte schreibe erst als Binary geladen (funktionierte nicht) und dann nochmal aus den Quellen gebaut. Einige Hürden, man mußte noch einige Libraries dazulinken, die damals noch nicht vorgesehen waren, aber dann: Success!

5) Maple 14 von DVD installiert. Leider offenbar noch kein DVD Automount – was solls, dann wird eben von Hand gemountet. Aktivierungsschlüssel aus der alten Mail herausgekramt: Installiert und aktiviert ohne Probleme! Auch ein abschließender Test mit implicitplot3d und ein wenig Rechnerei erfolgreich.

6) Für Macaulay2 ist wohl kein Binary für SL 6.5 erhältlich, also aus den Quellen bauen. Ist mir sowieso lieber, denn die wollte ich sowieso schon immer auch gegebenenfalls lesen können. Der Anleitung bei github gefolgt: ‚configure‘ ging mit kleiner Modifikation, ‚make‘ ging ganz, aber ‚make check‘ blieb an einer falsch gezogenen statischen Library libgmp hängen. Ich meldete das auf google Groups ‚Macaulay2‘ und bekam keine 15 Minuten später von Daniel Grayson persönlich eine Erklärung für den Fehler und einen checkout Stand für git übermittelt. Damit ließ sich der Build abschließen.

Dann noch setup() und setupEmacs() im M2 ausgeführt und das Thema Macaulay2 war erledigt.

6a) Vor dem Bauen mußte ich noch, wie auch in der Anleitung angegeben, das devtoolset-2 vom CERN herunterladen und aktivieren. Lief komplett ohne Probleme, ich benutzte gcc 4.8.2 und habe auch eine moderne Eclipse (Kepler) mit CDT für die C/C++ Entwicklung.

7) Als kleines Intermezzo die Shellvariable PS1 im .bashrc so gesetzt, daß der Stil des Prompts dem von Ubuntu gewohnten gleicht (voller Pfadname).

8) Dann texlive-Installation angegangen. Recherchiert um sicher zu gehen, daß man das Installationsskript wirklich nicht als root starten braucht und daß umask 0002 eine gute Wahl bei der Installation ist. Dann noch die benötigen perl-Tk-xxxx Packages für eine -gui Installation installiert. Mußte dafür noch yum-priorities installieren, dann das EPEL repository per Paketmanager (GUI) einbinden und dann noch von Hand Prioritäten vergeben. Habe mich dabei an den Vorschlag aus dem Internet gehalten. Aus dem EPEL Repository dann die Perl-Sachen geladen und die TeXLive Installation gestartet. Da ich nicht am Plattenplatz sparen muß, habe ich die komplette vorgeschlagene Konfiguration genommen (alles außer Windows-Spezifisches). Nach 45 Minuten war alles heruntergeladen und installiert, noch die Pfade in .bashrc anpassen und dann der erste Test mit meinem Buch als Testprojekt: Leider erstmal Fehler, das Paket tikz machte Probleme, aber im Internet fand sich schnell die Lösung: \usepackage{etex}. Danach: Alles (soweit man das beurteilen kann) korrekt übersetzt. Ergebnis: TeX läuft!

9) Noch ein bißchen geschaut was an Software erhältlich ist: Sogar wxmaxima und maxima sind aus EPEL verfügbar, MP3s kann ich abspielen, nur acroread ist noch zu installieren. Außerdem noch volle autocompletion (auch für make) aktiviert.

Das war von Montag bis Samstag nacht, am Sonntag dann den Computer und mich selbst ruhen lassen und Bilanz gezogen: Erstmal Zufriedenheit über ein stabiles, mit klassischem Gnome2 ausgestattetes, mindestens bis 2017 unterstütztes System, das auch von der Optik her sehr gelungen ist (obwohl das nicht so sehr ein Argument sein sollte, ist ein gefälliges Design doch einem ungefälligen vorzuziehen und sehr oft auch der äußere Anzeiger für ein ebenso solides Innenleben).

 

 

 

 

Meine ganzen Links, die ich bei der Installation nach und nach benutzt habe (muß noch ein Skript schreiben um sie in anklickbare Links zu verwandeln):

 

Scientific Linux

Installation

https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/index.html
http://optics.csufresno.edu/~kriehn/fedora/fedora_files/f11/installation/partitions.html
http://content.hccfl.edu/pollock/aunix1/partitioning.htm
http://linux.t-tietz.de/Scientific_Linux_6_Installation
http://astr.tohoku.ac.jp/~akhlaghi/newlinux.html

nedit
https://bugzilla.redhat.com/show_bug.cgi?id=199770

Admin Tips

Automount
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/s2-nfs-config-autofs.html

Repositories
http://www.dedoimedo.com/computers/scientific-linux-repos.html

Autocompletion

DNF/YUM Autocomplete (package names/commands) on Fedora/CentOS/RHEL


http://unix.stackexchange.com/questions/21135/package-bash-completion-missing-from-yum-in-centos-6
http://wiki.centos.org/TipsAndTricks/CustomizeBash
https://access.redhat.com/site/documentation/en-US/JBoss_Enterprise_Web_Platform/5/html/Installation_Guide/sect-

use_alternatives_to_set_default_JDK.html
http://www.lamolabs.org/blog/5562/5-minute-guide-to-using-the-alternatives-command-on-fedoracentosrhel/
https://www.mail-archive.com/scientific-linux-users@listserv.fnal.gov/msg11393.html
http://www.dedoimedo.com/computers/scientific-linux-pimp.html

Sudo on CentOS / Scientific Linux / RHEL

Install Adobe Reader on Fedora 30/29, CentOS/RHEL 7.6/6.10

Python

Python

yum
https://doc.itc.rwth-aachen.de/display/LIN/Konfiguration+von+Updates+unter+Scientific+Linux
http://yum.baseurl.org/
http://yum.baseurl.org/wiki/Faq

TeX
http://scientificlinuxforum.org/index.php?act=Search&CODE=show&searchid=d32a0c4942ba70041b5ecc230080180a&result_type=topics&hl=texlive&f=&u=
http://scientificlinuxforum.org/index.php?showtopic=1487&hl=texlive
http://www.tug.org/texlive/doc/texlive-en/texlive-en.html#x1-300003.4
scl / devtoolset
http://scientificlinuxforum.org/index.php?showtopic=2390
http://www.h-online.com/open/news/item/Red-Hat-betas-web-developer-tool-collection-1884019.html
http://linux.web.cern.ch/linux/devtoolset/
http://www.redhat.com/developerexchange/DevExchange_bring_order_into_your_packaging_madness_with_software_collections-mmaslano.pdf

M2
https://github.com/Macaulay2/M2/blob/master/M2/INSTALL

General

 

https://www.scientificlinux.org/
http://scientificlinuxforum.org/index.php?s=8b618d7427a7082f552dfa955a4f5705&act=SC&c=5
http://www.scientificlinux.org/documentation/faq/yum.apt.repo

Alles ganz genau

In einem Feature über Georges Perec folgendes erwähnt: Perec liebte es, die genauen Bezeichnungen aller seiner Besitztümer und Habseligkeiten zu kennen. Ein guter Gedanke.

Also jetzt ich:

  • Laptop, Lenovo T500
  • Bleistifte, Faber-Castell 9000, HB
  • Bleistiftspitzer, Staedtler, Artikelnummer 512 001 (sehr gut, halten lange. Die von Faber-Castell werden schnell stumpf)

weiteres folgt wenn ich Lust habe.