Frågor om APT

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
anth
Inlägg: 511
Blev medlem: 22 aug 2019, 15:35
OS: Ubuntu
Utgåva: 23.04 Lunar Lobster

Frågor om APT

Inlägg av anth »

Jag håller på att uppgradera en Debian 10-server till Debian 11.
(Debian använder också apt så frågorna gäller lika mycket för Ubuntu)
Jag googlade hur man gjorde och hittade ett dussin sidor som sa nästan samma sak.
Problemet är "nästan".
Jag har fetmarkerat frågorna så de ska bli lättare att hitta.

Här är min renskrivna guide:

Punkt 1: De självklara sakerna
Jag förutsätter att man inte är inloggad som root, utan att man använder sudo. Så $ istället för #.
Ta backup om något går fel.
Stäng alla program, utom terminalen man arbetar i.
Inaktivera eller ta bort alla externa PPA:er och repos som inte är Debian.
Stoppa och inaktivera tjänster som inte behöver vara igång (i mitt fall bara apache2)
Räkna med att maskinen kommer att vara nere i någon timme.

Punkt 2: Kontrollera vad som körs innan uppgradering
(inte nödvändigt, bara kul så man kan jämföra efteråt)
$ uname -a
$ lsb_release -a
$ cat /etc/debian_version
(den sista raden bör ge 10.12, eftersom Debian 10.12 är senaste Debian 10-versionen.

Punkt 3: Uppdatera systemet

$ apt-mark showhold
sudo apt-mark unhold package_name
Jag förstår vad kommandona gör, men är det något man måste göra innan en distrouppgradering?

$ sudo apt update
$ sudo apt upgrade
$ sudo apt-get dist-upgrade
jag har sett folk använda
$ sudo apt dist-upgrade
Kan man det? Jag hittar ingen dokumentation för dist-upgrade i man-page för apt.


$ sudo apt full-upgrade
$ sudo apt-get --purge autoremove
jag har sett folk använda
$ sudo apt --purge autoremove
Kan man det? Jag hittar ingen dokumentation för --purge i man-page för apt.


$ sudo apt-get clean
$ sudo systemctl reboot

Punkt 4: Uppdatera repos i etc/apt/sources.list
Detta har inget med Ubuntu att göra, men de nya förråden för Debian 11 är:
deb http://deb.debian.org/debian bullseye main contrib non-free
deb http://deb.debian.org/debian bullseye-updates main contrib non-free
deb http://deb.debian.org/debian-security/ bullseye-security main contrib non-free

Punkt 5 Uppgradera till Debian 11
Nästan samma sak som punkt 3.

$ sudo apt update
$ sudo apt upgrade --without-new-pkgs
$ sudo apt full-upgrade
$ sudo systemctl reboot
$ sudo apt --purge autoremove
Jag hittar ingen dokumentation för --without-new-pkgs i man-pages, varken för apt eller apt-get. Varifrån kommer det?

Punkt 6: Kontrollera vad som körs efter uppgradering
(samma som punkt 2)
Det ska vara Debian 11.3
Användarvisningsbild
Gunnar Hjalmarsson
Inlägg: 3030
Blev medlem: 08 aug 2010, 13:49
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Göteborg

Re: Frågor om APT

Inlägg av Gunnar Hjalmarsson »

anth skrev:Jag håller på att uppgradera en Debian 10-server till Debian 11.
(Debian använder också apt så frågorna gäller lika mycket för Ubuntu)
Ja och nej. För upgradering av en Ubuntu-server är det tillrådligt att använda kommandot do-release-upgrade.
Användarvisningsbild
anth
Inlägg: 511
Blev medlem: 22 aug 2019, 15:35
OS: Ubuntu
Utgåva: 23.04 Lunar Lobster

Re: Frågor om APT

Inlägg av anth »

Ett förtydligande:
Kan man använda dessa kommandon?

apt dist-upgrade
apt upgrade --withoput-new-pkgs
apt --purge autoremove

Och om man kan, var är det dokumenterat?
https://manpages.ubuntu.com/manpages/xe ... apt.8.html
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Frågor om APT

Inlägg av Osprey »

apt är ju egentligen ett relativt nytt samlingsscript för apt-get, apt-cache, apt-config med mera. Så dokumentationen borde finnas under respektive av dem. Problemet är bara att veta vilket av dem som apt egentligen använder (går att se med "vi /usr/local/bin/apt", om man kan Python)...

Själv kör jag fortfarande mest "apt-get" och ibland "apt-cache" direkt och när jag skriver inlägg om det här, så använder jag mest de "gamla" namnen. Detta just för att det funkar i alla versioner av operativsystemet. Däremot så finns samlingsscriptet "apt" bara i de nyare...

Det är väldigt trevligt att samla alla tidigare "lite spretiga" kommandon under "ett tak", men det är lite synd att "apt" inte skriver ut vad som egentligen används.

Typ:
# apt install foobar
apt: using apt-get
...
...åtminstone om man skulle köra det som "apt -v" (som inte finns vad jag vet)...

De gamla namnen och gamla scripten kommer säkert att finnas kvar under överskådlig tid, för att behålla bakåtkompatibibiliteten....

[EDIT]
Fortfarande funkar dock både:

Kod: Markera allt

apt-get moo
...och...

Kod: Markera allt

apt moo
... ;D
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
anth
Inlägg: 511
Blev medlem: 22 aug 2019, 15:35
OS: Ubuntu
Utgåva: 23.04 Lunar Lobster

Re: Frågor om APT

Inlägg av anth »

Osprey skrev:apt är ju egentligen ett relativt nytt samlingsscript för apt-get, apt-cache, apt-config med mera. Så dokumentationen borde finnas under respektive av dem. Problemet är bara att veta vilket av dem som apt egentligen använder (går att se med "vi /usr/local/bin/apt", om man kan Python)...
Det är väl bara i Mint som apt är ett skript?
I Debian och Ubuntu är det väl en riktig kompilerad binary?
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Frågor om APT

Inlägg av Osprey »

anth skrev:Det är väl bara i Mint som apt är ett skript?
I Debian och Ubuntu är det väl en riktig kompilerad binary?
Prova med:

Kod: Markera allt

file $(which apt)
I Mint får jag ut:
/usr/local/bin/apt: Python script, ASCII text executable
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
gusnan
Inlägg: 343
Blev medlem: 17 jan 2007, 08:20
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

Re: Frågor om APT

Inlägg av gusnan »

Osprey skrev:/usr/local/bin/apt: Python script, ASCII text executable
Men det där /local/ insinuerar ju att det är något som du har installerat själv, och inget som har levererats med ett debian-paket...

Just saying...
Hade tidigare nicket "Cowboy".
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Frågor om APT

Inlägg av Osprey »

gusnan skrev:Men det där /local/ insinuerar ju att det är något som du har installerat själv, och inget som har levererats med ett debian-paket...

Just saying...
Nope, jag vet helt vad "/local/" innebär, men det är inget jag själv har hämtat (saker kan hamna i "/local/" ändå.)

Själv kör jag fortfarande "apt-get", "apt-cache" och "dpkg". Apt har jag ännu inte brytt mig så mycket om.... :)

Och för den delen kan ju "apt" vara "Python script, ASCII text executable" även om det är installerat via ett debian-paket...

Vad får du ut själv om du kör:

Kod: Markera allt

file $(which apt)
...??

Nu blev jag nyfiken, kan det skilja något...?? :)
Mint är ju nästan Ubuntu och Ubuntu är ju nästan Debian... skulle inte tro att de har egna varianter av "apt". Men nu får vi reda ut det hela... ;D
Senast redigerad av 1 Osprey, redigerad totalt 6 gånger.
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
gusnan
Inlägg: 343
Blev medlem: 17 jan 2007, 08:20
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

Re: Frågor om APT

Inlägg av gusnan »

Osprey skrev: Vad får du ut själv om du kör:

Kod: Markera allt

file $(which apt)
...??
Well, jag kör ju inte Mint, men:

Kod: Markera allt

gusnan@debian-i7:~ > which apt
/usr/bin/apt
gusnan@debian-i7:~ > file $(which apt)
/usr/bin/apt: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=6f62d73c4584d353d2bcbc6fb42b5e7cd1c476ba, for GNU/Linux 3.2.0, stripped
(edit)Även en Ubuntu 22.04 har apt i /usr/bin/, så det där verkar ju vara någon Mint-grej - ja, jag kan konfirmera att det är samma här i en Mint-VM

Intressant!
(/edit)
Hade tidigare nicket "Cowboy".
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Frågor om APT

Inlägg av Osprey »

gusnan skrev:

Kod: Markera allt

gusnan@debian-i7:~ > file $(which apt)
/usr/bin/apt: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV) ... stripped
Ah, konstigt....

Det tyder ju på att de inte ens lyckats standardisera "apt", trots att det är den vägen det borde gå....

Tidigare var det "apt-get", "apt-cache", "dpkg", "rpm", "yum", "urpmi", "zypper", med flera. Men med olika varianter av "apt", så blir det ju ännu värre....

Hade varit så himla smidigt om alla varianter av Linux kunde enas om det här kommandot. Allt annat (i stort sett) stämmer ju, eller ja förutom nätverk då.... :)

[EDIT] Kan inte begripa varför Mint har "kokat ihop" ett eget kommando, det är ju till största delen samma kodbas det bygger på....
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
gusnan
Inlägg: 343
Blev medlem: 17 jan 2007, 08:20
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

Re: Frågor om APT

Inlägg av gusnan »

Osprey skrev: Det tyder ju på att de inte ens lyckats standardisera "apt", trots att det är den vägen det borde gå....

Tidigare var det "apt-get", "apt-cache", "dpkg", "rpm", "yum", "urpmi", "zypper", med flera. Men med olika varianter av "apt", så blir det ju ännu värre....

Hade varit så himla smidigt om alla varianter av Linux kunde enas om det här kommandot. Allt annat (i stort sett) stämmer ju, eller ja förutom nätverk då.... :)

[EDIT] Kan inte begripa varför Mint har "kokat ihop" ett eget kommando, det är ju till största delen samma kodbas det bygger på....
Ja, jag håller helt med, och när jag tittar på koden så verkar det mest vara för att göra så det _bara_ är apt man ska behöva använda - även för att hålla paket där man vanligen hade använt apt-mark hold, eller för att hantera ppa'er (apt-add-repository). Känns något onödigt enligt mig, men det finns säkert folk som uppskattar att bara behöva hålla reda på ett kommando...
Hade tidigare nicket "Cowboy".
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Frågor om APT

Inlägg av Osprey »

Här är ett litet script jag fixat till, för att förenkla det lite:

Kod: Markera allt

###################################################################################################################################################
if [[ -z $FORCEDIST ]]; then
	source /etc/os-release
	DIST=$(echo $ID | awk -F \- '{ print $1 }')
else
	DIST=$(echo $FORCEDIST | tr '[:upper:]' '[:lower:]')
fi
FUNC=$1
shift
ARGS=$@
#
BC=$(which bc)
#
if [[ $DIST == "linuxmint" || $DIST == "ubuntu" || $DIST == "debian" ]]; then
	if [[ -z $BC ]]; then
		echo "-Installing bc..."
		apt-get install bc
	fi
	APT=$(which apt)
	if [[ $(abrv "gr-aph" $FUNC) == "ok" ]]; then
		# Graphical user interface.
		echo ">>> synaptic"
		synaptic 2> /dev/null &
	elif [[ $(abrv "au-toremove" $FUNC) == "ok" ]]; then
		# Remove no longer needed packages
		echo ">>> apt-get autoremove"
		apt-get autoremove
	elif [[ $(abrv "cl-ean" $FUNC) == "ok" ]]; then
		echo ">>> apt-get clean"
		apt-get clean
	elif [[ $(abrv "di-st" $FUNC) == "ok" ]]; then
		echo $DIST
	elif [[ $(abrv "fi-x" $FUNC) == "ok" ]]; then
		echo ">>> dpkg --configure -a"
		dpkg --configure -a
		echo ">>> apt-get clean"
		apt-get clean
		echo ">>> apt-get check"
		apt-get check
		echo ">>> apt-get -f install"
		apt-get -f install
		echo ">>> apt-get autoremove"
		apt-get autoremove
		echo ">>> apt-get update"
		apt-get update
		TO_PURGE=$(dpkg -l|grep ^rc|awk '{ print $2 }')
		if [[ ! -z $TO_PURGE ]]; then
			echo ">>> aptitude purge $TO_PURGE"
			aptitude purge $TO_PURGE
		fi
		TO_DEINSTALL=$(dpkg --get-selections | grep deinstall | cut -f1)
		if [[ ! -z $TO_DEINSTALL ]]; then
			echo ">>> dpkg --purge $TO_DEINSTALL"
			dpkg --purge $TO_DEINSTALL
		fi
	elif [[ $(abrv "in-stall" $FUNC) == "ok" ]]; then
		# Install a new, previously not installed package.
		if [[ -z $ARGS ]]; then
			while [[ -z $ARGS ]]; do
				read -p "_Name of package? " ARGS
			done
		fi
		PKG=$(echo $ARGS | awk -F . '{ print $1 }')
		EXT=$(echo $ARGS | awk -F . '{ print $2 }')
		if [[ -z $EXT ]]; then
			echo ">>> apt-get install $ARGS"
			apt-get install $ARGS
		elif [[ $EXT == "deb" ]]; then
			echo ">>> dpkg -i $ARGS"
			dpkg -i $ARGS
		elif [[ $EXT == "rpm" ]]; then
			if [[ ! -z $(which rpm) ]]; then
				echo ">>> rpm -ivh $ARGS"
				rpm -ivh $ARGS
			elif [[ ! -z $(which alien) ]]; then
				echo ">>> alien --fo-deb $ARGS"
				alien --to-deb $ARGS
				echo ">>> dpkg -i $PKG.deb"
				dpkg -i $PKG".deb"
			else
				echo "-Cannot install $ARGS, rpm or alien does not exist - consider installing one of them"
			fi
		else
			echo "-Unknown format .$EXT"
		fi
	elif [[ $(abrv "addk-ey" $FUNC) == "ok" ]]; then
		if [[ -z $ARGS ]]; then
			while [[ -z $ARGS ]]; do
				read -p "_Filename? " ARGS
			done
		fi
		if [[ -r $ARGS ]]; then
			echo ">>> apt-key --recv-keys --keyserver keyserver.ubuntu.com $ARGS"
			apt-key adv --recv-keys --keyserver keyserver.ubuntu.com $ARGS
		else
		 	echo "-No readable file called $ARGS found"
		fi
	elif [[ $(abrv "li-st" $FUNC) == "ok" ]]; then
		if [[ ! -z $APT ]]; then
			if [[ -z $ARGS ]]; then
				#apt list --installed
				echo ">>> dpkg-query --list"
				dpkg-query --list
			else
				#apt list --installed | grep $ARGS
				#ARG=$(echo $ARGS | sed 's/*//g')
				#dpkg-query --list "$ARGS" | grep --color=always $ARG
				echo ">>> dpkg-query --list *$ARGS* | grep --color=always $ARGS"
				dpkg-query --list "*$ARGS*" | grep --color=always $ARGS
			fi
		else
			if [[ -z $ARGS ]]; then
				echo ">>> dpkg --get-selections"
				dpkg --get-selections
			else
				echo ">>> dpkg --get-selections | grep --color=always $ARGS"
				dpkg --get-selections | grep --color=always $ARGS
			fi
		fi
	elif [[ $(abrv "pu-rge" $FUNC) == "ok" ]]; then
		# Remove/uninstall a package and all its configuration files.
		if [[ -z $ARGS ]]; then
			while [[ -z $ARGS ]]; do
				read -p "_Name of package? " ARGS
			done
		fi
		echo ">>> apt-get purge $ARGS"
		apt-get purge $ARGS
	elif [[ $(abrv "rei-nstall" $FUNC) == "ok" ]]; then
		# Reinstall an already installed package. Most of its configuration
		# files will possibly be overwritten.
		if [[ -z $ARGS ]]; then
			while [[ -z $ARGS ]]; do
				read -p "_Name of package? " ARGS
			done
		fi
		echo ">>> apt-get install --reinstall $ARGS"
		apt-get install --reinstall $ARGS
	elif [[ $(abrv "rem-ove" $FUNC) == "ok" || $FUNC == "rm" ]]; then
		# Remove/uninstall a package.
		if [[ -z $ARGS ]]; then
			while [[ -z $ARGS ]]; do
				read -p "_Name of package? " ARGS
			done
		fi
		echo ">>> apt-get remove $ARGS"
		apt-get remove $ARGS
	elif [[ $(abrv "rml-ock" $FUNC) == "ok" ]]; then
		PID=$(lsof /var/lib/dpkg/lock 2> /dev/null | tail -1 | awk '{ print $2 }')
		if [[ ! -z $PID ]]; then
			echo
			echo "-The following process is locking dpkg"
			echo
			ps -o pid,user,command $PID | tail -1
			echo
			read -p "_Do you want to kill it? [y/N]: " IN
			if [[ $IN == "y" || $IN == "Y" ]]; then
				echo "Killing $PID"
				kill $PID
			else
				exit
			fi
		elif [[ -e /var/lib/dpkg/lock ]]; then
			echo ">>> rm /var/lib/dpkg/lock"
			rm /var/lib/dpkg/lock
		fi
		PID=$(lsof /var/lib/apt/lists/lock 2> /dev/null | tail -1 | awk '{ print $2 }')
		if [[ ! -z $PID ]]; then
			echo
			echo "-The following process is locking apt"
			echo
			ps -o pid,user,command $PID | tail -1
			echo
			read -p "_Do you want to kill it? [y/N]: " IN
			if [[ $IN == "y" || $IN == "Y" ]]; then
				echo "Killing $PID"
				kill $PID
			else
				exit
			fi
		elif [[ -e /var/lib/apt/lists/lock ]]; then
			echo ">>> /var/lib/apt/lists/lock"
			rm /var/lib/apt/lists/lock
		fi
		echo
	elif [[ $(abrv "se-arch" $FUNC) == "ok" ]]; then
		if [[ -z $ARGS ]]; then
			while [[ -z $ARGS ]]; do
				read -p "_Search for what? " ARGS
			done
		fi
		echo ">>> apt-cache search $ARGS | grep --color=always $ARGS"
		apt-cache search "$ARGS" | grep --color=always "$ARGS"
	elif [[ $(abrv "upd-ate" $FUNC) == "ok" ]]; then
		# Update information about new packages.
		echo ">>> apt-get update"
		apt-get update
	elif [[ $(abrv "upg-rade" $FUNC) == "ok" ]]; then
		# Upgrade all packages.
		echo ">>> apt-get upgrade && apt-get dist-upgrade"
		apt-get upgrade && apt-get dist-upgrade
	else
		echo '-Can not understand what function "'$FUNC'" means...'
	fi
elif [[ $DIST == "opensuse" || $DIST == "sles" || $DIST == "sled" || $DIST == "sle" ]]; then
	if [[ -z $BC ]]; then
		echo "-Installing bc..."
		zypper install bc
	fi
	if [[ $(abrv "gr-aph" $FUNC) == "ok" ]]; then
		# Graphical user interface.
		echo ">>> yast"
		yast >2 /dev/null &
	elif [[ $(abrv "au-toremove" $FUNC) == "ok" ]]; then
		# Remove no longer needed packages
		# zypper packages --orphaned	<-- Removes manually installed
		echo ">>> zypper packages --unneeded"
		zypper packages --unneeded
	elif [[ $(abrv "cl-ean" $FUNC) == "ok" ]]; then
		echo ":"
		:
	elif [[ $(abrv "di-st" $FUNC) == "ok" ]]; then
		echo $DIST
	elif [[ $(abrv "fi-x" $FUNC) == "ok" ]]; then
		echo ">>> zypper verify"
		zypper verify
		echo ">>> zypper install-new-recommends"
		zypper install-new-recommends
	elif [[ $(abrv "in-stall" $FUNC) == "ok"  ]]; then
		# Install a new, previously not installed package.
		if [[ -z $ARGS ]]; then
			while [[ -z $ARGS ]]; do
				read -p "_Name of package? " ARGS
			done
		fi
		PKG=$(echo $ARGS | awk -F . '{ print $1 }')
		EXT=$(echo $ARGS | awk -F . '{ print $2 }')
		if [[ -z $EXT ]]; then
			echo ">>> zypper install $ARGS"
			zypper install $ARGS
		fi
	elif [[ $(abrv "addk-ey" $FUNC) == "ok" ]]; then
		echo
		echo "-This function not available for $DIST"
		echo
	elif [[ $(abrv "li-st" $FUNC) == "ok" ]]; then
		if [[ -z $ARGS ]]; then
			# zypper --xmlout search --installed-only -v
			echo ">>> zypper packages --installed-only"
			zypper packages --installed-only
		else
			echo ">>> zypper packages --installed-only | grep --color=always $ARGS"
			zypper packages --installed-only | grep --color=always $ARGS
		fi
	elif [[ $(abrv "pu-rge" $FUNC) == "ok" ]]; then
		# Remove/uninstall a package and all its configuration files.
		if [[ -z $ARGS ]]; then
			while [[ -z $ARGS ]]; do
				read -p "_Name of package? " ARGS
			done
		fi
		echo ">>> zypper rm --clean-deps $ARGS"
		zypper rm --clean-deps $ARGS
	elif [[ $(abrv "rei-nstall" $FUNC) == "ok" ]]; then
		# Reinstall an already installed package. Most of its configuration
		# files will possibly be overwritten.
		# !! zypper does not really have a "reinstall", so instead the package
		# !! is force installed with "-f" (which in this case means "overwrite").
		if [[ -z $ARGS ]]; then
			while [[ -z $ARGS ]]; do
				read -p "_Name of package? " ARGS
			done
		fi
		echo ">>> zypper install -f $ARGS"
		zypper install -f $ARGS
	elif [[ $(abrv "rem-ove" $FUNC) == "ok" || $FUNC == "rm" ]]; then
		# Remove/uninstall a package.
		if [[ -z $ARGS ]]; then
			while [[ -z $ARGS ]]; do
				read -p "_Name of package? " ARGS
			done
		fi
		echo ">>> zypper rm $ARGS"
		zypper rm $ARGS
	elif [[ $(abrv "rml-ock" $FUNC) == "ok" ]]; then
		echo ">>> zypper removelock"
		zypper removelock
	elif [[ $(abrv "se-arch" $FUNC) == "ok" ]]; then
		if [[ -z $ARGS ]]; then
			while [[ -z $ARGS ]]; do
				read -p "_Search for what? " ARGS
			done
		fi
		echo "-Nothing to do..."
	elif [[ $(abrv "upd-ate" $FUNC) == "ok" ]]; then
		# Update information about new packages.
		echo ">>> zypper refresh"
		zypper refresh
	elif [[ $(abrv "upg-rade" $FUNC) == "ok" ]]; then
		# Upgrade all packages.
		echo ">>> zypper update"
		zypper update
	else
		echo '-Can not understand what function "'$FUNC'" means...'
	fi
elif [[ $DIST == "fedora" || $DIST == "centos" || $DIST == "redhat" || $DIST == "rhel" ]]; then
	if [[ -z $BC ]]; then
		echo "-Installing bc..."
		yum install bc
	fi
	if [[ $(abrv "gr-aph" $FUNC) == "ok" ]]; then
		# Graphical user interface.
		echo ">>> yum"
		yum >2 /dev/null &
	elif [[ $(abrv "au-toremove" $FUNC) == "ok" ]]; then
		# Remove no longer needed packages
		echo ">>> yum autoremove"
		yum autoremove
	elif [[ $(abrv "cl-ean" $FUNC) == "ok" ]]; then
		echo ">>> yum clean all"
		yum clean all
	elif [[ $(abrv "di-st" $FUNC) == "ok" ]]; then
		echo $DIST
	elif [[ $(abrv "fi-x" $FUNC) == "ok" ]]; then
		echo ">>> yum clean all"
		yum clean all
		echo ">>> yum check"
		yum check
		if [[ $ARGS == "all" ]]; then
			echo ">>> rm /var/lib/__db*"
			rm /var/lib/__db*
			echo ">>> rpm --rebuilddb"
			rpm --rebuilddb
			echo ">>> rpmdb_verify Packages"
			rpmdb_verify Packages
		fi
	elif [[ $(abrv "in-stall" $FUNC) == "ok" ]]; then
		# Install a new, previously not installed package.
		if [[ -z $ARGS ]]; then
			while [[ -z $ARGS ]]; do
				read -p "_Name of package? " ARGS
			done
		fi
		PKG=$(echo $ARGS | awk -F . '{ print $1 }')
		EXT=$(echo $ARGS | awk -F . '{ print $2 }')
		if [[ -z $EXT ]]; then
			#echo ">>> yum install $ARGS"
			#yum install $ARGS
			echo ">>> dnf install $ARGS"
			dnf install $ARGS
		else
			echo ">>> rpm -i $ARGS"
			rpm -i $ARGS
		fi
	elif [[ $(abrv "addk-ey" $FUNC) == "ok" ]]; then
		echo
		echo "-This function not available for $DIST"
		echo
	elif [[ $(abrv "li-st" $FUNC) == "ok" ]]; then
		if [[ -z $ARGS ]]; then
			echo ">>> yum show-installed"
			yum show-installed
		else
			echo ">>> yum show-installed | grep --color=always $ARGS"
			yum show-installed | grep --color=always $ARGS
		fi
	elif [[ $(abrv "pu-rge" $FUNC) == "ok" ]]; then
		# Remove/uninstall a package and all its configuration files, plus unneeded packages.
		if [[ -z $ARGS ]]; then
			while [[ -z $ARGS ]]; do
				read -p "_Name of package? " ARGS
			done
		fi
		echo ">>> yum autoremove $ARGS"
		yum autoremove $ARGS
	elif [[ $(abrv "rei-nstall" $FUNC) == "ok" ]]; then
		# Reinstall an already installed package. Most of its configuration
		# files will possibly be overwritten.
		if [[ -z $ARGS ]]; then
			while [[ -z $ARGS ]]; do
				read -p "_Name of package? " ARGS
			done
		fi
		echo ">>> yum reinstall $ARGS"
		yum reinstall $ARGS
	elif [[ $(abrv "rem-ove" $FUNC) == "ok" || $FUNC == "rm" ]]; then
		# Remove/uninstall a package.
		if [[ -z $ARGS ]]; then
			while [[ -z $ARGS ]]; do
				read -p "_Name of package? " ARGS
			done
		fi
		echo ">>> yum remove $ARGS"
		yum remove $ARGS
	elif [[ $(abrv "rml-ock" $FUNC) == "ok" ]]; then
		PID=$(cat /var/run/yum.pid)
		LINES=$(ps -o pid,user,command $PID | wc -l)
		if [[ $LINES -gt 1 ]]; then
			echo
			echo "-The following process is locking yum"
			echo
			ps -o pid,user,command $PID | tail -1
			echo
			read -p "-Do you want to kill it? [y/N]: " IN
			if [[ $IN == "y" || $IN == "Y" ]]; then
				echo "Killing"
				kill $PID
			else
				exit
			fi
			echo
		fi
		echo ">>> rm /var/run/yum.pid"
		rm /var/run/yum.pid
	elif [[ $(abrv "se-arch" $FUNC) == "ok" ]]; then
		if [[ -z $ARGS ]]; then
			while [[ -z $ARGS ]]; do
				read -p "_Search for what? " ARGS
			done
		fi
		echo ">>> yum search $ARGS"
		yum search "$ARGS"
	elif [[ $(abrv "upd-ate" $FUNC) == "ok" ]]; then
		# Update information about new packages.
		echo ">>> yum check-update $ARGS"
		yum check-update $ARGS
	elif [[ $(abrv "upg-rade" $FUNC) == "ok" ]]; then
		# Upgrade all packages.
		echo ">>> yum update $ARGS"
		yum update $ARGS
		echo ">>> yum upgrade $ARGS"
		yum upgrade $ARGS
	else
		echo '-Can not understand what function "'$FUNC'" means...'
	fi
else
	echo "-Unsupported dist - $DIST"
	echo "-Consider setting FORCEDIST if you want to bypass"
fi
#echo "DIST: $DIST"
echo
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Frågor om APT

Inlägg av Osprey »

Inte provkört på ett tag, så det kan finnas brister.... ;)
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Frågor om APT

Inlägg av Osprey »

gusnan skrev:Ja, jag håller helt med, och när jag tittar på koden så verkar det mest vara för att göra så det _bara_ är apt man ska behöva använda - även för att hålla paket där man vanligen hade använt apt-mark hold, eller för att hantera ppa'er (apt-add-repository). Känns något onödigt enligt mig, men det finns säkert folk som uppskattar att bara behöva hålla reda på ett kommando...
Jag tycker att mycket viktigare än att samla alla apt-kommandon (vilket man uppenbarligen inte har lyckats med) vore att få ett gemensamt paket för detta inom Linux. Framförallt Debian (inklusive Ubuntu och Mint), RedHat (inklisive CentOS och Fedora) och SuSE (inklusive SLES, SLED och OpenSuSE).

Visst de andra funkar bra också, men apt är bäst... (dock med synpunkten med att jag begriper inte varför Mint har kokat ihop något eget...)
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
anth
Inlägg: 511
Blev medlem: 22 aug 2019, 15:35
OS: Ubuntu
Utgåva: 23.04 Lunar Lobster

Re: Frågor om APT

Inlägg av anth »

Enligt en tråd från 2018 hittade jag följande:

Mint var först med att använda APT som var deras egen Python-wrapper.

Debian/Ubuntu gjorde sedan sin egen APT-version.

Mint har bägge versionerna installerade:

Mintversionen som är default enligt PATH:
/usr/local/bin/apt

Debianversionen:
/usr/bin/apt

Jämför
apt -h
med
/usr/bin/apt -h
så ser man att de är olika.

Någon som kör Mint får bekräfta om detta fortfarande stämmer då tråden jag hämtade infon från är 4 år gammal.
Källa:
https://forums.linuxmint.com/viewtopic.php?t=269626
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Frågor om APT

Inlägg av Osprey »

Ska titta lite på Ubuntu/Debians "apt" också. Möjligt är ju att det är ren C-kod som i princip kör "system(apt-get)", "system(apt-cache)" och så, med vissa tillägg...

Nu blev jag nyfiken.... ;)
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Frågor om APT

Inlägg av Osprey »

anth skrev:Enligt en tråd från 2018 hittade jag följande:

Mint var först med att använda APT som var deras egen Python-wrapper.

Debian/Ubuntu gjorde sedan sin egen APT-version.

Mint har bägge versionerna installerade:

Mintversionen som är default enligt PATH:
/usr/local/bin/apt

Debianversionen:
/usr/bin/apt

Jämför
apt -h
med
/usr/bin/apt -h
så ser man att de är olika.

Någon som kör Mint får bekräfta om detta fortfarande stämmer då tråden jag hämtade infon från är 4 år gammal.
Källa:
https://forums.linuxmint.com/viewtopic.php?t=269626
Ja, jag upptäckte nu att jag har både Mints version i "/usr/local/bin" och Debian/Ubuntus version i "/usr/bin"...

Däremot ligger ju "/usr/local/bin" före "/usr/bin" i $PATH, så det är ju Mints Pythonscript den kör "by default", här i Mint....

Utskrifterna är som följer:
root# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/games:/home/base/bin

root# file /usr/local/bin/apt
/usr/local/bin/apt: Python script, ASCII text executable

root# file /usr/bin/apt
/usr/bin/apt: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=85b5570d26c2a11df4697551eb77d75848347ee3, for GNU/Linux 3.2.0, stripped
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Frågor om APT

Inlägg av Osprey »

Har laddat hem källkoden för "apt". Mints version är som sagt var, skrivet i Python. Medan Debian/Ubuntu -versionen verkar vara skriven i C++ (.cc).

Tusan också att det aldrig går att standardisera något inom Linux inom bitar för drift/sysadm och infrastruktur..... :)

[EDIT] däremot får jag rätt svar med "whereis apt-get" och "whereis apt-cache"....
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Skriv svar

Återgå till "Terminalforum"