php5-fpm
설치 프로그램을 사용한 다음 apt
PHP 구성 파일을 일부 변경했습니다.
이제 원본 파일 버전(설치된 패키지 버전)과 현재 버전(내가 수정한 버전) 간의 차이점을 확인하겠습니다. 어떻게 하나요?
답변1
다음과 같이 시도해 보세요.
# exit on failure
set -e
package=php5-fpm
mkdir $package
cd $package
# you could also get the file from a package mirror if you have
# an older version of apt-get that doesn't support 'download'
# or if you would like more control over what package version
# you are downloading.
# (e.g. http://archive.ubuntu.com/ubuntu/pool/main/)
apt-get download $package
# deb package files are ar archives
ar vx ${package}*.deb
# containing some compressed tar archives
tar xzf data.tar.gz
# now you have the files
# you can get diffs for all of the files in etc if you would like
find etc -type f |
while read file ; do
diff $file /$file
done
다른 사람들이 제안한 것처럼 구성 파일을 개정 관리하에 두십시오. 이렇게 하면 정확히 무엇을 언제 변경했는지 확인할 수 있습니다.
답변2
등 디렉토리
/etc
디렉터리 변경 사항을 추적하려면 @Anthon이 제안한 대로 수행하고 git, subversion, mercurial 등을 사용하여 디렉터리 버전을 지정할 수 있습니다. 다음과 같은 것을 사용할 수도 있습니다.관리자를 기다려주세요. 튜토리얼이 있습니다여기또한여기.
etckeeper는 /etc를 git, mercurial, bazaar 또는 darcs 저장소에 저장할 수 있는 도구 모음입니다. 패키지 업그레이드 중에 /etc에 대한 변경 사항을 자동으로 커밋하기 위해 apt에 연결됩니다. git이 일반적으로 지원하지 않지만 /etc에 중요한 파일 메타데이터를 추적합니다
/etc/shadow
. 예를 들어 버전 제어의 기본 사항을 알고 있으면 매우 모듈화되고 구성 가능하며 사용하기 쉽습니다.
패키지 파일
내가 아는 한 apt
디스크에 있는 파일과 실제 파일을 확인할 수 있는 방법은 없습니다. 실제로 파일을 관리하는 도구 .deb
도 마찬가지입니다 .dpkg
apt
하지만 당신은 다음과 같은 것을 사용할 수 있습니다debsums
설치된 일부 파일을 비교하기 위해 .deb
파일 내용과 시스템 디스크 내용의 체크섬(md5sum)만 살펴봅니다.
이것 좀 봐서버 장애 문제체크섬에 대한 debsum
자세한 내용은 dpkg
다음을 참조하세요.아쿠벤투 문제.
debsum
예
% debsums openssh-server
/usr/lib/openssh/sftp-server OK
/usr/sbin/sshd OK
/usr/share/lintian/overrides/openssh-server OK
/usr/share/man/man5/sshd_config.5.gz OK
/usr/share/man/man8/sshd.8.gz OK
/usr/share/man/man8/sftp-server.8.gz OK
답변3
올바른 데비안 패키지에서 원본 파일을 자동으로 검색하고 현재 파일을 비교하기 위해 다음과 같은 간단한 스크립트를 작성했습니다.https://a3nm.net/git/mybin/tree/debdiffconf
사용 방법:debdiffconf FILE
#!/bin/bash
# Usage: debdiffconf.sh FILE
# Produce on stdout diff of FILE against the first installed Debian package
# found that provides it.
# Returns the exit code of diff if everything worked, 3 or 4 otherwise.
# https://stackoverflow.com/a/4785518
command -v apt >/dev/null 2>&1 || {
echo "apt not found, this is probably not a Debian system. Aborting." >&2;
exit 4; }
command -v apt-file >/dev/null 2>&1 || {
echo "Please install apt-file: sudo apt install apt-file. Aborting." >&2;
exit 4; }
command -v realpath >/dev/null 2>&1 || {
echo "Please install realpath: sudo apt install realpath. Aborting." >&2;
exit 4; }
FILE=$(realpath -m "$1")
while read PACKAGE
do
# verify from first installed package
if dpkg-query -W --showformat='${Status}\n' | grep installed > /dev/null
then
DIR=$(mktemp -d)
cd "$DIR"
echo "Trying $PACKAGE..." >&2
apt download "$PACKAGE" >&2
# downloaded archive is the only file present...
ARCHIVE=$(ls)
mkdir contents
# extract entire archive
dpkg-deb -x "$ARCHIVE" contents/ >&2
if [ -f "contents$FILE" ]
then
# package contained required file
diff "contents$FILE" "$FILE"
RET=$?
# cleanup
cd
rm -Rf "$DIR"
# exit entire script as this is the main shell
# with the return code from diff
exit $RET
else
# cleanup
cd
rm -Rf "$DIR"
fi
fi
done < <(apt-file -l search "$FILE")
# if we are here, it means we have found no suitable package
echo "Could not find original package for $FILE" >&2
exit 3
답변4
원본 파일과 설치된 파일의 차이점을 보려면 php.ini
다음을 사용하세요.
diff -W COLUMNS --suppress-common-lines -y /usr/share/php5/php.ini-development /etc/php5/apache2/php.ini -W $COLUMNS
주석줄이 신경쓰이지 않는다면 삽입하세요.
| egrep -v '^;.*<$|\s*>.;.*|;.*\|.;'