yaourt
残念ながら、デフォルト設定でビルドされたパッケージがインストール後に削除されることを無視し、AURパッケージを正常にビルドしてインストールしました。ビルドには約24時間かかり、後で使用できるようにパッケージを準備するのが便利な場合がありますmakepkg
。または、より一般的には、これが必ずしも必要ではないため、yaourt
次のようになります。
makepkg
再コンパイルせずにインストールとソースから生成されたパッケージを検索する方法は?
答え1
システムのパックマンデータベースとファイルを使用してパッケージを再作成するpacman
パッケージの一部であるスクリプトがあります。bacman
ただし、インストール後のファイルの変更によってパッケージが異なる可能性が高いため、この方法は最後の手段としてのみ使用する必要があります。
答え2
疑わしいですが、ここに役立ついくつかのヒントがあります。
依存関係とファイルはに保存されるため、/var/lib/pacman/local/XX-Version/{desc, files}
圧縮するのは難しくありません。
xz パッケージの階層は次のようになります。
.PKGINFOと.INSTALL(インストール後スクリプト)は、PKGBUILD(absまたはyaourtで検索可能)で変換できます。
答え3
ヒントありがとうございますウォーカーの答え私は次のスクリプトを書いたfakepkg
。
#!/bin/bash
set -e
OLDDIR=$PWD
NEWDIR=$(mktemp -dt fakepack.XXX)
cd $NEWDIR
yaourt -G $1
cd $1
#TODO this can probably be retrieved from the pacman desc file
while true; do
read -p "Edit PKGBUILD? [yn]" -n1 yn
case $yn in
[Yy]* ) $EDITOR PKGBUILD; break;;
[Nn]* ) echo; break;;
* ) echo ;;
esac
done
. PKGBUILD
srcdir=$NEWDIR/$1/src
# In case you are wondering: this tries to compensate for packages not using
# a simple src/packagename-pkgver/ structure. It will probably still break...
PKSUB=$(eval "echo $(grep -o '\${\?srcdir.*pkgver}\?' PKGBUILD | head -n1 )")
SRC=${PKSUB##$NEWDIR/$1/}
echo "Putting the $1 source to $SRC"
PKG=$pkgname-$pkgver
# SRC="src/$PKG/"
FILES="/var/lib/pacman/local/$PKG-$pkgrel/files"
if [ ! -f $FILES ]; then
echo "$FILES not found, is $1 actually installed?"
exit 1
fi
#TODO use existing sources or skip this entirely
# but it's the easiest way to later use makepkg -R
echo "Reloading source"
makepkg -o
echo "Collecting $1 files"
mkdir -p $SRC/files/
while IFS= read -r line; do
if [ -f "/$line" ]; then
mkdir -p $SRC/files/$(dirname $line)
rsync -a /$line $SRC/files/$line
fi
done < $FILES
echo "Creating fake Makefile"
echo 'install:' > $SRC/Makefile
echo ' mv files/* $(DESTDIR)' >> $SRC/Makefile
rm -f $SRC/GNUmakefile
echo "Creating package"
makepkg -R
mv *.xz $OLDDIR
cd $OLDDIR
rm -rf $NEWDIR
を実行し、fakepkg packagename
必要PKGBUILD
に応じて調整し、package---.pak.tar.xz
現在のディレクトリに表示されます。
完全なソースコードをダウンロードするよりも、インストールPKGBUILD
に応じて修正を自動化するなど、改善の余地はかなり多いです。desc
しかし、今はうまくいきます。